def get_context_data(self, **kwargs): context = super(TaskScoresView, self).get_context_data(**kwargs) monitoring = self.task.organization.monitoring self.queryform = ParametersQueryForm(self.request.GET) # These fields should be annotated on paramter for strict pedantic tests. _param_extra = {'select': {'comment_url': 0, 'score_pk': 0, 'score_table': 0, 'score_openness': 0, 'score_openness_delta': 0}} # Relevant parameters relevant_parameters = Parameter.objects.filter(monitoring=monitoring)\ .exclude(exclude=self.task.organization)\ .defer('grounds', 'rating_procedure', 'notes')\ .extra(**_param_extra) scores_rel = Score.objects.filter(task=self.task)\ .exclude(parameter__exclude=self.task.organization)\ .defer('links', 'recommendations', 'created', 'last_modified', 'editor') relevant_parameters_exist = relevant_parameters.exists() # Apply user provided filters to relevant parameters if self.queryform.is_valid(): relevant_parameters = self.queryform.apply(relevant_parameters) # Set scores to relevant parameters list self._set_parameters_scores(relevant_parameters, scores_rel) self._set_last_comment_url(relevant_parameters, scores_rel) if self.request.user.is_expert: # Non relevant parameters nonrelevant_parameters = Parameter.objects.filter(monitoring=monitoring, exclude=self.task.organization)\ .defer('grounds', 'rating_procedure', 'notes')\ .extra(**_param_extra) scores_nonrel = Score.objects.filter(task=self.task, parameter__exclude=self.task.organization)\ .defer('links', 'recommendations', 'created', 'last_modified', 'editor') nonrelevant_parameters_exist = nonrelevant_parameters.exists() # Apply user provided filters to non relevant parameters if self.queryform.is_valid(): nonrelevant_parameters = self.queryform.apply(nonrelevant_parameters) # Set scores to non relevant parameters list self._set_parameters_scores(nonrelevant_parameters, scores_nonrel) context.update({ 'nonrelevant_parameters': nonrelevant_parameters, 'nonrelevant_parameters_exist': nonrelevant_parameters_exist, }) # Get questionnaire form questionnaire_form = None questions = QQuestion.objects.filter(questionnaire__monitoring=monitoring).order_by("pk") if questions: existing_answers = QAnswer.objects.filter(task=self.task).order_by("pk") initial_data = {"q_%s" % a.question.pk: a.answer(True) for a in existing_answers} questionnaire_form = QuestionnaireDynForm(questions=questions, initial=initial_data) context.update({ 'relevant_parameters': relevant_parameters, 'relevant_parameters_exist': relevant_parameters_exist, 'mon': monitoring, 'task': self.task, 'questionnaire_form': questionnaire_form, 'invcodeform': SettingsInvCodeForm(), 'orgs_count': Organization.objects.filter(monitoring=monitoring).count(), 'openness': self.task.openness, 'delta': self.task.openness - self.task.openness_initial if self.task.openness is not None else None, 'columns_form': task_scores_columns_form(self.request), 'is_representative': self.request.user.represents(self.task.organization), }) return context
def get_context_data(self, **kwargs): context = super(TaskScoresView, self).get_context_data(**kwargs) monitoring = self.task.organization.monitoring self.queryform = ParametersQueryForm(self.request.GET) # These fields should be annotated on paramter for strict pedantic tests. _param_extra = { 'select': { 'comment_url': 0, 'score_pk': 0, 'score_table': 0, 'score_openness': 0, 'score_openness_delta': 0 } } # Relevant parameters relevant_parameters = Parameter.objects.filter(monitoring=monitoring)\ .exclude(exclude=self.task.organization)\ .defer('grounds', 'rating_procedure', 'notes')\ .extra(**_param_extra) scores_rel = Score.objects.filter(task=self.task)\ .exclude(parameter__exclude=self.task.organization)\ .defer('links', 'recommendations', 'created', 'last_modified', 'editor') relevant_parameters_exist = relevant_parameters.exists() # Apply user provided filters to relevant parameters if self.queryform.is_valid(): relevant_parameters = self.queryform.apply(relevant_parameters) # Set scores to relevant parameters list self._set_parameters_scores(relevant_parameters, scores_rel) self._set_last_comment_url(relevant_parameters, scores_rel) if self.request.user.is_expert: # Non relevant parameters nonrelevant_parameters = Parameter.objects.filter(monitoring=monitoring, exclude=self.task.organization)\ .defer('grounds', 'rating_procedure', 'notes')\ .extra(**_param_extra) scores_nonrel = Score.objects.filter(task=self.task, parameter__exclude=self.task.organization)\ .defer('links', 'recommendations', 'created', 'last_modified', 'editor') nonrelevant_parameters_exist = nonrelevant_parameters.exists() # Apply user provided filters to non relevant parameters if self.queryform.is_valid(): nonrelevant_parameters = self.queryform.apply( nonrelevant_parameters) # Set scores to non relevant parameters list self._set_parameters_scores(nonrelevant_parameters, scores_nonrel) context.update({ 'nonrelevant_parameters': nonrelevant_parameters, 'nonrelevant_parameters_exist': nonrelevant_parameters_exist, }) # Get questionnaire form questionnaire_form = None questions = QQuestion.objects.filter( questionnaire__monitoring=monitoring).order_by("pk") if questions: existing_answers = QAnswer.objects.filter( task=self.task).order_by("pk") initial_data = { "q_%s" % a.question.pk: a.answer(True) for a in existing_answers } questionnaire_form = QuestionnaireDynForm(questions=questions, initial=initial_data) context.update({ 'relevant_parameters': relevant_parameters, 'relevant_parameters_exist': relevant_parameters_exist, 'mon': monitoring, 'task': self.task, 'questionnaire_form': questionnaire_form, 'invcodeform': SettingsInvCodeForm(), 'orgs_count': Organization.objects.filter(monitoring=monitoring).count(), 'openness': self.task.openness, 'delta': self.task.openness - self.task.openness_initial if self.task.openness is not None else None, 'columns_form': task_scores_columns_form(self.request), 'is_representative': self.request.user.represents(self.task.organization), }) return context
def post(self, request, *args, **kwargs): scores_table_columns_form = task_scores_columns_form(request) if scores_table_columns_form.post_ok(request): return HttpResponseRedirect(request.path) else: return HttpResponseBadRequest()