Ejemplo n.º 1
0
    def get_queryset(self):
        self.category_slug = self.kwargs.get('category_slug', 'all')
        all_category_slugs = settings_registry.get_registered_categories(
            features_enabled=get_licensed_features()).keys()
        for slug_to_delete in VERSION_SPECIFIC_CATEGORIES_TO_EXCLUDE[
                get_request_version(self.request)]:
            all_category_slugs.remove(slug_to_delete)
        if self.request.user.is_superuser or getattr(
                self.request.user, 'is_system_auditor', False):
            category_slugs = all_category_slugs
        else:
            category_slugs = {'user'}
        if self.category_slug not in all_category_slugs:
            raise Http404
        if self.category_slug not in category_slugs:
            raise PermissionDenied()

        registered_settings = settings_registry.get_registered_settings(
            category_slug=self.category_slug,
            read_only=False,
            features_enabled=get_licensed_features(),
            slugs_to_ignore=VERSION_SPECIFIC_CATEGORIES_TO_EXCLUDE[
                get_request_version(self.request)])
        if self.category_slug == 'user':
            return Setting.objects.filter(key__in=registered_settings,
                                          user=self.request.user)
        else:
            return Setting.objects.filter(key__in=registered_settings,
                                          user__isnull=True)
Ejemplo n.º 2
0
 def get_queryset(self):
     setting_categories = []
     categories = settings_registry.get_registered_categories(
         features_enabled=get_licensed_features())
     if self.request.user.is_superuser or self.request.user.is_system_auditor:
         pass  # categories = categories
     elif 'user' in categories:
         categories = {'user', _('User')}
     else:
         categories = {}
     for category_slug in sorted(categories.keys()):
         if category_slug in VERSION_SPECIFIC_CATEGORIES_TO_EXCLUDE[
                 get_request_version(self.request)]:
             continue
         url = reverse('api:setting_singleton_detail',
                       kwargs={'category_slug': category_slug},
                       request=self.request)
         setting_categories.append(
             SettingCategory(url, category_slug, categories[category_slug]))
     return setting_categories
Ejemplo n.º 3
0
 def get_object(self):
     settings_qs = self.get_queryset()
     registered_settings = settings_registry.get_registered_settings(
         category_slug=self.category_slug,
         features_enabled=get_licensed_features(),
         slugs_to_ignore=VERSION_SPECIFIC_CATEGORIES_TO_EXCLUDE[
             get_request_version(self.request)])
     all_settings = {}
     for setting in settings_qs:
         all_settings[setting.key] = setting.value
     for key in registered_settings:
         if key in all_settings or self.category_slug == 'changed':
             continue
         try:
             field = settings_registry.get_setting_field(
                 key, for_user=bool(self.category_slug == 'user'))
             all_settings[key] = field.get_default()
         except serializers.SkipField:
             all_settings[key] = None
     all_settings[
         'user'] = self.request.user if self.category_slug == 'user' else None
     obj = type('Settings', (object, ), all_settings)()
     self.check_object_permissions(self.request, obj)
     return obj