summaryrefslogtreecommitdiff
path: root/chimere/models.py
diff options
context:
space:
mode:
Diffstat (limited to 'chimere/models.py')
-rw-r--r--chimere/models.py53
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