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,6 +55,7 @@ class NewWindowView(LoginRequiredMixin, LogMixin, generic.DetailView):
55 template_name = 'bulletin/window_view.html' 55 template_name = 'bulletin/window_view.html'
56 model = Bulletin 56 model = Bulletin
57 context_object_name = 'bulletin' 57 context_object_name = 'bulletin'
  58 + student = None
58 59
59 def dispatch(self, request, *args, **kwargs): 60 def dispatch(self, request, *args, **kwargs):
60 slug = self.kwargs.get('slug', '') 61 slug = self.kwargs.get('slug', '')
@@ -67,22 +68,30 @@ class NewWindowView(LoginRequiredMixin, LogMixin, generic.DetailView): @@ -67,22 +68,30 @@ class NewWindowView(LoginRequiredMixin, LogMixin, generic.DetailView):
67 68
68 def post(self, request, *args, **kwargs): 69 def post(self, request, *args, **kwargs):
69 difficulties = self.request.POST.get('difficulties', None) 70 difficulties = self.request.POST.get('difficulties', None)
  71 + user_selected = request.POST.get('selected_student', None)
70 72
71 slug = self.kwargs.get('slug', '') 73 slug = self.kwargs.get('slug', '')
72 bulletin = get_object_or_404(Bulletin, slug=slug) 74 bulletin = get_object_or_404(Bulletin, slug=slug)
73 75
74 self.object = bulletin 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 def get_context_data(self, **kwargs): 96 def get_context_data(self, **kwargs):
88 context = super(NewWindowView, self).get_context_data(**kwargs) 97 context = super(NewWindowView, self).get_context_data(**kwargs)
@@ -115,14 +124,23 @@ class NewWindowView(LoginRequiredMixin, LogMixin, generic.DetailView): @@ -115,14 +124,23 @@ class NewWindowView(LoginRequiredMixin, LogMixin, generic.DetailView):
115 124
116 slug = self.kwargs.get('slug', '') 125 slug = self.kwargs.get('slug', '')
117 bulletin = get_object_or_404(Bulletin, slug=slug) 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 meta_geral = Goals.objects.get(topic=topic) 137 meta_geral = Goals.objects.get(topic=topic)
120 metas = GoalItem.objects.filter(goal = meta_geral) 138 metas = GoalItem.objects.filter(goal = meta_geral)
121 metas_pessoais = [] 139 metas_pessoais = []
122 n_submeteu = False 140 n_submeteu = False
123 for m in metas: 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 n_submeteu = False 144 n_submeteu = False
127 else: 145 else:
128 n_submeteu = True 146 n_submeteu = True
@@ -137,8 +155,8 @@ class NewWindowView(LoginRequiredMixin, LogMixin, generic.DetailView): @@ -137,8 +155,8 @@ class NewWindowView(LoginRequiredMixin, LogMixin, generic.DetailView):
137 else: 155 else:
138 lista_metas[x]['estabelecida'] = metas_pessoais[x].value 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 for x in range(len(lista_metas)): 161 for x in range(len(lista_metas)):
144 lista_metas[x]['alcancada'] = alcancadas[x] 162 lista_metas[x]['alcancada'] = alcancadas[x]
@@ -164,9 +182,10 @@ class NewWindowView(LoginRequiredMixin, LogMixin, generic.DetailView): @@ -164,9 +182,10 @@ class NewWindowView(LoginRequiredMixin, LogMixin, generic.DetailView):
164 context['medianas'] = medianas 182 context['medianas'] = medianas
165 context['resultados'] = resultados 183 context['resultados'] = resultados
166 context['titulos'] = titulos 184 context['titulos'] = titulos
  185 + context['student'] = self.request.POST.get('selected_student', students.first().email)
  186 + context['students'] = students
