From 80ed95f91c60d6732684beb57388f878b452d946 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Laura=20Kl=C3=BCnder?= Date: Thu, 13 Jul 2017 18:54:49 +0200 Subject: [PATCH] implement access_restriction field in Editor --- src/c3nav/editor/forms.py | 8 +++++++- src/c3nav/mapdata/models/access.py | 12 ++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/c3nav/editor/forms.py b/src/c3nav/editor/forms.py index 4328f1a0..68f35e41 100644 --- a/src/c3nav/editor/forms.py +++ b/src/c3nav/editor/forms.py @@ -65,6 +65,12 @@ class EditorFormBase(ModelForm): if 'category' in self.fields: self.fields['category'].label_from_instance = lambda obj: obj.title + if 'access_restriction' in self.fields: + AccessRestriction = self.request.changeset.wrap_model('AccessRestriction') + + self.fields['access_restriction'].label_from_instance = lambda obj: obj.title + self.fields['access_restriction'].queryset = AccessRestriction.qs_for_request(self.request) + # parse titles self.titles = None if hasattr(self.instance, 'titles'): @@ -146,7 +152,7 @@ class EditorFormBase(ModelForm): def create_editor_form(editor_model): possible_fields = ['slug', 'name', 'altitude', 'category', 'width', 'groups', 'color', 'priority', - 'public', 'can_search', 'can_describe', 'outside', 'geometry', + 'access_restriction', 'can_search', 'can_describe', 'outside', 'geometry', 'single', 'allow_levels', 'allow_spaces', 'allow_areas', 'allow_pois', 'left', 'top', 'right', 'bottom'] field_names = [field.name for field in editor_model._meta.get_fields() if not field.one_to_many] diff --git a/src/c3nav/mapdata/models/access.py b/src/c3nav/mapdata/models/access.py index 6c855938..9429cffc 100644 --- a/src/c3nav/mapdata/models/access.py +++ b/src/c3nav/mapdata/models/access.py @@ -14,6 +14,12 @@ class AccessRestriction(TitledMixin, models.Model): verbose_name_plural = _('Access Restrictions') default_related_name = 'accessrestrictions' + @classmethod + def qs_for_request(cls, request): + if request.user.is_authenticated and request.user.is_superuser: + return cls.objects.all() + return cls.objects.none() + class AccessRestrictionMixin(SerializableMixin, models.Model): access_restriction = models.ForeignKey(AccessRestriction, null=True, blank=True, @@ -26,3 +32,9 @@ class AccessRestrictionMixin(SerializableMixin, models.Model): result = super()._serialize(**kwargs) result['access_restriction'] = self.access_restriction_id return result + + @classmethod + def qs_for_request(cls, request): + if request.user.is_authenticated and request.user.is_superuser: + return cls.objects.all() + return cls.objects.filter(access_restriction__isnull=True)