diff options
Diffstat (limited to 'chimere/models.py')
-rw-r--r-- | chimere/models.py | 53 |
1 files changed, 36 insertions, 17 deletions
diff --git a/chimere/models.py b/chimere/models.py index 755d43c..a37a548 100644 --- a/chimere/models.py +++ b/chimere/models.py @@ -193,6 +193,7 @@ class Category(models.Model): ordering = ["order"] verbose_name = _(u"Category") + class Icon(models.Model): '''Icon ''' @@ -201,11 +202,18 @@ class Icon(models.Model): height_field='height', width_field='width') height = models.IntegerField(_(u"Height")) width = models.IntegerField(_(u"Width")) + offset_x = models.IntegerField(_(u"Offset x"), default=10) + offset_y = models.IntegerField(_(u"Offset y"), default=20) + popup_offset_x = models.IntegerField(_(u"Popup offset x"), default=5) + popup_offset_y = models.IntegerField(_(u"Popup offset y"), default=20) + def __unicode__(self): return self.name + class Meta: verbose_name = _(u"Icon") + class SubCategory(models.Model): '''Sub-category ''' @@ -285,15 +293,20 @@ class SubCategory(models.Model): return cats def getJSONDict(self): - items = {'id':self.pk, 'name':self.name, - 'description':self.description if self.description\ - else '', - 'icon':{'url':self.icon.image.url, - 'width':self.icon.image.width, - 'height':self.icon.image.height} - } + items = {'id': self.pk, 'name': self.name, + 'description': self.description if self.description + else '', + 'icon': {'url': self.icon.image.url, + 'width': self.icon.image.width, + 'height': self.icon.image.height, + 'offset_x': self.icon.offset_x, + 'offset_y': self.icon.offset_y, + 'popup_offset_x': self.icon.popup_offset_x, + 'popup_offset_y': self.icon.popup_offset_y} + } + if self.hover_icon: - items['icon_hover'] = {'url':self.hover_icon.image.url} + items['icon_hover'] = {'url': self.hover_icon.image.url} return items def getJSON(self, categories_id=[]): @@ -698,22 +711,28 @@ class Marker(GeographicItem): '''Return a GeoJSON string ''' jsons = [] - json_tpl = {"type":"Feature", "properties":{}} + json_tpl = {"type": "Feature", "properties": {}} for cat in self.categories.all(): if categories_id and cat.id not in categories_id: continue items = copy.deepcopy(json_tpl) items['geometry'] = json.loads(self.point.geojson) items['properties'].update({ - 'pk':self.id, - 'name':self.name, - 'icon_path':unicode(cat.icon.image), - 'icon_hover_path':unicode(cat.hover_icon.image) \ - if cat.hover_icon else '', - 'category_name':cat.name}) + 'pk': self.id, + 'name': self.name, + 'icon_path': unicode(cat.icon.image), + 'icon_hover_path': unicode(cat.hover_icon.image) + if cat.hover_icon else '', + 'icon_offset_x': cat.icon.offset_x, + 'icon_offset_y': cat.icon.offset_y, + 'icon_popup_offset_x': cat.icon.popup_offset_x, + 'icon_popup_offset_y': cat.icon.popup_offset_y, + 'category_name': cat.name}) try: - items['properties'].update({'icon_width':cat.icon.image.width, - 'icon_height':cat.icon.image.height,}) + items['properties'].update( + {'icon_width': cat.icon.image.width, + 'icon_height': cat.icon.image.height, + }) except IOError: pass |