]> git.parisson.com Git - teleforma.git/commitdiff
Users can now send messages to correctors.
authoryleclanche <yoan.leclanche@gmail.com>
Fri, 9 Aug 2019 12:26:11 +0000 (14:26 +0200)
committeryleclanche <yoan.leclanche@gmail.com>
Fri, 9 Aug 2019 12:26:11 +0000 (14:26 +0200)
teleforma/templates/postman/base_write.html
teleforma/templatetags/teleforma_tags.py

index f0be07525258aad343e27e2038aa32f6541559a7..f140e0a553b9de13bf879ebc72451243c0a44256 100644 (file)
@@ -33,6 +33,8 @@
                     for="recipient_category-admin">A un administrateur</label>
                 <input type="radio" id="recipient_category-prof" name="recipient_category" value="prof" {% if request.POST.recipient_category == 'prof' %}checked="checked"{% endif %}/><label
                     for="recipient_category-prof">A un professeur</label>
+                <input type="radio" id="recipient_category-corrector" name="recipient_category" value="corrector" {% if request.POST.recipient_category == 'corrector' %}checked="checked"{% endif %}/><label
+                    for="recipient_category-corrector">A un correcteur</label>
 
 
                 <div id="category-admin">
                     </select>
                 </div>
 
+                <div id="category-corrector">
+
+                    <select id="_correctorCourseSelect" name="corrector_course">
+                        <option value="">Matière</option>
+                        {% get_all_courses as courses %}
+                        {% for c in courses %}
+                            <option value="{{ c.id }}" {% if request.POST.corrector_course == c.id|stringformat:"i" %}selected{% endif %}>{{ c.title }}</option>
+                        {% endfor %}
+                    </select>
+
+                    <select id="_correctorSelect" name="correctors">
+                        <option value="">Choisir un correcteur</option>
+                        {% get_all_correctors_with_courses as correctors %}
+                        {% for p in correctors %}
+                            <option value="{{ p.username }}"
+                                    data-courses="{{ p.courses }}" {% if request.POST.correctors == p.username %}selected{% endif %}>{{ p.name }}</option>
+                        {% endfor %}
+                    </select>
+                </div>
 
               <table>
                 {% block pm_write_recipient %}{% endblock %}
             });
         }
 
+        function update_corrector_recipient() {
+            $("#_correctorSelect").click(function () {
+                var htmlStr = $(this).val();
+                $("#id_recipients").val(htmlStr);
+            });
+        }
 
         function update_desk_messages(event) {
 
             // reset values
             if(event){
                 $target = $(event.target);
-                if($target.attr('id') === 'recipient_category-prof' || $target.attr('id') === 'recipient_category-admin') {
+                if($target.attr('id') === 'recipient_category-prof' || $target.attr('id') === 'recipient_category-admin' || $target.attr('id') === 'recipient_category-corrector') {
                     $('#_professorSelect').val('');
+                    $('#_correctorSelect').val('');
+                    $('#_correctorCourseSelect').val('');
                     $('#_courseSelect').val('');
                     $('#_adminSelect').val('');
                 }
 
                 if($target.attr('id') === '_courseSelect')
                     $('#_professorSelect').val('');
+                if($target.attr('id') === '_correctorCourseSelect')
+                    $('#_professorSelect').val('');
             }
 
             // show or hide field depending on what is selected
             $("#id_recipients").val('');
             $('#category-admin').hide();
             $('#category-prof').hide();
+            $('#category-corrector').hide();
             if (recipientCategory == 'admin')
                 $('#category-admin').show();
             else if (recipientCategory == 'prof')
                 $('#category-prof').show();
+            else if (recipientCategory == 'corrector')
+                $('#category-corrector').show();
 
             var course = parseInt($('[name="course"]').val(), 10);
             if(!course)
             else
                 $('#_professorSelect').show();
 
+            var correctorCourse = parseInt($('[name="corrector_course"]').val(), 10);
+            console.log(correctorCourse)
+            if(!correctorCourse)
+                $('#_correctorSelect').hide();
+            else
+                $('#_correctorSelect').show();
+
             $('#_professorSelect option').hide();
             $('#_professorSelect option:first').show();
             $('#_professorSelect option').each(function(){
                 if(courses && courses.indexOf(course) >= 0)
                     $option.show();
             });
+            $('#_correctorSelect option').hide();
+            $('#_correctorSelect option:first').show();
+            $('#_correctorSelect option').each(function(){
+                var $option = $(this);
+                var courses = $option.data('courses')
+                if(courses && courses.indexOf(correctorCourse) >= 0)
+                    $option.show();
+            });
+
             // fill the hidden field
             if($('#_professorSelect').val() && $('#_courseSelect').val() && recipientCategory === 'prof')
                 $("#id_recipients").val($('#_professorSelect').val());
+            if($('#_correctorSelect').val() && $('#_correctorCourseSelect').val() && recipientCategory === 'corrector')
+                $("#id_recipients").val($('#_correctorSelect').val());
             if($('#_adminSelect').val() && recipientCategory === 'admin')
                 $("#id_recipients").val($('#_adminSelect').val());
 
         {#$('#id_course').parent().parent().hide();#}
 
         $('[name="recipient_category"]').bind('change', update_desk_messages);
-        $('[name="course"]').bind('change', update_desk_messages);
-        $('#_professorSelect, #_adminSelect').bind('change', update_desk_messages);
+        $('[name="course"], [name="corrector_course"]').bind('change', update_desk_messages);
+        $('#_professorSelect, #_correctorSelect, #_adminSelect').bind('change', update_desk_messages);
         update_desk_messages();
 
         document.getElementById("id_subject").focus();
index 7cea5aa86129418de2ea4bc58acf24582c7d5b99..41742b3d56bb18d84284597f8488ef4ae68bf849 100644 (file)
@@ -163,6 +163,28 @@ def get_all_professors_with_courses():
     return professors
 
 
+@register.assignment_tag
+def get_all_correctors_with_courses():
+    correctors = {}
+
+    for quota in Quota.objects.all():
+        if not quota.corrector:
+            continue
+        if quota.corrector not in correctors:
+            correctors[quota.corrector] = set()
+        correctors[quota.corrector].add(quota.course.id)
+
+    result = []
+    for corrector in correctors.keys():
+        name = corrector.last_name + corrector.first_name
+        if name:
+            result.append({
+                'username':corrector.username,
+                'name':corrector.last_name + " " + corrector.first_name,
+                'courses':json.dumps(list(correctors[corrector]))
+            })
+    return result
+
 
 @register.assignment_tag
 def get_all_admins():