]> git.parisson.com Git - teleforma.git/commitdiff
add Script form, upgrade workflow
authorGuillaume Pellerin <yomguy@parisson.com>
Thu, 12 Jun 2014 23:54:37 +0000 (01:54 +0200)
committerGuillaume Pellerin <yomguy@parisson.com>
Thu, 12 Jun 2014 23:54:37 +0000 (01:54 +0200)
teleforma/exam/admin.py
teleforma/exam/forms.py
teleforma/exam/models.py
teleforma/exam/templates/exam/script_detail.html
teleforma/exam/templates/exam/script_form.html [new file with mode: 0644]
teleforma/exam/templates/exam/scripts.html
teleforma/exam/urls.py
teleforma/exam/views.py
teleforma/models/core.py
teleforma/templates/telemeta/base.html
teleforma/templatetags/teleforma_tags.py

index 528a5d5e93e2f47448ad73a83863039c8ffd079a..2c13fdd1e9e9d1deef796d106b7adcdfbddfa49b 100644 (file)
@@ -21,7 +21,7 @@ class CorrectorAdmin(admin.ModelAdmin):
 class ScriptAdmin(admin.ModelAdmin):
     model = Script
     # exclude = ['options']
-    inlines = [ScriptPageInline]
+    inlines = [ScriptPageInline]
 
 
 
index 6550d74ac6295475f77e495b3bcadbc34435ae07..d0b89655a0f41de808d8a56a2a67a6f88394d39d 100644 (file)
@@ -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']
index b1c909fdb632509319bcd7de8575ee2c57bdd193..86478461949c69992b85b99f6e587d12c15556ce 100644 (file)
@@ -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()
index 83104d70c8cc4bc611084e3316cc03682d34debb..951c151d9d58a4d01f2be3ee95f0321d04988787 100644 (file)
 
     });
 
-    function SetValues()
-    {
-        var s = 'X=' + window.event.clientX +  ' Y=' + window.event.clientY ;
-        document.getElementById('divCoord').innerText = s;
-
-    }
     </script>
 {% endblock extra_javascript %}
 
         {% elif script.status == 0 %}
         <a href="#" class="component_icon button icon_delete">{% trans "Rejected" %}</a>
         {% else %}
-        <a id="opener_mark" href="#" class="component_icon button icon_edit">{% trans "Mark" %}</a>
-        <a id="opener_reject" href="#" class="component_icon button icon_delete">{% trans "Reject" %}</a>
+         {% if user.correctors.all %}
+               <a id="opener_mark" href="#" class="component_icon button icon_edit">{% trans "Mark" %}</a>
+               <a id="opener_reject" href="#" class="component_icon button icon_delete">{% trans "Reject" %}</a>
+         {% else %}
+               <a id="opener_mark" href="#" class="component_icon button icon_time">{% trans "Submitted" %}</a>
+         {% endif %}
         {% endif %}
 
     </div>
 {% else %}
 <div class="media">
  <div class="script">
-    <iframe style="position:fixed; top:14%; left:0px; bottom:0px; right:0px; width:100%; height:85%; border:none; margin:0; padding:0; z-index:0;" src="{{ script.box_admin_url }}">
+    <iframe style="position:fixed; top:14%; left:0px; bottom:0px; right:0px; width:100%; height:85%; border:none; margin:0; padding:0; z-index:0;" src="{% if user.correctors.all %}{{ script.box_admin_url }}{% else %}{{ script.box_user_url }}{% endif %}">
     </iframe>
  </div>
 </div>
diff --git a/teleforma/exam/templates/exam/script_form.html b/teleforma/exam/templates/exam/script_form.html
new file mode 100644 (file)
index 0000000..d0ad7f9
--- /dev/null
@@ -0,0 +1,52 @@
+{% extends "exam/scripts.html" %}
+{% load telemeta_utils %}
+{% load teleforma_tags %}
+{% load i18n %}
+{% load thumbnail %}
+
+{% block extra_javascript %}
+  <script>
+    // increase the default animation speed to exaggerate the effect
+    $(function() {
+        var b2 = $('#submit_button');
+        b2.unbind('click').click(function() {
+            $(window).unbind('beforeunload');
+            b2.unbind('click');
+            $('#id_status').val("2");
+            $('#_ScriptForm').submit();
+        });
+    });
+    </script>
+{% endblock extra_javascript %}
+
+{% block answers %}
+
+<div class="course_title">
+{% trans "New script" %}
+</div>
+
+<div title="{% trans "Mark" %}" style="width: 400px; background: white;">
+
+    <form method="post" id="_ScriptForm" action="">{% csrf_token %}
+       <table>
+       <tr><td colspan="2">{% for error in form.non_field_errors %}<li class="error">{{ error }}</li>{% endfor %}</td></tr>
+       {% for field in form %}
+       <tr>
+        {% if not field.html_name in create_fields %}
+            <td>{{ field.label_tag.as_hidden }}</td><td>{{ field.as_hidden }}</td>
+        {% else %}
+            <tr><td class="error">{{ field.errors }}</td></tr>
+            <td>{{ field.label_tag }}:</td><td> {{ field }}</td>
+        {% endif %}
+        </tr>
+       {% endfor %}
+       </table>
+    </form>
+    <br />
+    <a href="#" id="submit_button" class="component_icon button icon_ok">{% trans "Submit" %}</a>
+
+
+</div>
+</div>
+
+{% endblock answers %}
\ No newline at end of file
index 0d3de6b911e4dc4a8684ed14566e0df1dd957c6d..3b8b7173a65582284df8902743ddd20edfb13e6c 100644 (file)
  <div style="background: white;">
   <ul>
   {% block courses %}
