def services(self, request, pk=None):
        settings = models.ServiceSettings.objects.get(id=pk)
        projects = {}

        spl_model = SupportedServices.get_related_models(
            settings)['service_project_link']
        for spl in spl_model.objects.filter(service__settings=settings):
            projects.setdefault(
                spl.project.id,
                {
                    'name': str(spl.project),
                    'url': get_admin_url(spl.project),
                    'services': [],
                },
            )
            projects[spl.project.id]['services'].append({
                'name':
                str(spl.service),
                'url':
                get_admin_url(spl.service),
            })

        return render(
            request,
            'structure/service_settings_entities.html',
            {'projects': projects.values()},
        )
Exemple #2
0
    def clean(self):
        if not self.service:
            raise ValidationError(_('Service is not defined.'))

        if SupportedServices.is_public_service(self.service):
            raise ValidationError(_('Public service does not support price list items.'))

        resource = self.default_price_list_item.resource_content_type.model_class()
        valid_resources = SupportedServices.get_related_models(self.service)['resources']

        if resource not in valid_resources:
            raise ValidationError(_('Service does not support required content type.'))
Exemple #3
0
    def get_queryset(self):
        queryset = models.DefaultPriceListItem.objects.all()
        service = self._find_service()
        if service:
            # Filter items by resource type
            resources = SupportedServices.get_related_models(service)['resources']
            content_types = ContentType.objects.get_for_models(*resources).values()
            queryset = queryset.filter(resource_content_type__in=content_types)

            # Attach service-specific items
            price_list_items = models.PriceListItem.objects.filter(service=service)
            prefetch = Prefetch('pricelistitem_set', queryset=price_list_items, to_attr='service_item')
            queryset = queryset.prefetch_related(prefetch)
        return queryset
 def get_spl_model(self):
     """
     Get service project link model used by resource model using service registry.
     """
     return SupportedServices.get_related_models(
         self.get_resource_model())['service_project_link']
Exemple #5
0
 def get_service_model(self, offering_type):
     resource_model = self.get_resource_model(offering_type)
     return SupportedServices.get_related_models(resource_model)['service']