Commit fbd91084d487aad00ac6c9a04863404e9a1edb1f

Authored by Zambom
1 parent f8c76568

Adding non-student view for subject goals

amadeus/templates/base.html
@@ -329,6 +329,9 @@ @@ -329,6 +329,9 @@
329 329
330 }); 330 });
331 </script> 331 </script>
  332 +
  333 + {% block addtional_scripts %}
  334 + {% endblock %}
332 <div id="remove_acc"></div> 335 <div id="remove_acc"></div>
333 </body> 336 </body>
334 337
goals/templates/goals/view.html
@@ -33,6 +33,7 @@ @@ -33,6 +33,7 @@
33 {% endif %} 33 {% endif %}
34 34
35 {% resource_permissions request.user goal as has_resource_permissions %} 35 {% resource_permissions request.user goal as has_resource_permissions %}
  36 + {% subject_permissions request.user goal as has_subject_permissions %}
36 37
37 {% if goal.visible %} 38 {% if goal.visible %}
38 <div class="panel panel-info topic-panel"> 39 <div class="panel panel-info topic-panel">
@@ -57,6 +58,18 @@ @@ -57,6 +58,18 @@
57 </div> 58 </div>
58 </div> 59 </div>
59 <div id="{{subject.slug}}" class="panel-collapse in collapse category-panel-content"> 60 <div id="{{subject.slug}}" class="panel-collapse in collapse category-panel-content">
  61 + {% if has_subject_permissions %}
  62 + <form id="student_goals" action="" method="POST">
  63 + {% csrf_token %}
  64 + <select name="selected_student" onchange="$('#student_goals').submit();">
  65 + {% for stu in sub_students %}
  66 + <option value="{{ stu.email }}" {% if stu.email == student %}selected{% endif %}>{{ stu }}</option>
  67 + {% endfor %}
  68 + </select>
  69 + </form>
  70 + <br clear="all" />
  71 + {% endif %}
  72 +
60 {% autoescape off %} 73 {% autoescape off %}
61 {{ goal.presentation }} 74 {{ goal.presentation }}
62 {% endautoescape %} 75 {% endautoescape %}
@@ -77,13 +90,22 @@ @@ -77,13 +90,22 @@
77 </div> 90 </div>
78 {% endfor %} 91 {% endfor %}
79 92
80 - {% if not goal|is_close %}  
81 - <hr /> 93 + {% if not has_subject_permissions %}
  94 + {% if not goal|is_close %}
  95 + <hr />
82 96
83 - <div class="text-center">  
84 - <a href="{% url 'goals:update_submit' goal.slug %}" class="btn btn-success btn-raised">{% trans 'Update Goals' %}</a>  
85 - </div> 97 + <div class="text-center">
  98 + <a href="{% url 'goals:update_submit' goal.slug %}" class="btn btn-success btn-raised">{% trans 'Update Goals' %}</a>
  99 + </div>
  100 + {% endif %}
86 {% endif %} 101 {% endif %}
87 </div> 102 </div>
88 </div> 103 </div>
89 {% endblock %} 104 {% endblock %}
  105 +
  106 +
  107 +{% block addtional_scripts %}
  108 + <script type="text/javascript">
  109 + sessionSecurity.confirmFormDiscard = undefined;
  110 + </script>
  111 +{% endblock %}
90 \ No newline at end of file 112 \ No newline at end of file
goals/views.py
@@ -207,16 +207,41 @@ class InsideView(LoginRequiredMixin, LogMixin, generic.ListView): @@ -207,16 +207,41 @@ class InsideView(LoginRequiredMixin, LogMixin, generic.ListView):
207 207
208 template_name = 'goals/view.html' 208 template_name = 'goals/view.html'
209 model = Goals 209 model = Goals
210 - context_object_name = 'itens' 210 + context_object_name = 'itens'
  211 +
  212 + students = None
211 213
212 def get_queryset(self): 214 def get_queryset(self):
213 slug = self.kwargs.get('slug', '') 215 slug = self.kwargs.get('slug', '')
214 goal = get_object_or_404(Goals, slug = slug) 216 goal = get_object_or_404(Goals, slug = slug)
215 217
216 - goals = MyGoals.objects.filter(user = self.request.user, item__goal = goal) 218 + if has_subject_permissions(self.request.user, goal):
  219 + self.students = User.objects.filter(subject_student = goal.topic.subject).order_by('social_name', 'username')
  220 +
  221 + goals = MyGoals.objects.filter(user = self.students.first(), item__goal = goal)
  222 + else:
  223 + goals = MyGoals.objects.filter(user = self.request.user, item__goal = goal)
