Commit 37c7a084df45a7f0f4b2301dc76838ffef6c3cbf
1 parent
72479841
Exists in
master
and in
2 other branches
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): |