167 187
168 return context 188 return context
169 -  
170 class InsideView(LoginRequiredMixin, LogMixin, generic.DetailView): 189 class InsideView(LoginRequiredMixin, LogMixin, generic.DetailView):
171 log_component = 'resources' 190 log_component = 'resources'
172 log_action = 'view' 191 log_action = 'view'
@@ -179,6 +198,7 @@ class InsideView(LoginRequiredMixin, LogMixin, generic.DetailView): @@ -179,6 +198,7 @@ class InsideView(LoginRequiredMixin, LogMixin, generic.DetailView):
179 template_name = 'bulletin/view.html' 198 template_name = 'bulletin/view.html'
180 model = Bulletin 199 model = Bulletin
181 context_object_name = 'bulletin' 200 context_object_name = 'bulletin'
  201 + student = None
182 202
183 def dispatch(self, request, *args, **kwargs): 203 def dispatch(self, request, *args, **kwargs):
184 slug = self.kwargs.get('slug', '') 204 slug = self.kwargs.get('slug', '')
@@ -191,22 +211,30 @@ class InsideView(LoginRequiredMixin, LogMixin, generic.DetailView): @@ -191,22 +211,30 @@ class InsideView(LoginRequiredMixin, LogMixin, generic.DetailView):
191 211
192 def post(self, request, *args, **kwargs): 212 def post(self, request, *args, **kwargs):
193 difficulties = self.request.POST.get('difficulties', None) 213 difficulties = self.request.POST.get('difficulties', None)
  214 + user_selected = request.POST.get('selected_student', None)
194 215
195 slug = self.kwargs.get('slug', '') 216 slug = self.kwargs.get('slug', '')
196 bulletin = get_object_or_404(Bulletin, slug=slug) 217 bulletin = get_object_or_404(Bulletin, slug=slug)
197 218
198 self.object = bulletin 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 def get_context_data(self, **kwargs): 239 def get_context_data(self, **kwargs):
212 context = super(InsideView, self).get_context_data(**kwargs) 240 context = super(InsideView, self).get_context_data(**kwargs)
@@ -238,13 +266,22 @@ class InsideView(LoginRequiredMixin, LogMixin, generic.DetailView): @@ -238,13 +266,22 @@ class InsideView(LoginRequiredMixin, LogMixin, generic.DetailView):
238 topic = self.object.topic 266 topic = self.object.topic
239 slug = self.kwargs.get('slug', '') 267 slug = self.kwargs.get('slug', '')
240 bulletin = get_object_or_404(Bulletin, slug=slug) 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 meta_geral = Goals.objects.get(topic=topic) 278 meta_geral = Goals.objects.get(topic=topic)
242 metas = GoalItem.objects.filter(goal = meta_geral) 279 metas = GoalItem.objects.filter(goal = meta_geral)
243 metas_pessoais = [] 280 metas_pessoais = []
244 n_submeteu = False 281 n_submeteu = False
245 for m in metas: 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 n_submeteu = False 285 n_submeteu = False
249 else: 286 else:
250 n_submeteu = True 287 n_submeteu = True
@@ -259,8 +296,8 @@ class InsideView(LoginRequiredMixin, LogMixin, generic.DetailView): @@ -259,8 +296,8 @@ class InsideView(LoginRequiredMixin, LogMixin, generic.DetailView):
259 else: 296 else:
260 lista_metas[x]['estabelecida'] = metas_pessoais[x].value 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 for x in range(len(lista_metas)): 302 for x in range(len(lista_metas)):
266 lista_metas[x]['alcancada'] = alcancadas[x] 303 lista_metas[x]['alcancada'] = alcancadas[x]
@@ -287,7 +324,8 @@ class InsideView(LoginRequiredMixin, LogMixin, generic.DetailView): @@ -287,7 +324,8 @@ class InsideView(LoginRequiredMixin, LogMixin, generic.DetailView):
287 context['medianas'] = medianas 324 context['medianas'] = medianas
288 context['resultados'] = resultados 325 context['resultados'] = resultados
289 context['titulos'] = titulos 326 context['titulos'] = titulos
290 - 327 + context['student'] = self.request.POST.get('selected_student', students.first().email)
  328 + context['students'] = students
291 return context 329 return context
292 330
293 class CreateView(LoginRequiredMixin, LogMixin, generic.edit.CreateView): 331 class CreateView(LoginRequiredMixin, LogMixin, generic.edit.CreateView):