summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMadhusudan.C.S2011-01-30 18:59:23 +0530
committerMadhusudan.C.S2011-01-30 18:59:23 +0530
commit8075f06ec8ee6e4900cfdfcbab7c656b4a68c9d2 (patch)
tree76c737197e9cca6411c184df9a8ed4fef38fe609
parent1c70216d5c9243837b1f6f4e79c627a1e5ed138a (diff)
downloadpytask-8075f06ec8ee6e4900cfdfcbab7c656b4a68c9d2.tar.gz
pytask-8075f06ec8ee6e4900cfdfcbab7c656b4a68c9d2.tar.bz2
pytask-8075f06ec8ee6e4900cfdfcbab7c656b4a68c9d2.zip
Add a view, form and related URL for chapter creation under textbook.
-rw-r--r--pytask/taskapp/forms.py6
-rw-r--r--pytask/taskapp/urls.py2
-rwxr-xr-xpytask/taskapp/views.py61
-rw-r--r--pytask/templates/task/chapter_edit.html24
4 files changed, 93 insertions, 0 deletions
diff --git a/pytask/taskapp/forms.py b/pytask/taskapp/forms.py
index 7d5bfcc..7bfd31f 100644
--- a/pytask/taskapp/forms.py
+++ b/pytask/taskapp/forms.py
@@ -92,6 +92,12 @@ class CreateTextbookForm(forms.ModelForm):
model = Task
fields = ['name', 'chapters', 'tags_field']
+class CreateChapterForm(forms.ModelForm):
+
+ class Meta:
+ model = Task
+ fields = ['title', 'desc' , 'pynts', 'tags_field']
+
class EditTextbookForm(forms.ModelForm):
class Meta:
diff --git a/pytask/taskapp/urls.py b/pytask/taskapp/urls.py
index 1a0829c..5d63355 100644
--- a/pytask/taskapp/urls.py
+++ b/pytask/taskapp/urls.py
@@ -37,4 +37,6 @@ urlpatterns += patterns('pytask.taskapp.views',
name='approved_textbook'),
url(r'^textbook/browse/$', 'browse_textbooks',
name='browse_textbooks'),
+ url(r'^textbook/chapter/create/(?P<book_id>\d+)$', 'create_chapter',
+ name='create_chapter'),
)
diff --git a/pytask/taskapp/views.py b/pytask/taskapp/views.py
index acea595..1418616 100755
--- a/pytask/taskapp/views.py
+++ b/pytask/taskapp/views.py
@@ -658,6 +658,67 @@ def edit_textbook(request, task_id):
RequestContext(request, context))
@login_required
+def create_chapter(request, book_id, template='task/chapter_edit.html'):
+ """View function to let Coordinators and TAs (Mentor in
+ PyTask terminology) create chapters out of textbooks.
+
+ Args:
+ book_id: ID of the text book to which this chapter belongs to
+ """
+
+ user = request.user
+ profile = user.get_profile()
+
+ if profile.role != profile_models.ROLES_CHOICES[3][0]:
+ can_create = True
+ else:
+ can_create= False
+
+ if not can_create:
+ raise http.HttpResponseForbidden
+
+ context = {
+ 'user': user,
+ 'profile': profile,
+ }
+
+ context.update(csrf(request))
+
+ textbook = shortcuts.get_object_or_404(taskapp_models.Task, pk=book_id)
+ initial_tags = ', '.join([textbook.tags_field] + ['Chapter'])
+
+ if request.method == 'POST':
+ form = taskapp_forms.CreateChapterForm(request.POST)
+ if form.is_valid():
+ data = form.cleaned_data.copy()
+
+ data.update({
+ 'created_by': user,
+ 'creation_datetime': datetime.now(),
+ 'parent': textbook,
+ })
+
+ # TODO: remove hard coded default publish for chapters
+ data['status'] = 'Open'
+ new_chapter = taskapp_models.Task(**data)
+ new_chapter.save()
+
+ textbook_url = reverse(
+ 'view_textbook', kwargs={'task_id': textbook.id})
+ return shortcuts.redirect(textbook_url)
+ else:
+ context.update({"form": form})
+ return shortcuts.render_to_response(
+ template, RequestContext(request, context))
+ else:
+ form = taskapp_forms.CreateChapterForm(
+ initial={'tags_field': initial_tags})
+ context.update({'form': form})
+ return shortcuts.render_to_response(
+ template, RequestContext(request, context))
+
+
+@login_required
def claim_task(request, task_id):
context = {}
diff --git a/pytask/templates/task/chapter_edit.html b/pytask/templates/task/chapter_edit.html
new file mode 100644
index 0000000..2d673d4
--- /dev/null
+++ b/pytask/templates/task/chapter_edit.html
@@ -0,0 +1,24 @@
+{% extends "base.html" %}
+
+{% load form_helpers %}
+
+{% block css %}
+ <style>
+ .ui-autocomplete-loading {
+ background: white url('images/ui-anim_basic_16x16.gif') right center no-repeat;
+ }
+ </style>
+{% endblock %}
+
+{% block js %}
+ <script type="text/javascript"
+ src="/pytask/static/js/create_task_form.js">
+ </script>
+ <script type="text/javascript">
+ create_form("{% url suggest_task_tags %}");
+ </script>
+{% endblock %}
+
+{% block content %}
+ {% as_div_form form "Create Chapter Form" csrf_token "Submit" %}
+{% endblock %}