]> git.parisson.com Git - teleforma.git/commitdiff
Additional filters on scripts
authorGael Le Mignot <gael@pilotsystems.net>
Tue, 13 Nov 2018 15:44:24 +0000 (16:44 +0100)
committerGael Le Mignot <gael@pilotsystems.net>
Tue, 13 Nov 2018 15:44:24 +0000 (16:44 +0100)
teleforma/exam/admin.py
teleforma/exam/templates/exam/scripts.html
teleforma/exam/views.py
teleforma/models/core.py

index 3cdbeba5c4899a42f742d475faace6a8ca2f6cd4..84ec23d67985f268b7ffec4f682a243ea1a96f1d 100644 (file)
@@ -36,7 +36,8 @@ class ScriptAdmin(admin.ModelAdmin):
                     'corrector__last_name', 'course__title', 'course__code']
     readonly_fields = ['date_added','uuid','box_uuid','sha1','mime_type']
     list_filter = ['period', 'course__title', 'session', 'type', 'status',
-                    'date_submitted', 'date_marked', 'date_rejected']
+                    'date_submitted', 'date_marked', 'date_rejected',
+                   'author__student__platform_only' ]
     list_display = ['title', 'author_name', 'file_size', 'status']
     actions = ['force_resubmit',]
 
index 749f5c3d2ddb28184524b7420942a32914460680..1b278c00ec1ec64b6fcd561f72ea6b51d51412bf 100644 (file)
        <option value="{{type.0}}" {% if type.0 == type_selected %}selected="selected"{% endif %}>{{type.1}}</option>
        {% endfor %}
     </select>
+    <br />
+    <label for="platform_only_select">{% trans "E-learning uniquement"%}</label>
+    <select name="platform_only" id="platform_only_select">
+       <option value="">---</option>
+       <option value="1" {% if platform_only == '1' %}selected="selected"{% endif %}>Oui</option>
+       <option value="0" {% if platform_only == '0' %}selected="selected"{% endif %}>Non</option>
+    </select>
     <input type="submit" value="Filtrer"/>
 </form>
 {% endif %}
index 489c4225b663dff1acb86a1c2c94bb71b8fcf693..2f29edd69b8a23e25da6f912ad82550e13b51379 100755 (executable)
@@ -24,12 +24,12 @@ class ScriptMixinView(View):
         self.period = Period.objects.get(id=self.kwargs['period_id'])
         context['period'] = self.period
         context['script_service_url'] = getattr(settings, 'TELEFORMA_EXAM_SCRIPT_SERVICE_URL')
+        self.nb_script = self.period.nb_script or settings.TELEFORMA_EXAM_MAX_SESSIONS
         if getattr(settings, 'TELEFORMA_EXAM_SCRIPT_UPLOAD', True) and self.period.date_exam_end:
             upload = datetime.datetime.now() <= self.period.date_exam_end
-            if self.period.nb_script:
-                if Script.objects.filter(period = self.period,
-                                         author = self.request.user).count() >= self.period.nb_script:
-                    upload = False
+            if Script.objects.filter(period = self.period,
+                                     author = self.request.user).count() >= self.nb_script:
+                upload = False
             context['upload'] = upload
         else:
             context['upload'] = False
@@ -55,6 +55,7 @@ class ScriptsListMixinView(ScriptMixinView):
             correctors = User.objects.filter(corrector_scripts__in=self.get_base_queryset()).order_by('last_name').distinct()
             context['correctors_list'] = [(str(corrector.id), corrector.get_full_name()) for corrector in correctors]
             context['corrector_selected'] = self.request.GET.get('corrector', str(self.request.user.id))
+            session_choices = get_n_choices(self.nb_script + 1)
             context['sessions_list'] = session_choices
             context['session_selected'] = self.request.GET.get('session')
             types = ScriptType.objects.all()
@@ -63,6 +64,7 @@ class ScriptsListMixinView(ScriptMixinView):
             courses = Course.objects.filter(scripts__in=self.get_base_queryset()).distinct()
             context['courses_list'] = [(str(course.id), course.title) for course in courses]
             context['course_selected'] = self.request.GET.get('course')
+            context['platform_only'] = self.request.GET.get('platform_only')
         return context
 
 class ScriptView(ScriptMixinView, CourseAccessMixin, UpdateView):
@@ -128,6 +130,7 @@ class ScriptsView(ScriptsListMixinView, ListView):
         type = self.request.GET.get('type')
         session = self.request.GET.get('session')
         course = self.request.GET.get('course')
+        platform_only = self.request.GET.get('platform_only')
         if type:
             QT = Q(type__id=int(type)) & QT
         if session:
@@ -136,6 +139,8 @@ class ScriptsView(ScriptsListMixinView, ListView):
             QT = Q(course__id=int(course)) & QT
         if corrector:
             QT = Q(corrector__id=int(corrector)) & QT
+        if platform_only:
+            QT = Q(author__student__platform_only = int(platform_only)) & QT
         return QT
 
     @method_decorator(login_required)
index e41d872e24bcefa2287becf63a7030a3f3412b29..0424bf72b7349aa879254ad492df295526e2e988 100644 (file)
@@ -151,7 +151,7 @@ class Period(Model):
     is_open = models.BooleanField(_('is open'), default=True)
     date_exam_end = models.DateTimeField(_("date de fin d'examens"), null=True, blank=True)
     nb_script = models.IntegerField(_("nombre maximal de copies"), null=True, blank=True)
-    date_close_accounts = models.DateField(_("date de fermeture des comptes étudiants"), null = True, blank = True)
+    date_close_accounts = models.DateField("date de fermeture des comptes étudiants", null = True, blank = True)
 
     def __unicode__(self):
         return self.name