class FormStatic(ModelForm): class Meta: model = UserSite fields = ('main_domain', 'misc_domains', 'document_root',) widgets = { 'document_root': forms.Select } def __init__(self, *args, **kwargs): self.user = kwargs.pop('user') self.helper = RostiFormHelper() self.helper.form_class = 'dyn_refresh' super(FormStatic, self).__init__(*args, **kwargs) layout = Layout() if 'script' in self.fields: layout.fields.append( PrependedText('script', '<div class="ajax_refresh" data-el="script" data-target="%s"><span class="status"></span></div>' % reverse('refresh_wsgi')), ) if 'virtualenv' in self.fields: layout.fields.append( PrependedText('virtualenv', '<div class="ajax_refresh" data-el="virtualenv" data-target="%s"><span class="status"></span></div>' % reverse('refresh_venv')), ) if 'document_root' in self.fields: layout.fields.append( PrependedText('document_root', '<div class="ajax_refresh" data-el="document_root" data-target="%s"><span class="status"></span></div>' % reverse('refresh_userdirs')), ) self.helper.add_layout(layout) if 'document_root' in self.fields: user_dirs = user_directories(user=self.user, use_cache=True) dirs_choices = [("", _("Not selected"))] + [(x, x) for x in user_dirs] self.fields['document_root'].widget.choices = dirs_choices def clean_document_root(self): if ".." in self.cleaned_data["document_root"] or\ "~" in self.cleaned_data["document_root"]: raise forms.ValidationError( _("This field hasn't to contain .. and ~")) return self.cleaned_data["document_root"] def clean(self): data = self.cleaned_data main_domain = data['main_domain'] if 'misc_domains' in data and main_domain in data['misc_domains']: raise forms.ValidationError( _("Main domain cannot be listed also as misc. domain")) return data
class FormStatic(ModelForm): class Meta: model = UserSite fields = ('main_domain', 'misc_domains', 'document_root',) widgets = { 'document_root': forms.Select } def __init__(self, *args, **kwargs): self.user = kwargs.pop('user') self.helper = RostiFormHelper() self.helper.form_class = 'dyn_refresh' super(FormStatic, self).__init__(*args, **kwargs) layout = Layout() if 'script' in self.fields: layout.fields.append( PrependedText('script', '<div class="ajax_refresh" data-el="script" data-target="%s"><span class="status"></span></div>' % reverse('refresh_wsgi')), ) if 'virtualenv' in self.fields: layout.fields.append( PrependedText('virtualenv', '<div class="ajax_refresh" data-el="virtualenv" data-target="%s"><span class="status"></span></div>' % reverse('refresh_venv')), ) if 'document_root' in self.fields: layout.fields.append( PrependedText('document_root', '<div class="ajax_refresh" data-el="document_root" data-target="%s"><span class="status"></span></div>' % reverse('refresh_userdirs')), ) self.helper.add_layout(layout) if 'document_root' in self.fields: user_dirs = user_directories(user=self.user, use_cache=True) dirs_choices = [("", _("Not selected"))] + [(x, x) for x in user_dirs] self.fields['document_root'].widget.choices = dirs_choices def clean_document_root(self): if ".." in self.cleaned_data["document_root"] or\ "~" in self.cleaned_data["document_root"]: raise forms.ValidationError( _("This field hasn't to contain .. and ~")) return self.cleaned_data["document_root"] def clean(self): data = self.cleaned_data try: main_domain = data['main_domain'] except KeyError: raise forms.ValidationError( _("Main domain has to be filled")) if 'misc_domains' in data and main_domain in data['misc_domains']: raise forms.ValidationError( _("Main domain cannot be listed also as misc. domain")) return data