Ejemplo n.º 1
0
    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
Ejemplo n.º 2
0
    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
Ejemplo n.º 3
0
 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()
Ejemplo n.º 4
0
 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()