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)
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
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