implement access_restriction field in Editor
This commit is contained in:
parent
11ff24cc49
commit
80ed95f91c
2 changed files with 19 additions and 1 deletions
|
@ -65,6 +65,12 @@ class EditorFormBase(ModelForm):
|
||||||
if 'category' in self.fields:
|
if 'category' in self.fields:
|
||||||
self.fields['category'].label_from_instance = lambda obj: obj.title
|
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
|
# parse titles
|
||||||
self.titles = None
|
self.titles = None
|
||||||
if hasattr(self.instance, 'titles'):
|
if hasattr(self.instance, 'titles'):
|
||||||
|
@ -146,7 +152,7 @@ class EditorFormBase(ModelForm):
|
||||||
|
|
||||||
def create_editor_form(editor_model):
|
def create_editor_form(editor_model):
|
||||||
possible_fields = ['slug', 'name', 'altitude', 'category', 'width', 'groups', 'color', 'priority',
|
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',
|
'single', 'allow_levels', 'allow_spaces', 'allow_areas', 'allow_pois',
|
||||||
'left', 'top', 'right', 'bottom']
|
'left', 'top', 'right', 'bottom']
|
||||||
field_names = [field.name for field in editor_model._meta.get_fields() if not field.one_to_many]
|
field_names = [field.name for field in editor_model._meta.get_fields() if not field.one_to_many]
|
||||||
|
|
|
@ -14,6 +14,12 @@ class AccessRestriction(TitledMixin, models.Model):
|
||||||
verbose_name_plural = _('Access Restrictions')
|
verbose_name_plural = _('Access Restrictions')
|
||||||
default_related_name = 'accessrestrictions'
|
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):
|
class AccessRestrictionMixin(SerializableMixin, models.Model):
|
||||||
access_restriction = models.ForeignKey(AccessRestriction, null=True, blank=True,
|
access_restriction = models.ForeignKey(AccessRestriction, null=True, blank=True,
|
||||||
|
@ -26,3 +32,9 @@ class AccessRestrictionMixin(SerializableMixin, models.Model):
|
||||||
result = super()._serialize(**kwargs)
|
result = super()._serialize(**kwargs)
|
||||||
result['access_restriction'] = self.access_restriction_id
|
result['access_restriction'] = self.access_restriction_id
|
||||||
return result
|
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)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue