From 98808255678ba466559966314c226d4da170c8d6 Mon Sep 17 00:00:00 2001 From: Guillaume Pellerin Date: Fri, 13 Jun 2014 01:54:37 +0200 Subject: [PATCH] add Script form, upgrade workflow --- teleforma/exam/admin.py | 2 +- teleforma/exam/forms.py | 4 +- teleforma/exam/models.py | 8 +-- .../exam/templates/exam/script_detail.html | 16 +++--- .../exam/templates/exam/script_form.html | 52 +++++++++++++++++++ teleforma/exam/templates/exam/scripts.html | 14 +++-- teleforma/exam/urls.py | 3 ++ teleforma/exam/views.py | 30 ++++++++--- teleforma/models/core.py | 2 +- teleforma/templates/telemeta/base.html | 4 +- teleforma/templatetags/teleforma_tags.py | 11 +++- 11 files changed, 119 insertions(+), 27 deletions(-) create mode 100644 teleforma/exam/templates/exam/script_form.html diff --git a/teleforma/exam/admin.py b/teleforma/exam/admin.py index 528a5d5e..2c13fdd1 100644 --- a/teleforma/exam/admin.py +++ b/teleforma/exam/admin.py @@ -21,7 +21,7 @@ class CorrectorAdmin(admin.ModelAdmin): class ScriptAdmin(admin.ModelAdmin): model = Script # exclude = ['options'] - inlines = [ScriptPageInline] + # inlines = [ScriptPageInline] diff --git a/teleforma/exam/forms.py b/teleforma/exam/forms.py index 6550d74a..d0b89655 100644 --- a/teleforma/exam/forms.py +++ b/teleforma/exam/forms.py @@ -10,6 +10,8 @@ class ScriptForm(ModelForm): class Meta: model = Script - exclude = ['uuid', 'url', 'author', 'corrector', 'date_submitted', 'date_rejected', 'date_marked', + exclude = ['uuid', 'mime_type', 'sha1', 'url', + 'date_submitted', 'date_rejected', 'date_marked', + 'box_uuid', ] #hidden_fields = ['status'] diff --git a/teleforma/exam/models.py b/teleforma/exam/models.py index b1c909fd..86478461 100644 --- a/teleforma/exam/models.py +++ b/teleforma/exam/models.py @@ -192,7 +192,7 @@ class Script(BaseResource): session = models.CharField(_('session'), choices=session_choices, max_length=16, default="1") type = models.ForeignKey(ScriptType, related_name='scripts', verbose_name=_('type'), null=True, on_delete=models.SET_NULL) - author = models.ForeignKey(User, related_name="scripts", verbose_name=_('author'), null=True, on_delete=models.SET_NULL) + author = models.ForeignKey(User, related_name="scripts", verbose_name=_('author'), null=True, blank=True, on_delete=models.SET_NULL) file = models.FileField(_('PDF file'), upload_to='scripts/%Y/%m/%d', blank=True) box_uuid = models.CharField(_('Box UUID'), max_length='256', blank=True) corrector = models.ForeignKey('Corrector', related_name="scripts", verbose_name=_('corrector'), blank=True, null=True, on_delete=models.SET_NULL) @@ -223,8 +223,8 @@ class Script(BaseResource): return 'https://crocodoc.com/view/' + session_key @property - def box_user_url(self, user): - user = {'id': user.id, 'name': unicode(user)} + def box_user_url(self): + user = {'id': 2, 'name': 'Pierre Durand'} session_key = crocodoc.session.create(self.box_uuid, editable=False, user=user, filter='all', admin=False, downloadable=True, copyprotected=False, demo=False, sidebar='invisible') @@ -284,7 +284,7 @@ class Script(BaseResource): def submit(self): self.date_submitted = datetime.datetime.now() # self.url = settings.MEDIA_URL + unicode(self.file) - self.url='http://files.parisson.com/pre-barreau/Bordereau_de_livraison.pdf' + self.url='http://files.parisson.com/pre-barreau/LATRILLE Adeline - Procedure civile 1.pdf' self.box_uuid = crocodoc.document.upload(url=self.url) if not self.corrector: self.auto_set_corrector() diff --git a/teleforma/exam/templates/exam/script_detail.html b/teleforma/exam/templates/exam/script_detail.html index 83104d70..951c151d 100644 --- a/teleforma/exam/templates/exam/script_detail.html +++ b/teleforma/exam/templates/exam/script_detail.html @@ -58,12 +58,6 @@ }); - function SetValues() - { - var s = 'X=' + window.event.clientX + ' Y=' + window.event.clientY ; - document.getElementById('divCoord').innerText = s; - - } {% endblock extra_javascript %} @@ -84,8 +78,12 @@ {% elif script.status == 0 %} {% trans "Rejected" %} {% else %} - {% trans "Mark" %} - {% trans "Reject" %} + {% if user.correctors.all %} + {% trans "Mark" %} + {% trans "Reject" %} + {% else %} + {% trans "Submitted" %} + {% endif %} {% endif %} @@ -141,7 +139,7 @@ {% else %}
-
diff --git a/teleforma/exam/templates/exam/script_form.html b/teleforma/exam/templates/exam/script_form.html new file mode 100644 index 00000000..d0ad7f98 --- /dev/null +++ b/teleforma/exam/templates/exam/script_form.html @@ -0,0 +1,52 @@ +{% extends "exam/scripts.html" %} +{% load telemeta_utils %} +{% load teleforma_tags %} +{% load i18n %} +{% load thumbnail %} + +{% block extra_javascript %} + +{% endblock extra_javascript %} + +{% block answers %} + +
+{% trans "New script" %} +
+ +
+ +
{% csrf_token %} + + + {% for field in form %} + + {% if not field.html_name in create_fields %} + + {% else %} + + + {% endif %} + + {% endfor %} +
{% for error in form.non_field_errors %}
  • {{ error }}
  • {% endfor %}
    {{ field.label_tag.as_hidden }}{{ field.as_hidden }}
    {{ field.errors }}
    {{ field.label_tag }}: {{ field }}
    +
    +
    + {% trans "Submit" %} + + +
    + + +{% endblock answers %} \ No newline at end of file diff --git a/teleforma/exam/templates/exam/scripts.html b/teleforma/exam/templates/exam/scripts.html index 0d3de6b9..3b8b7173 100644 --- a/teleforma/exam/templates/exam/scripts.html +++ b/teleforma/exam/templates/exam/scripts.html @@ -22,13 +22,20 @@
    + +{% block module-action %} +
    +{% trans "New script" %} +
    +{% endblock module-action %} + {% endblock modules %} @@ -48,7 +55,8 @@ {% else %}

    {% trans "No scripts" %}

    {% endif %} - {% endblock answers %} + + {% endblock %} diff --git a/teleforma/exam/urls.py b/teleforma/exam/urls.py index e794ac28..83667778 100644 --- a/teleforma/exam/urls.py +++ b/teleforma/exam/urls.py @@ -49,6 +49,9 @@ urlpatterns = patterns('', url(r'^desk/periods/(?P.*)/exam/scripts/list/$', ScriptsView.as_view(), name="teleforma-exam-script-list"), + url(r'^desk/periods/(?P.*)/exam/scripts/create/$', ScriptCreateView.as_view(), + name="teleforma-exam-script-create"), + url(r'^desk/periods/(?P.*)/exam/scripts_pending/$', ScriptsPendingView.as_view(), name="teleforma-exam-scripts-pending"), url(r'^desk/periods/(?P.*)/exam/scripts_treated/$', ScriptsTreatedView.as_view(), name="teleforma-exam-scripts-treated"), url(r'^desk/periods/(?P.*)/exam/scripts_rejected/$', ScriptsRejectedView.as_view(), name="teleforma-exam-scripts-rejected"), diff --git a/teleforma/exam/views.py b/teleforma/exam/views.py index c0a4c8c1..7960decd 100644 --- a/teleforma/exam/views.py +++ b/teleforma/exam/views.py @@ -57,7 +57,7 @@ class ScriptsPendingView(ScriptsView): def get_queryset(self): user = self.request.user - scripts = Script.objects.filter(Q(status=3, author=user) | Q(status=3, corrector=user)) + scripts = Script.objects.filter(Q(status=3, author=user) | Q(status=3, corrector__user=user)) return scripts @@ -65,7 +65,7 @@ class ScriptsTreatedView(ScriptsView): def get_queryset(self): user = self.request.user - scripts = Script.objects.filter(Q(status=4, author=user) | Q(status=4, corrector=user)) + scripts = Script.objects.filter(Q(status=4, author=user) | Q(status=4, corrector__user=user)) return scripts @@ -73,19 +73,37 @@ class ScriptsRejectedView(ScriptsView): def get_queryset(self): user = self.request.user - scripts = Script.objects.filter(Q(status=0, author=user) | Q(status=0, corrector=user)) + scripts = Script.objects.filter(Q(status=0, author=user) | Q(status=0, corrector__user=user)) return scripts -class ScriptCreate(CreateView): +class ScriptCreateView(CreateView): + model = Script + template_name='exam/script_form.html' + form_class = ScriptForm + success_url = reverse_lazy('teleforma-exam-scripts-pending', kwargs={'period_id':1}) def form_valid(self, form): form.instance.author = self.request.user - return super(ScriptCreate, self).form_valid(form) + return super(ScriptCreateView, self).form_valid(form) + + def form_invalid(self, form): + return super(ScriptCreateView, self).form_invalid(form) + + def get_context_data(self, **kwargs): + context = super(ScriptCreateView, self).get_context_data(**kwargs) + context['create_fields'] = ['course', 'period', 'session', 'type', 'file' ] + print self.request + return context + + @method_decorator(login_required) + def dispatch(self, *args, **kwargs): + return super(ScriptCreateView, self).dispatch(*args, **kwargs) + +class ScriptUpdateView(UpdateView): -class ScriptUpdate(UpdateView): model = Script fields = ['score'] diff --git a/teleforma/models/core.py b/teleforma/models/core.py index 2d79cfd2..5e78d048 100644 --- a/teleforma/models/core.py +++ b/teleforma/models/core.py @@ -165,7 +165,7 @@ class Course(Model): notes = generic.GenericRelation(Note) def __unicode__(self): - return self.code + return self.title @property def slug(self): diff --git a/teleforma/templates/telemeta/base.html b/teleforma/templates/telemeta/base.html index dcba6999..a1fd6a88 100644 --- a/teleforma/templates/telemeta/base.html +++ b/teleforma/templates/telemeta/base.html @@ -113,7 +113,9 @@ alt="logo" />
  • {% trans "Annals" %}
  • {% endif %} -
  •  {% trans "Scripts" %} {% untreated_scripts_count user.username %} +
  •  {% trans "Scripts" %}  + {% if user.is_staff or user.correctors.all %}{% untreated_scripts_count user.username %} + {% else %}{% treated_scripts_count user.username %}{% endif %}
      {% for period in periods %}
    • {{ period.name }}
    • diff --git a/teleforma/templatetags/teleforma_tags.py b/teleforma/templatetags/teleforma_tags.py index e4903de6..beea84dc 100644 --- a/teleforma/templatetags/teleforma_tags.py +++ b/teleforma/templatetags/teleforma_tags.py @@ -211,7 +211,16 @@ def published(doc): @register.simple_tag def untreated_scripts_count(username): user = User.objects.get(username=username) - scripts = Script.objects.filter(Q(status=3, author=user) | Q(status=3, corrector=user)) + scripts = Script.objects.filter(Q(status=3, author=user) | Q(status=3, corrector__user=user)) + if scripts: + return ' (' + str(len(scripts)) + ')' + else: + return '' + +@register.simple_tag +def treated_scripts_count(username): + user = User.objects.get(username=username) + scripts = Script.objects.filter(Q(status=4, author=user) | Q(status=4, corrector__user=user)) if scripts: return ' (' + str(len(scripts)) + ')' else: -- 2.39.5