Esempio n. 1
0
 def test__rating_type_parameter(self, rating_type_initial, has_npa, expected_parameters_len):
     # WHEN rating type in ('all', 'npa', 'other')
     self.request.GET = {'type': rating_type_initial}
     rating_type, parameter_list, form = _rating_type_parameter(self.request, self.monitoring, has_npa)
     # THEN function returns the same rating type
     self.assertEqual(rating_type_initial, rating_type)
     # AND expected count of parameters
     self.assertEqual(len(parameter_list), expected_parameters_len)
     # AND form without data
     self.assertTrue(isinstance(form, ParameterDynForm))
     self.assertEqual(form.data, {})
Esempio n. 2
0
 def test__rating_type_parameter_user(self, rating_type_initial, expected_parameters_len, has_npa):
     # WHEN rating type is 'user'
     self.request.GET = {'type': rating_type_initial}
     # AND we have query string in url
     for param in Parameter.objects.all():
         key = 'parameter_%s' % param.pk
         self.request.GET.update({key: 'on'})
     uri = urllib.urlencode(self.request.GET)
     self.request.META['QUERY_STRING'] = uri
     rating_type, parameter_list, form = _rating_type_parameter(self.request, self.monitoring, has_npa)
     # THEN function returns the same rating type
     self.assertEqual(rating_type_initial, rating_type)
     # AND expected count of parameters
     self.assertEqual(len(parameter_list), expected_parameters_len)
     # AND form without data
     self.assertTrue(isinstance(form, ParameterDynForm))
     self.assertEqual(form.data, self.request.GET)
Esempio n. 3
0
    def get_context_data(self, form, **kwargs):
        context = super(CertificateOrderView, self).get_context_data(form=form, **kwargs)
        first_step = self.steps.first
        request = self.request
        rating_type = request.GET.get('type', 'all')

        if self.steps.current == first_step:
            context_data = {}
            organizations = request.user.profile.organization.filter(monitoring__status=MONITORING_PUBLISHED)
            tasks = Task.objects.filter(organization__in=organizations, status=Task.TASK_APPROVED)

            if tasks.exists():
                has_npa = organizations.filter(monitoring__parameter__npa=True)

                name_filter = request.GET.get('name_filter')
                if name_filter:
                    tasks = tasks.filter(organization__name__icontains=name_filter)
                    has_npa = has_npa.filter(name__icontains=name_filter)

                if rating_type in ['npa', 'other']:
                    tasks = tasks.filter(organization__monitoring__parameter__npa=True).distinct()

                object_list = OrderedDict()

                for task in tasks:
                    monitoring = task.organization.monitoring
                    rating_type, parameter_list, form = _rating_type_parameter(request, monitoring, monitoring.has_npa)
                    rating_list, avg = rating(monitoring, parameters=parameter_list, rating_type=rating_type)
                    place = {t.pk: t.place for t in rating_list}.get(task.pk, None)

                    object_list[task.pk] = {
                        'openness': task.openness,
                        'org_name': task.organization.name,
                        'place': place,
                        'publish_date': task.organization.monitoring.publish_date,
                        'url': task.organization.url,
                    }

                context_data = {
                    'has_npa': has_npa,
                    'object_list': object_list,
                    'rating_type': rating_type,
                }

                self.storage.extra_data = {'object_list': object_list}

        else:
            by_type = {
                'all': _('by all'),
                'npa': _('by normative'),
                'other': _('by recommendatory'),
            }

            form_data = self.get_cleaned_data_for_step(first_step)
            task = self.storage.extra_data['object_list'].get(form_data['task_id'])

            description = _('For %(name)s organization, which took %(place)d place with %(openness).3f%% openness in '
                            'rating %(type)s parameters, which published %(date)s.') %\
                {
                    'name': task['org_name'],
                    'place': task['place'],
                    'openness': task['openness'],
                    'type': by_type[rating_type],
                    'date': dateformat.format(task['publish_date'], "j E Y"),
                }

            if form_data['delivery_method'] == "1":
                on_address = _('On address %(zip_code)s, %(address)s, %(for_whom)s.') % \
                    {
                        'zip_code': form_data['zip_code'],
                        'address': form_data['address'],
                        'for_whom': form_data['for_whom'],
                    }
            else:
                on_address = _('On email address %s.') % form_data['email']

                context_data = {
                    'description': description,
                    'on_address': on_address,
                    'special_wishes': form_data['wishes'],
                    'breadcrumbs': [{'url': reverse('exmo2010:index')},
                                    {'url': reverse('exmo2010:certificate_order'), 'title': _('Openness certificate')},
                                    {'title': _('Confirmation of a certificate ordering')}]
                }

            if form_data['certificate_for'] == "1":
                prepare_for = _('Prepare a certificate in the name of %s.') % form_data['name']
                context_data.update({'prepare_for': prepare_for})

        title = _('Openness certificate')

        if self.steps.current != first_step:
            self.storage.extra_data.update({'email_context': context_data})
            title = _('Confirmation of a certificate ordering')

        context_data.update({
            'title': title,
        })
        context.update(context_data)

        return context