provide list field instance for schema.List, use for Person.phoneNumbers; add actions for creating Person and Address objects

git-svn-id: svn://svn.cy55.de/Zope3/src/loops/trunk@2660 fd906abe-77d9-0310-91a1-e0d9ade77398
This commit is contained in:
helmutm 2008-06-01 09:30:36 +00:00
parent e07afbccb0
commit 580838acb8
7 changed files with 79 additions and 6 deletions

View file

@ -21,7 +21,7 @@
<metal:fields define-macro="conceptfields">
<fieldset class="box"
tal:define="data item/data;
tal:define="data item/getData;
values python: [v for v in data.values() if v];
fields item/fields"
tal:condition="values">

View file

@ -314,6 +314,8 @@
name="email" />
<adapter factory="cybertools.composer.schema.field.BooleanFieldInstance"
name="boolean" />
<adapter factory="cybertools.composer.schema.field.ListFieldInstance"
name="list" />
<adapter factory="cybertools.composer.schema.field.FileUploadFieldInstance"
name="fileupload" />

View file

@ -37,8 +37,7 @@ from loops.browser.common import BaseView
from loops.browser.concept import ConceptView
from loops.knowledge.interfaces import IPerson, ITask
from loops.organize.party import getPersonForUser
_ = MessageFactory('zope')
from loops.util import _
actions.register('createTopic', 'portlet', DialogAction,

View file

@ -1,3 +1,6 @@
"""
$Id$
"""
# make sure actions get registered
import party

68
organize/browser/party.py Normal file
View file

@ -0,0 +1,68 @@
#
# Copyright (c) 2008 Helmut Merz helmutm@cy55.de
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
"""
Definition of view classes and other browser related stuff (e.g. actions) for
loops.organize.party.
$Id$
"""
from zope import interface, component
from zope.cachedescriptors.property import Lazy
from cybertools.browser.action import actions
from loops.browser.action import DialogAction
from loops.util import _
actions.register('createPerson', 'portlet', DialogAction,
title=_(u'Create Person...'),
description=_(u'Create a new person.'),
viewName='create_concept.html',
dialogName='createPerson',
typeToken='.loops/concepts/person',
fixedType=True,
innerForm='inner_concept_form.html',
prerequisites=['registerDojoDateWidget'],
)
actions.register('editPerson', 'portlet', DialogAction,
title=_(u'Edit Person...'),
description=_(u'Modify person.'),
viewName='edit_concept.html',
dialogName='editPerson',
prerequisites=['registerDojoDateWidget'],
)
actions.register('createAddress', 'portlet', DialogAction,
title=_(u'Create Address...'),
description=_(u'Create a new address.'),
viewName='create_concept.html',
dialogName='createAddress',
typeToken='.loops/concepts/address',
fixedType=True,
innerForm='inner_concept_form.html',
)
actions.register('editAddress', 'portlet', DialogAction,
title=_(u'Edit Address...'),
description=_(u'Modify address.'),
viewName='edit_concept.html',
dialogName='editAddress',
)

View file

@ -37,8 +37,8 @@ class PersonSchemaFactory(SchemaFactory):
def __call__(self, interface, **kw):
schema = super(PersonSchemaFactory, self).__call__(interface, **kw)
if 'phoneNumbers' in schema.fields.keys():
schema.fields.phoneNumbers.instance_name ='simplelist'
#if 'phoneNumbers' in schema.fields.keys():
# schema.fields.phoneNumbers.instance_name ='simplelist'
if 'birthDate' in schema.fields.keys():
schema.fields.birthDate.display_format = ('date', 'long')
return schema

View file

@ -32,7 +32,7 @@ from cybertools.catalog.keyword import KeywordIndex
from cybertools.composer.schema.factory import SchemaFactory
from cybertools.composer.schema.field import FieldInstance, NumberFieldInstance
from cybertools.composer.schema.field import DateFieldInstance, BooleanFieldInstance
from cybertools.composer.schema.field import EmailFieldInstance
from cybertools.composer.schema.field import EmailFieldInstance, ListFieldInstance
from cybertools.composer.schema.instance import Instance, Editor
from cybertools.relation.tests import IntIdsStub
from cybertools.relation.registry import RelationRegistry
@ -131,6 +131,7 @@ class TestSite(object):
component.provideAdapter(DateFieldInstance, name='date')
component.provideAdapter(EmailFieldInstance, name='email')
component.provideAdapter(BooleanFieldInstance, name='boolean')
component.provideAdapter(ListFieldInstance, name='list')
component.provideAdapter(SchemaFactory)
component.provideAdapter(ResourceSchemaFactory)
component.provideAdapter(FileSchemaFactory)