217 224
218 return goals 225 return goals
219 226
  227 + def post(self, request, *args, **kwargs):
  228 + slug = self.kwargs.get('slug', '')
  229 + goal = get_object_or_404(Goals, slug = slug)
  230 +
  231 + user = request.POST.get('selected_student', None)
  232 +
  233 + if has_subject_permissions(request.user, goal):
  234 + self.students = User.objects.filter(subject_student = goal.topic.subject).order_by('social_name', 'username')
  235 +
  236 + if not user is None:
  237 + self.object_list = MyGoals.objects.filter(user__email = user, item__goal = goal)
  238 + else:
  239 + self.object_list = MyGoals.objects.filter(user = self.request.user, item__goal = goal)
  240 + else:
  241 + self.object_list = MyGoals.objects.filter(user = self.request.user, item__goal = goal)
  242 +
  243 + return self.render_to_response(self.get_context_data())
  244 +
220 def dispatch(self, request, *args, **kwargs): 245 def dispatch(self, request, *args, **kwargs):
221 slug = self.kwargs.get('slug', '') 246 slug = self.kwargs.get('slug', '')
222 goals = get_object_or_404(Goals, slug = slug) 247 goals = get_object_or_404(Goals, slug = slug)
@@ -238,6 +263,10 @@ class InsideView(LoginRequiredMixin, LogMixin, generic.ListView): @@ -238,6 +263,10 @@ class InsideView(LoginRequiredMixin, LogMixin, generic.ListView):
238 context['topic'] = goals.topic 263 context['topic'] = goals.topic
239 context['subject'] = goals.topic.subject 264 context['subject'] = goals.topic.subject
240 265
  266 + if not self.students is None:
  267 + context['sub_students'] = self.students
  268 + context['student'] = self.request.POST.get('selected_student', self.students.first().email)
  269 +
241 self.log_context['category_id'] = goals.topic.subject.category.id 270 self.log_context['category_id'] = goals.topic.subject.category.id
242 self.log_context['category_name'] = goals.topic.subject.category.name 271 self.log_context['category_name'] = goals.topic.subject.category.name
243 self.log_context['category_slug'] = goals.topic.subject.category.slug 272 self.log_context['category_slug'] = goals.topic.subject.category.slug
@@ -799,14 +828,17 @@ class CreateView(LoginRequiredMixin, LogMixin, generic.edit.CreateView): @@ -799,14 +828,17 @@ class CreateView(LoginRequiredMixin, LogMixin, generic.edit.CreateView):
799 def get_success_url(self): 828 def get_success_url(self):
800 messages.success(self.request, _('The Goals specification for the topic %s was realized successfully!')%(self.object.topic.name)) 829 messages.success(self.request, _('The Goals specification for the topic %s was realized successfully!')%(self.object.topic.name))
801 830
802 - success_url = reverse_lazy('goals:submit', kwargs = {'slug': self.object.slug}) 831 + if has_subject_permissions(self.request.user, self.object):
  832 + success_url = reverse_lazy('goals:view', kwargs = {'slug': self.object.slug})
  833 + else:
  834 + success_url = reverse_lazy('goals:submit', kwargs = {'slug': self.object.slug})
803 835
804 - if self.object.show_window:  
805 - self.request.session['resources'] = {}  
806 - self.request.session['resources']['new_page'] = True  
807 - self.request.session['resources']['new_page_url'] = reverse('goals:window_submit', kwargs = {'slug': self.object.slug}) 836 + if self.object.show_window:
  837 + self.request.session['resources'] = {}
  838 + self.request.session['resources']['new_page'] = True
  839 + self.request.session['resources']['new_page_url'] = reverse('goals:window_submit', kwargs = {'slug': self.object.slug})
808 840
809 - success_url = reverse_lazy('subjects:view', kwargs = {'slug': self.object.topic.subject.slug}) 841 + success_url = reverse_lazy('subjects:view', kwargs = {'slug': self.object.topic.subject.slug})
810 842
811 return success_url 843 return success_url
812 844