diff options
| author | Étienne Loks <etienne.loks@peacefrogs.net> | 2012-09-17 11:06:56 +0200 | 
|---|---|---|
| committer | Étienne Loks <etienne.loks@peacefrogs.net> | 2012-09-17 11:06:56 +0200 | 
| commit | 432e3ee5db3745502e47091199d9677f00d69339 (patch) | |
| tree | d0204ee4f4a328d9bb5589be6fbc548047ba4a32 /chimere/models.py | |
| parent | 36a48459497807c9299ef953f6fb8f6f8aa13f3d (diff) | |
| download | Chimère-432e3ee5db3745502e47091199d9677f00d69339.tar.bz2 Chimère-432e3ee5db3745502e47091199d9677f00d69339.zip  | |
Fixes for OSM export
Diffstat (limited to 'chimere/models.py')
| -rw-r--r-- | chimere/models.py | 43 | 
1 files changed, 42 insertions, 1 deletions
diff --git a/chimere/models.py b/chimere/models.py index c6c4498..19c99eb 100644 --- a/chimere/models.py +++ b/chimere/models.py @@ -33,7 +33,7 @@ from django.contrib import admin  from django.core.files import File  from django.core.exceptions import ValidationError  from django.core.urlresolvers import reverse -from django.db.models.signals import post_save +from django.db.models.signals import post_save, pre_save  from django import forms  from django.template import defaultfilters  from django.utils.translation import ugettext_lazy as _ @@ -254,6 +254,10 @@ class GeographicItem(models.Model):                                           blank=True, null=True)      import_source = models.CharField(_(u"Source"), max_length=200,                                       blank=True, null=True) +    modified_since_import = models.BooleanField(_(u"Modified since last import"), +                                                default=False) +    not_for_osm = models.BooleanField(_(u"Not to be imported inside OSM"), +                                      default=False)      if settings.CHIMERE_DAYS_BEFORE_EVENT:          start_date = models.DateField(_(u"Start date"), blank=True, null=True,              help_text=_(u"Not mandatory. Set it for dated item such as event. "\ @@ -439,6 +443,33 @@ class Marker(GeographicItem):          url = reverse('chimere:tiny', args=[area_name, urn])          return url +pre_save_marker_values = {} +def marker_pre_save(sender, **kwargs): +    if not kwargs['instance']: +        return +    instance = kwargs['instance'] +    pre_save_marker_values[instance.pk] = (instance.name, instance.point, +                                           instance.import_version) +pre_save.connect(marker_pre_save, sender=Marker) + +def geometry_post_save(pre_save_geom_values): +    def geom_post_save(sender, **kwargs): +        if not kwargs['instance']: +            return +        instance = kwargs['instance'] +        name, geometry, import_version = pre_save_geom_values[instance] +        if (instance.import_version != import_version +           and instance.modified_since_import): +            instance.modified_since_import = False +            instance.save() +            return +        if instance.modified_since_import: +            return +        if instance.name != name or instance.geometry != geometry: +            instance.modified_since_import = True +    return geom_post_save +post_save.connect(geometry_post_save(pre_save_marker_values), sender=Marker) +  class MultimediaType(models.Model):      MEDIA_TYPES = (('A', _(u"Audio")),                     ('V', _(u"Video")), @@ -781,6 +812,16 @@ class Route(GeographicItem):                                                            self.categories[0].id)          return TinyUrl.getUrnByParameters(parameters) +pre_save_route_values = {} +def route_pre_save(sender, **kwargs): +    if not kwargs['instance']: +        return +    instance = kwargs['instance'] +    pre_save_route_values[instance.pk] = (instance.name, instance.route, +                                          instance.import_version) +pre_save.connect(route_pre_save, sender=Route) +post_save.connect(geometry_post_save(pre_save_route_values), sender=Route) +  def getDateCondition():      '''      Return an SQL condition for apparition of dates  | 