-   <li><a href="{% url teleforma-exam-scripts-pending period.id %}">{% trans "Pending" %}{% untreated_scripts_count user.username %}</a></li>
-   <li><a href="{% url teleforma-exam-scripts-treated period.id %}">{% trans "Treated" %}</a></li>
+   <li><a href="{% url teleforma-exam-scripts-pending period.id %}">{% trans "Pending" %}{% if user.is_staff or user.correctors.all %}{% untreated_scripts_count user.username %}{% endif %}</a></li>
+   <li><a href="{% url teleforma-exam-scripts-treated period.id %}">{% trans "Treated" %}{% if not user.is_staff and not user.correctors.all %}{% treated_scripts_count user.username %}{% endif %}</a></li>
    <li><a href="{% url teleforma-exam-scripts-rejected period.id %}">{% trans "Rejected" %}</a></li>
   {% endblock courses %}
   </ul>
  </div>
 </div>
+
+{% block module-action %}
+<div class="module_action">
+<a href="{% url teleforma-exam-script-create perdiod.id %}" class="component_icon button" id="action_green">{% trans "New script" %}</a>
+</div>
+{% endblock module-action %}
+
 {% endblock modules %}
 
 </div>
@@ -48,7 +55,8 @@
  {% else %}
     <p class="help">{% trans "No scripts" %}</p>
  {% endif %}
-</div>
 {% endblock answers %}
 
+</div>
+
 {% endblock %}
index e794ac2899bec1a6d08e932e5524634f16b6b1bf..836677785ef7c07ba52825b9d7351d8ad020e9ba 100644 (file)
@@ -49,6 +49,9 @@ urlpatterns = patterns('',
     url(r'^desk/periods/(?P<period_id>.*)/exam/scripts/list/$', ScriptsView.as_view(),
         name="teleforma-exam-script-list"),
 
+    url(r'^desk/periods/(?P<period_id>.*)/exam/scripts/create/$', ScriptCreateView.as_view(),
+        name="teleforma-exam-script-create"),
+
     url(r'^desk/periods/(?P<period_id>.*)/exam/scripts_pending/$', ScriptsPendingView.as_view(), name="teleforma-exam-scripts-pending"),
     url(r'^desk/periods/(?P<period_id>.*)/exam/scripts_treated/$', ScriptsTreatedView.as_view(), name="teleforma-exam-scripts-treated"),
     url(r'^desk/periods/(?P<period_id>.*)/exam/scripts_rejected/$', ScriptsRejectedView.as_view(), name="teleforma-exam-scripts-rejected"),
index c0a4c8c1ae2df49416ae82efa4aa77635e8ae9f1..7960decdc496a554839346ef1bd432c28da7d7da 100644 (file)
@@ -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']
 
index 2d79cfd25bc97c7e1bc7afdc6ec4b8d5060e618c..5e78d04836591c8bcfa37af43e4fc21e346a57db 100644 (file)
@@ -165,7 +165,7 @@ class Course(Model):
     notes = generic.GenericRelation(Note)
 
     def __unicode__(self):
-        return self.code
+        return self.title
 
     @property
     def slug(self):
index dcba699906ca9421ee08f7053407bbd5edbdb5c9..a1fd6a88568d143c46f64bd4df0cee772fa60f1b 100644 (file)
@@ -113,7 +113,9 @@ alt="logo" />
   <li><a href="{% url teleforma-annals %}" class="yellow">{% trans "Annals" %}</a></li>
  {% endif %}
 
-    <li><a href="#scripts#" class="green">&nbsp;{% trans "Scripts" %}&nbsp;{% untreated_scripts_count user.username %}</a>
+    <li><a href="#scripts#" class="green">&nbsp;{% trans "Scripts" %}&nbsp;
+     {% if user.is_staff or user.correctors.all %}{% untreated_scripts_count user.username %}
+     {% else %}{% treated_scripts_count user.username %}{% endif %}</a>
       <ul>
        {% for period in periods %}
         <li><a href="{% url teleforma-exam-scripts-pending period.id %}" class="green">{{ period.name }}</a></li>
index e4903de66795fd5a80c908b4e68d76daa553483c..beea84dc9f9f529521871913ad1a85f5ad0410d0 100644 (file)
@@ -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: