add json view for deputies

This commit is contained in:
Frédéric Péters 2011-10-03 16:41:52 +02:00
parent 86a7904499
commit c1feae1cdd
3 changed files with 51 additions and 0 deletions

View File

@ -34,6 +34,18 @@ class Address(Field):
fax = None
email = None
def as_dict(self):
return {
'title': self.title,
'street': self.street,
'zipcode': self.zipcode,
'city': self.city,
'phone1': self.phone1,
'phone2': self.phone2,
'fax': self.fax,
'email': self.email,
}
class IAddressWidget(IWidget):
pass

View File

@ -12,6 +12,14 @@
<!-- Grok the package to initialise schema interfaces and content classes -->
<grok:grok package="." />
<browser:page
for="themis.datatypes.deputy.IDeputy"
name="json"
class=".views.DeputyJson"
permission="zope2.View"
/>
<!-- Register an extension profile to make the product installable -->
<genericsetup:registerProfile
name="default"

31
themis/datatypes/views.py Normal file
View File

@ -0,0 +1,31 @@
import json
from Products.Five import BrowserView
class DeputyJson(BrowserView):
def __call__(self):
d = {
'firstname': self.context.firstname,
'lastname': self.context.lastname,
'active': self.context.active,
'sex': self.context.sex,
'polgroup': self.context.polgroup.to_object.title,
'district': self.context.district,
'birthplace': self.context.birthplace,
'bio': self.context.bio,
'picture': None, #XXX: link to picture
'website': self.context.website,
'degrees': self.context.degrees,
'mandates': self.context.mandates,
}
if self.context.birthdate:
d['birthdate'] = self.context.birthdate.strftime('%Y-%m-%d')
if self.context.private_address:
d['private_address'] = self.context.private_address.as_dict(),
if self.context.work_address:
d['work_address'] = self.context.work_address.as_dict(),
if self.context.work_address_2:
d['work_address_2'] = self.context.work_address_2.as_dict()
self.request.response.setHeader('Content-type', 'application/json')
return json.dumps(d)