summaryrefslogtreecommitdiff
path: root/chimere/models.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2016-08-02 19:00:45 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2016-08-02 19:00:45 +0200
commitfeaae2fb3ec146d0e184d13bbf38d5667a7ebca4 (patch)
tree8a51c745d7ed837ad3e28cf4aae7cc75399e38d0 /chimere/models.py
parentf33f91b23551c0e77232380025148b4ba7c02cb4 (diff)
downloadChimère-feaae2fb3ec146d0e184d13bbf38d5667a7ebca4.tar.bz2
Chimère-feaae2fb3ec146d0e184d13bbf38d5667a7ebca4.zip
Polygon: better management of aggregated colors
Diffstat (limited to 'chimere/models.py')
-rw-r--r--chimere/models.py34
1 files changed, 30 insertions, 4 deletions
diff --git a/chimere/models.py b/chimere/models.py
index 2f6999e..e3fa122 100644
--- a/chimere/models.py
+++ b/chimere/models.py
@@ -203,6 +203,14 @@ class Color(models.Model):
def __unicode__(self):
return self.code
+ @property
+ def color(self):
+ return self.code
+
+ @property
+ def inner_color(self):
+ return self.inner_code
+
class Category(models.Model):
"""Category of Point Of Interest (POI)
@@ -268,7 +276,8 @@ class SubCategory(models.Model):
Icon, verbose_name=_(u"Hover icon"), blank=True, null=True,
related_name='subcat_hovered')
color_theme = models.ForeignKey(ColorTheme, verbose_name=_(u"Color theme"),
- blank=True, null=True)
+ blank=True, null=True,
+ related_name='subcategories')
as_layer = models.BooleanField(_(u"Displayed in the layer menu"),
default=False)
weight_formula = models.TextField(_(u"Weight formula"), default="",
@@ -1083,14 +1092,31 @@ class AggregatedPolygon(models.Model):
managed = False
db_table = 'chimere_aggregated_polygons'
- def getGeoJSON(self, color="#000"):
+ def getGeoJSON(self, color="", inner_color=''):
'''Return a GeoJSON string
'''
- if '#' not in color:
- color = '#' + color
+ # get colors
+ if not color or not inner_color:
+ q = Color.objects.filter(
+ color_theme__subcategories=self.subcategory)
+ if not q.count():
+ if not color:
+ color = "rgba(0, 0, 255, 1)"
+ if not inner_color:
+ inner_color = 'rgba(255, 125, 0, 0.6)'
+ else:
+ # get the first
+ c = q.order_by('order').all()[0]
+ if not color:
+ color = c.color
+ if not inner_color:
+ inner_color = c.inner_color
+
attributes = {
'color': color, 'geometry': json.loads(self.polygon.geojson),
'type': "Feature", "properties": {
+ 'color': color,
+ 'inner_color': inner_color,
'key': "aggpoly-{}".format(self.pk),
"pk": self.id, "name": u'Aggregated polygon'}}
return json.dumps(attributes)