示例#1
0
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
示例#2
0
文件: forms.py 项目: seanchen/pcp
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