Commit 37c7a084df45a7f0f4b2301dc76838ffef6c3cbf

Authored by Gustavo
1 parent 72479841

Adjusting bulletin view for non stundent users

Showing 1 changed file with 64 additions and 26 deletions   Show diff stats
bulletin/views.py
... ... @@ -55,6 +55,7 @@ class NewWindowView(LoginRequiredMixin, LogMixin, generic.DetailView):
55 55 template_name = 'bulletin/window_view.html'
56 56 model = Bulletin
57 57 context_object_name = 'bulletin'
  58 + student = None
58 59  
59 60 def dispatch(self, request, *args, **kwargs):
60 61 slug = self.kwargs.get('slug', '')
... ... @@ -67,22 +68,30 @@ class NewWindowView(LoginRequiredMixin, LogMixin, generic.DetailView):
67 68  
68 69 def post(self, request, *args, **kwargs):
69 70 difficulties = self.request.POST.get('difficulties', None)
  71 + user_selected = request.POST.get('selected_student', None)
70 72  
71 73 slug = self.kwargs.get('slug', '')
72 74 bulletin = get_object_or_404(Bulletin, slug=slug)
73 75  
74 76 self.object = bulletin
75 77  
76   - if not difficulties is None and not difficulties == "":
77   - message = _("#Dificulty(ies) found in %s")%(str(bulletin)) + ":<p>" + difficulties + "</p>"
  78 + if has_subject_permissions(request.user, bulletin.topic.subject):
  79 + if not user_selected is None:
  80 + user = User.objects.get(email = user_selected)
  81 + self.student = user
  82 + else:
  83 + if not difficulties is None and not difficulties == "":
  84 + message = _("#Dificulty(ies) found in %s")%(str(bulletin)) + ":<p>" + difficulties + "</p>"
78 85  
79   - brodcast_dificulties(self.request, message, bulletin.topic.subject)
  86 + brodcast_dificulties(self.request, message, bulletin.topic.subject)
80 87  
81   - messages.success(self.request, message = _("Difficulties sent to the subject professor(s)"))
82   - return self.render_to_response(context = self.get_context_data())
83   - else:
84   - messages.error(self.request, message = _("You should inform some difficulty"))
85   - return self.render_to_response(context = self.get_context_data())
  88 + messages.success(self.request, message = _("Difficulties sent to the subject professor(s)"))
  89 + return self.render_to_response(context = self.get_context_data())
  90 + else:
  91 + messages.error(self.request, message = _("You should inform some difficulty"))
  92 + return self.render_to_response(context = self.get_context_data())
  93 +
  94 + return self.render_to_response(context = self.get_context_data())
86 95  
87 96 def get_context_data(self, **kwargs):
88 97 context = super(NewWindowView, self).get_context_data(**kwargs)
... ... @@ -115,14 +124,23 @@ class NewWindowView(LoginRequiredMixin, LogMixin, generic.DetailView):
115 124  
116 125 slug = self.kwargs.get('slug', '')
117 126 bulletin = get_object_or_404(Bulletin, slug=slug)
  127 + students = User.objects.filter(subject_student = bulletin.topic.subject).order_by('social_name', 'username')
  128 +
  129 + if has_subject_permissions(self.request.user, bulletin.topic.subject):
  130 + if not self.student is None:
  131 + estudante = self.student
  132 + else:
  133 + estudante = students.first()
  134 + else:
  135 + estudante = self.request.user
118 136  
119 137 meta_geral = Goals.objects.get(topic=topic)
120 138 metas = GoalItem.objects.filter(goal = meta_geral)
121 139 metas_pessoais = []
122 140 n_submeteu = False
123 141 for m in metas:
124   - if MyGoals.objects.filter(item = m, user = self.request.user).exists():
125   - metas_pessoais.append(MyGoals.objects.get(item = m, user = self.request.user))
  142 + if MyGoals.objects.filter(item = m, user = estudante).exists():
  143 + metas_pessoais.append(MyGoals.objects.get(item = m, user = estudante))
126 144 n_submeteu = False
127 145 else:
128 146 n_submeteu = True
... ... @@ -137,8 +155,8 @@ class NewWindowView(LoginRequiredMixin, LogMixin, generic.DetailView):
137 155 else:
138 156 lista_metas[x]['estabelecida'] = metas_pessoais[x].value
139 157  
140   - alcancadas, medias = read_excel_file(self.request.user,meta_geral,len(itens_da_meta),bulletin)
141   - maximos, medianas, resultados,titulos = read_excel_file_indicators(self.request.user,bulletin)
  158 + alcancadas, medias = read_excel_file(estudante,meta_geral,len(itens_da_meta),bulletin)
  159 + maximos, medianas, resultados,titulos = read_excel_file_indicators(estudante,bulletin)
142 160  
143 161 for x in range(len(lista_metas)):
144 162 lista_metas[x]['alcancada'] = alcancadas[x]
... ... @@ -164,9 +182,10 @@ class NewWindowView(LoginRequiredMixin, LogMixin, generic.DetailView):
164 182 context['medianas'] = medianas
165 183 context['resultados'] = resultados
166 184 context['titulos'] = titulos
  185 + context['student'] = self.request.POST.get('selected_student', students.first().email)
  186 + context['students'] = students
