Adding rough address fields to deputy
This commit is contained in:
parent
16ddfccc2d
commit
5bf5e3364b
|
@ -27,4 +27,6 @@
|
|||
provides="themis.datatypes.deputy.INameFromPersonNames"
|
||||
factory="themis.datatypes.deputy.NameFromPersonNames" />
|
||||
|
||||
<adapter factory=".deputy.AddressFieldWidget"/>
|
||||
|
||||
</configure>
|
||||
|
|
|
@ -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():
|
||||
|
|
Reference in New Issue