root/qPloneGoogleMaps/tags/0.2.0/field.py

Revision 396 (checked in by piv, 2 years ago)

added map widget, ...

  • Property svn:eol-style set to native
Line 
1 from ZPublisher import HTTPRequest
2 from AccessControl import ClassSecurityInfo
3 from Products.Archetypes import atapi
4 from Products.Archetypes.Widget import TypesWidget
5 from Products.Archetypes.Registry import registerField, registerWidget
6
7
8 class MapWidget(TypesWidget):
9
10     _properties = TypesWidget._properties.copy()
11     _properties.update({
12         'type': 'map',
13         'macro': 'map_widget',
14     })
15
16     security = ClassSecurityInfo()
17
18     security.declarePublic('process_form')
19     def process_form(self, instance, field, form, empty_marker=None, emptyReturnsMarker=False):
20         """ create tuple from latitude and longitude """
21         latitude = form.get('%s_latitude' % field.getName(), empty_marker)
22         longitude = form.get('%s_longitude' % field.getName(), empty_marker)
23         try:
24             latitude = float(latitude)
25             longitude = float(longitude)
26         except: pass
27         return (latitude, longitude),  {}
28
29
30 class MapField(atapi.ObjectField):
31
32     _properties = atapi.ObjectField._properties.copy()
33     _properties.update({
34         'widget'  : MapWidget,
35         'default' : None,
36     })
37
38 registerWidget(
39     MapWidget,
40     title='Map Coordinates',
41     used_for=('Products.field.MapField',)
42     )
43
44 registerField(
45     MapField,
46     title="MapField",
47     description=("Field that can store coordinate information (longitude, latitude)"
48                  "on the map")
49     )
Note: See TracBrowser for help on using the browser.