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, {})
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)
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