more on composer.schema: use for loops password change

git-svn-id: svn://svn.cy55.de/Zope3/src/cybertools/trunk@2089 fd906abe-77d9-0310-91a1-e0d9ade77398
This commit is contained in:
helmutm 2007-10-07 15:18:33 +00:00
parent 31bddf189d
commit f5b4675a3d
6 changed files with 27 additions and 9 deletions

View file

@ -166,5 +166,5 @@ Macros / renderers
>>> fieldRenderers = form.fieldRenderers
>>> sorted(fieldRenderers.keys())
[u'field', u'field_spacer', u'fields', u'input_dropdown', u'input_fileupload',
u'input_password', u'input_textarea', u'input_textline']
[u'field', u'field_spacer', u'fields', u'form', u'input_dropdown',
u'input_fileupload', u'input_password', u'input_textarea', u'input_textline']

View file

@ -48,13 +48,11 @@ class Form(object):
self.context = context
self.request = request
@Lazy
def schemaMacros(self):
return schema_macros.macros
# proof-of-concept - get a dictionary of renderers (macros) via adaptatation
@Lazy
def fieldRenderers(self):
""" proof-of-concept - get a dictionary of renderers (macros) via
adaptatation.
"""
return IRenderers(self)
@Lazy

View file

@ -3,10 +3,28 @@
<body>
<metal:form define-macro="form">
<h1 i18n:translate=""
tal:content="view/label | default">Edit</h1>
<div>
<form method="post">
<input type="hidden" name="action" value="update" />
<br />
<metal:fields use-macro="view/fieldRenderers/fields" />
<br />
<input type="submit" name="submit" value="Save"
i18n:attributes="value"
tal:attributes="value view/label_submit | string:Save" />
</form>
</div>
</metal:form>
<metal:fields define-macro="fields">
<tal:define define="manageMode manageMode|view/manageMode|nothing;
fields view/fields;
data view/data">
data view/data;
state view/formState">
<table style="width: 100%">
<tal:fields repeat="field fields">
<tal:field define="name field/name;

View file

@ -39,6 +39,7 @@ class SchemaFactory(object):
fieldMapping = {
schema.TextLine: ('textline',),
schema.Password: ('password',),
schema.ASCII: ('textline',),
schema.Text: ('textarea',),
schema.Date: ('date',),

View file

@ -121,7 +121,7 @@ class FieldInstance(object):
if not value and self.context.required:
self.setError('required_missing')
def setError(self, errorName):
def setError(self, errorName, formErrors=formErrors):
error = formErrors[errorName]
self.errors.append(error)
self.severity = max(error.severity, self.severity)

View file

@ -82,6 +82,7 @@ class FieldType(SimpleTerm):
fieldTypes = SimpleVocabulary((
FieldType('textline', 'textline', u'Textline'),
FieldType('password', 'password', u'Password'),
FieldType('textarea', 'textarea', u'Textarea'),
FieldType('number', 'number', u'Number',
inputRenderer='input_textline', instanceName='number'),