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, 30 insertions, 23 deletions
diff --git a/chimere/models.py b/chimere/models.py
index 12ec7a1..924fd54 100644
--- a/chimere/models.py
+++ b/chimere/models.py
@@ -248,6 +248,8 @@ class Importer(models.Model):
verbose_name=_(u"Associated subcategories"))
state = models.CharField(_(u"State"), max_length=200,
blank=True, null=True)
+ associate_marker_to_way = models.BooleanField(_(u"Automatically associate "\
+ u"a marker to a way"), default=False)
class Meta:
verbose_name = _(u"Importer")
@@ -848,6 +850,8 @@ class Route(GeographicItem):
null=True, height_field='height', width_field='width')
height = models.IntegerField(_(u"Height"), blank=True, null=True)
width = models.IntegerField(_(u"Width"), blank=True, null=True)
+ has_associated_marker = models.BooleanField(_(u"Has an associated marker"),
+ default=True)
objects = models.GeoManager()
def __unicode__(self):
@@ -952,28 +956,31 @@ def route_post_save(sender, **kwargs):
return
geometry_post_save(pre_save_route_values)(sender, **kwargs)
instance = kwargs['instance']
- marker_fields = [f.attname for f in Marker._meta.fields]
- route_fields = [f.attname for f in Route._meta.fields]
- marker_dct = dict([(k, getattr(instance, k)) for k in marker_fields
- if k in route_fields and k not in ('id', 'ref_item_id')])
- marker_dct['point'] = "SRID=%d;POINT(%f %f)" % (instance.route.srid,
- instance.route[0][0], instance.route[0][1])
- marker, created = Marker.objects.get_or_create(route=instance,
- defaults=marker_dct)
- if not created:
- marker.status = instance.status
- marker.point = marker_dct['point']
- marker.save()
- properties = {}
- for pm in instance.properties():
- prop = instance.getProperty(pm)
- if prop:
- properties[pm.pk] = prop.python_value
- # fix mis-initialized markers
- if created:
- for cat in instance.categories.all():
- marker.categories.add(cat)
- marker.saveProperties(properties)
+
+ # manage associated marker
+ if instance.has_associated_marker:
+ marker_fields = [f.attname for f in Marker._meta.fields]
+ route_fields = [f.attname for f in Route._meta.fields]
+ marker_dct = dict([(k, getattr(instance, k)) for k in marker_fields
+ if k in route_fields and k not in ('id', 'ref_item_id')])
+ marker_dct['point'] = "SRID=%d;POINT(%f %f)" % (instance.route.srid,
+ instance.route[0][0], instance.route[0][1])
+ marker, created = Marker.objects.get_or_create(route=instance,
+ defaults=marker_dct)
+ if not created:
+ marker.status = instance.status
+ marker.point = marker_dct['point']
+ marker.save()
+ properties = {}
+ for pm in instance.properties():
+ prop = instance.getProperty(pm)
+ if prop:
+ properties[pm.pk] = prop.python_value
+ # fix mis-initialized markers
+ if created:
+ for cat in instance.categories.all():
+ marker.categories.add(cat)
+ marker.saveProperties(properties)
post_save.connect(route_post_save, sender=Route)
@@ -982,7 +989,7 @@ def sync_m2m_route(sender, **kwargs):
return
route = kwargs['instance']
marker = route.associated_marker
- if not marker.count:
+ if not marker.count():
return
marker = marker.all()[0]
marker.categories.clear()