Adding rough address fields to deputy

This commit is contained in:
Frédéric Péters 2011-08-18 14:49:44 +02:00
parent 16ddfccc2d
commit 5bf5e3364b
2 changed files with 41 additions and 2 deletions

View File

@ -27,4 +27,6 @@
provides="themis.datatypes.deputy.INameFromPersonNames"
factory="themis.datatypes.deputy.NameFromPersonNames" />
<adapter factory=".deputy.AddressFieldWidget"/>
</configure>

View File

@ -2,8 +2,10 @@ import datetime
from five import grok
from zope import schema
from zope.interface import implements
from zope.component import adapts, provideAdapter
from zope.schema import Field
from zope.schema.interfaces import IField, IFromUnicode
from zope.interface import implements, implementer
from zope.component import adapts, adapter, provideAdapter
from z3c.relationfield.interfaces import IHasRelations
from z3c.relationfield.schema import RelationChoice
@ -15,10 +17,41 @@ from plone.namedfile.field import NamedImage
from plone.app.content.interfaces import INameFromTitle
from plone.directives import form, dexterity
from z3c.form.browser.text import TextWidget
from z3c.form.interfaces import IFormLayer, IFieldWidget
from z3c.form.widget import FieldWidget
from themis.datatypes.interfaces import MessageFactory as _
from themis.datatypes.polgroup import IPolGroup
class IAddress(IField):
title = schema.TextLine(title=_(u'Title'), required=False)
street = schema.TextLine(title=_(u'Street'), required=False)
zipcode = schema.TextLine(title=_(u'Zip'), required=False)
city = schema.TextLine(title=_(u'City'), required=False)
phone1 = schema.TextLine(title=_(u'Phone'), required=False)
phone2 = schema.TextLine(title=_(u'Phone 2'), required=False)
fax = schema.TextLine(title=_(u'Fax'), required=False)
email = schema.TextLine(title=_(u'Email'), required=False)
class Address(Field):
implements(IAddress, IFromUnicode)
def fromUnicode(self, str):
return None
def __str__(self):
return u'/'.join([x for x in (self.title, self.street, self.zipcode, self.city) if x])
@adapter(IAddress, IFormLayer)
@implementer(IFieldWidget)
def AddressFieldWidget(field, request):
"""IFieldWidget factory for Address."""
return FieldWidget(field, TextWidget(request))
class IDeputy(form.Schema):
firstname = schema.TextLine(title=_(u'First Name'))
lastname = schema.TextLine(title=_(u'Last Name'))
@ -38,6 +71,10 @@ class IDeputy(form.Schema):
degrees = schema.Text(title=_(u'Degrees'), required=False)
mandates = schema.Text(title=_(u'Other Mandates'), required=False)
private_address = Address(title=_(u'Private Address'), required=False)
work_address = Address(title=_(u'Work Address'), required=False)
work_address_2 = Address(title=_(u'Work Address (2)'), required=False)
class INameFromPersonNames(INameFromTitle):
def title():