Allow to change slug in admin sessions

This commit is contained in:
Raphael Michel
2018-10-09 09:19:36 +02:00
parent 3eea4d6945
commit ab336678ce
4 changed files with 20 additions and 4 deletions

View File

@@ -202,17 +202,22 @@ class EventMetaValueForm(forms.ModelForm):
class EventUpdateForm(I18nModelForm): class EventUpdateForm(I18nModelForm):
def clean_slug(self):
return self.instance.slug
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
self.change_slug = kwargs.pop('change_slug', False)
super().__init__(*args, **kwargs) super().__init__(*args, **kwargs)
self.fields['slug'].widget.attrs['readonly'] = 'readonly' if not self.change_slug:
self.fields['slug'].widget.attrs['readonly'] = 'readonly'
self.fields['location'].widget.attrs['rows'] = '3' self.fields['location'].widget.attrs['rows'] = '3'
self.fields['location'].widget.attrs['placeholder'] = _( self.fields['location'].widget.attrs['placeholder'] = _(
'Sample Conference Center\nHeidelberg, Germany' 'Sample Conference Center\nHeidelberg, Germany'
) )
def clean_slug(self):
if self.change_slug:
return self.cleaned_data['slug']
return self.instance.slug
class Meta: class Meta:
model = Event model = Event
localized_fields = '__all__' localized_fields = '__all__'

View File

@@ -35,6 +35,7 @@ class OrganizerUpdateForm(OrganizerForm):
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
self.domain = kwargs.pop('domain', False) self.domain = kwargs.pop('domain', False)
self.change_slug = kwargs.pop('change_slug', False)
kwargs.setdefault('initial', {}) kwargs.setdefault('initial', {})
self.instance = kwargs['instance'] self.instance = kwargs['instance']
if self.domain and self.instance: if self.domain and self.instance:
@@ -43,7 +44,8 @@ class OrganizerUpdateForm(OrganizerForm):
kwargs['initial'].setdefault('domain', initial_domain.domainname) kwargs['initial'].setdefault('domain', initial_domain.domainname)
super().__init__(*args, **kwargs) super().__init__(*args, **kwargs)
self.fields['slug'].widget.attrs['readonly'] = 'readonly' if not self.change_slug:
self.fields['slug'].widget.attrs['readonly'] = 'readonly'
if self.domain: if self.domain:
self.fields['domain'] = forms.CharField( self.fields['domain'] = forms.CharField(
max_length=255, max_length=255,
@@ -53,6 +55,8 @@ class OrganizerUpdateForm(OrganizerForm):
) )
def clean_slug(self): def clean_slug(self):
if self.change_slug:
return self.cleaned_data['slug']
return self.instance.slug return self.instance.slug
def save(self, commit=True): def save(self, commit=True):

View File

@@ -153,6 +153,12 @@ class EventUpdate(EventSettingsViewMixin, EventPermissionRequiredMixin, MetaData
'event': self.object.slug, 'event': self.object.slug,
}) })
def get_form_kwargs(self):
kwargs = super().get_form_kwargs()
if self.request.user.has_active_staff_session(self.request.session.session_key):
kwargs['change_slug'] = True
return kwargs
def post(self, request, *args, **kwargs): def post(self, request, *args, **kwargs):
form = self.get_form() form = self.get_form()
if form.is_valid() and self.sform.is_valid() and all([f.is_valid() for f in self.meta_forms]): if form.is_valid() and self.sform.is_valid() and all([f.is_valid() for f in self.meta_forms]):

View File

@@ -225,6 +225,7 @@ class OrganizerUpdate(OrganizerPermissionRequiredMixin, UpdateView):
kwargs = super().get_form_kwargs() kwargs = super().get_form_kwargs()
if self.request.user.has_active_staff_session(self.request.session.session_key): if self.request.user.has_active_staff_session(self.request.session.session_key):
kwargs['domain'] = True kwargs['domain'] = True
kwargs['change_slug'] = True
return kwargs return kwargs
def get_success_url(self) -> str: def get_success_url(self) -> str: