diff --git a/composer/schema/browser/schema.py b/composer/schema/browser/schema.py index f659798..b895392 100644 --- a/composer/schema/browser/schema.py +++ b/composer/schema/browser/schema.py @@ -119,9 +119,10 @@ class FormManagerView(BaseView): def update(self): if self.isManageMode: return True - for tpl in self.context.getClientSchemas(): - self.context.request.response.redirect(absoluteURL(tpl, self.request)) - break + self.context.request.response.redirect(self.firstFormUrl()) + #for tpl in self.context.getClientSchemas(): + # self.context.request.response.redirect(absoluteURL(tpl, self.request)) + # break return False def overview(self, ignoreTemporary=True): @@ -137,6 +138,10 @@ class FormManagerView(BaseView): result.append(data) return result + def firstFormUrl(self): + for tpl in self.context.getClientSchemas(): + return absoluteURL(tpl, self.request) + class CheckoutView(BaseView): diff --git a/composer/schema/field.py b/composer/schema/field.py index f5a5551..ce06b16 100644 --- a/composer/schema/field.py +++ b/composer/schema/field.py @@ -290,6 +290,8 @@ class FileUploadFieldInstance(FieldInstance): class EmailFieldInstance(FieldInstance): def validate(self, value, data=None): + if not value and self.context.required: + self.setError('required_missing') if value and '@' not in value: self.setError('invalid_email_address') diff --git a/composer/schema/interfaces.py b/composer/schema/interfaces.py index a6dbdfa..2ee2ab4 100644 --- a/composer/schema/interfaces.py +++ b/composer/schema/interfaces.py @@ -77,6 +77,8 @@ class ISchemaFactory(Interface): class FieldType(SimpleTerm): + hidden = False + def __init__(self, value, token=None, title=None, **kw): super(FieldType, self).__init__(value, token, title) self.name = value