diff options
Diffstat (limited to 'mediagoblin/edit/forms.py')
-rw-r--r-- | mediagoblin/edit/forms.py | 42 |
1 files changed, 31 insertions, 11 deletions
diff --git a/mediagoblin/edit/forms.py b/mediagoblin/edit/forms.py index c0bece8b..83e83c3c 100644 --- a/mediagoblin/edit/forms.py +++ b/mediagoblin/edit/forms.py @@ -24,8 +24,20 @@ from mediagoblin.tools.metadata import DEFAULT_SCHEMA, DEFAULT_CHECKER from mediagoblin.auth.tools import normalize_user_or_email_field +class WebsiteField(wtforms.StringField): + """A field that expects a website URL but adds http:// if not provided.""" + def process_formdata(self, valuelist): + if valuelist: + data = valuelist[0] + if not data.startswith((u'http://', u'https://')): + data = u'http://' + data + self.data = data + else: + super(WebsiteField, self).process_formdata(valuelist) + + class EditForm(wtforms.Form): - title = wtforms.TextField( + title = wtforms.StringField( _('Title'), [wtforms.validators.Length(min=0, max=500)]) description = wtforms.TextAreaField( @@ -33,12 +45,12 @@ class EditForm(wtforms.Form): description=_("""You can use <a href="http://daringfireball.net/projects/markdown/basics"> Markdown</a> for formatting.""")) - tags = wtforms.TextField( + tags = wtforms.StringField( _('Tags'), [tag_length_validator], description=_( "Separate tags by commas.")) - slug = wtforms.TextField( + slug = wtforms.StringField( _('Slug'), [wtforms.validators.InputRequired(message=_("The slug can't be empty"))], description=_( @@ -49,6 +61,7 @@ class EditForm(wtforms.Form): [wtforms.validators.Optional(),], choices=licenses_as_choices()) + class EditProfileForm(wtforms.Form): bio = wtforms.TextAreaField( _('Bio'), @@ -56,10 +69,14 @@ class EditProfileForm(wtforms.Form): description=_("""You can use <a href="http://daringfireball.net/projects/markdown/basics"> Markdown</a> for formatting.""")) - url = wtforms.TextField( + url = WebsiteField( _('Website'), [wtforms.validators.Optional(), - wtforms.validators.URL(message=_("This address contains errors"))]) + wtforms.validators.URL(message=_("This address contains errors"))], + description=_("www.example.com, http://www.example.com or " + "https://www.example.com")) + + location = wtforms.StringField(_('Hometown')) class EditAccountForm(wtforms.Form): @@ -78,14 +95,14 @@ class EditAccountForm(wtforms.Form): class EditAttachmentsForm(wtforms.Form): - attachment_name = wtforms.TextField( + attachment_name = wtforms.StringField( 'Title') attachment_file = wtforms.FileField( 'File') class EditCollectionForm(wtforms.Form): - title = wtforms.TextField( + title = wtforms.StringField( _('Title'), [wtforms.validators.Length(min=0, max=500), wtforms.validators.InputRequired(message=_("The title can't be empty"))]) description = wtforms.TextAreaField( @@ -93,7 +110,7 @@ class EditCollectionForm(wtforms.Form): description=_("""You can use <a href="http://daringfireball.net/projects/markdown/basics"> Markdown</a> for formatting.""")) - slug = wtforms.TextField( + slug = wtforms.StringField( _('Slug'), [wtforms.validators.InputRequired(message=_("The slug can't be empty"))], description=_( @@ -115,7 +132,7 @@ class ChangePassForm(wtforms.Form): class ChangeEmailForm(wtforms.Form): - new_email = wtforms.TextField( + new_email = wtforms.StringField( _('New email address'), [wtforms.validators.InputRequired(), normalize_user_or_email_field(allow_user=False)]) @@ -125,6 +142,7 @@ class ChangeEmailForm(wtforms.Form): description=_( "Enter your password to prove you own this account.")) + class MetaDataValidator(object): """ Custom validator which runs form data in a MetaDataForm through a jsonschema @@ -151,9 +169,11 @@ class MetaDataValidator(object): raise wtforms.validators.ValidationError( errors.pop()) + class MetaDataForm(wtforms.Form): - identifier = wtforms.TextField(_(u'Identifier'),[MetaDataValidator()]) - value = wtforms.TextField(_(u'Value')) + identifier = wtforms.StringField(_(u'Identifier'),[MetaDataValidator()]) + value = wtforms.StringField(_(u'Value')) + class EditMetaDataForm(wtforms.Form): media_metadata = wtforms.FieldList( |