diff options
-rw-r--r-- | pytask/taskapp/forms.py | 6 | ||||
-rw-r--r-- | pytask/taskapp/urls.py | 2 | ||||
-rwxr-xr-x | pytask/taskapp/views.py | 61 | ||||
-rw-r--r-- | pytask/templates/task/chapter_edit.html | 24 |
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 %} |