167 187  
168 188 return context
169   -
170 189 class InsideView(LoginRequiredMixin, LogMixin, generic.DetailView):
171 190 log_component = 'resources'
172 191 log_action = 'view'
... ... @@ -179,6 +198,7 @@ class InsideView(LoginRequiredMixin, LogMixin, generic.DetailView):
179 198 template_name = 'bulletin/view.html'
180 199 model = Bulletin
181 200 context_object_name = 'bulletin'
  201 + student = None
182 202  
183 203 def dispatch(self, request, *args, **kwargs):
184 204 slug = self.kwargs.get('slug', '')
... ... @@ -191,22 +211,30 @@ class InsideView(LoginRequiredMixin, LogMixin, generic.DetailView):
191 211  
192 212 def post(self, request, *args, **kwargs):
193 213 difficulties = self.request.POST.get('difficulties', None)
  214 + user_selected = request.POST.get('selected_student', None)
194 215  
195 216 slug = self.kwargs.get('slug', '')
196 217 bulletin = get_object_or_404(Bulletin, slug=slug)
197 218  
198 219 self.object = bulletin
199 220  
200   - if not difficulties is None and not difficulties == "":
201   - message = _("#Dificulty(ies) found in %s")%(str(bulletin)) + ":<p>" + difficulties + "</p>"
  221 + if has_subject_permissions(request.user, bulletin.topic.subject):
  222 + if not user_selected is None:
  223 + user = User.objects.get(email = user_selected)
  224 + self.student = user
  225 + else:
  226 + if not difficulties is None and not difficulties == "":
  227 + message = _("#Dificulty(ies) found in %s")%(str(bulletin)) + ":<p>" + difficulties + "</p>"
202 228  
203   - brodcast_dificulties(self.request, message, bulletin.topic.subject)
  229 + brodcast_dificulties(self.request, message, bulletin.topic.subject)
204 230  
205   - messages.success(self.request, message = _("Difficulties sent to the subject professor(s)"))
206   - return self.render_to_response(context = self.get_context_data())
207   - else:
208   - messages.error(self.request, message = _("You should inform some difficulty"))
209   - return self.render_to_response(context = self.get_context_data())
  231 + messages.success(self.request, message = _("Difficulties sent to the subject professor(s)"))
  232 + return self.render_to_response(context = self.get_context_data())
  233 + else:
  234 + messages.error(self.request, message = _("You should inform some difficulty"))
  235 + return self.render_to_response(context = self.get_context_data())
  236 +
  237 + return self.render_to_response(context = self.get_context_data())
210 238  
211 239 def get_context_data(self, **kwargs):
212 240 context = super(InsideView, self).get_context_data(**kwargs)
... ... @@ -238,13 +266,22 @@ class InsideView(LoginRequiredMixin, LogMixin, generic.DetailView):
238 266 topic = self.object.topic
239 267 slug = self.kwargs.get('slug', '')
240 268 bulletin = get_object_or_404(Bulletin, slug=slug)
  269 + students = User.objects.filter(subject_student = bulletin.topic.subject).order_by('social_name', 'username')
  270 + if has_subject_permissions(self.request.user, bulletin.topic.subject):
  271 + if not self.student is None:
  272 + estudante = self.student
  273 + else:
  274 + estudante = students.first()
  275 + else:
  276 + estudante = self.request.user
  277 +
241 278 meta_geral = Goals.objects.get(topic=topic)
242 279 metas = GoalItem.objects.filter(goal = meta_geral)
243 280 metas_pessoais = []
244 281 n_submeteu = False
245 282 for m in metas:
246   - if MyGoals.objects.filter(item = m, user = self.request.user).exists():
247   - metas_pessoais.append(MyGoals.objects.get(item = m, user = self.request.user))
  283 + if MyGoals.objects.filter(item = m, user = estudante).exists():
  284 + metas_pessoais.append(MyGoals.objects.get(item = m, user = estudante))
248 285 n_submeteu = False
249 286 else:
250 287 n_submeteu = True
... ... @@ -259,8 +296,8 @@ class InsideView(LoginRequiredMixin, LogMixin, generic.DetailView):
259 296 else:
260 297 lista_metas[x]['estabelecida'] = metas_pessoais[x].value
261 298  
262   - alcancadas, medias = read_excel_file(self.request.user,meta_geral,len(itens_da_meta),bulletin)
263   - maximos, medianas, resultados,titulos = read_excel_file_indicators(self.request.user,bulletin)
  299 + alcancadas, medias = read_excel_file(estudante,meta_geral,len(itens_da_meta),bulletin)
  300 + maximos, medianas, resultados,titulos = read_excel_file_indicators(estudante,bulletin)
264 301  
265 302 for x in range(len(lista_metas)):
266 303 lista_metas[x]['alcancada'] = alcancadas[x]
... ... @@ -287,7 +324,8 @@ class InsideView(LoginRequiredMixin, LogMixin, generic.DetailView):
287 324 context['medianas'] = medianas
288 325 context['resultados'] = resultados
289 326 context['titulos'] = titulos
290   -
  327 + context['student'] = self.request.POST.get('selected_student', students.first().email)
  328 + context['students'] = students
291 329 return context
292 330  
293 331 class CreateView(LoginRequiredMixin, LogMixin, generic.edit.CreateView):
... ...