diff options
| -rw-r--r-- | chimere/main/admin.py | 6 | ||||
| -rw-r--r-- | chimere/main/models.py | 19 | ||||
| -rwxr-xr-x | chimere/scripts/upgrade.py | 50 | 
3 files changed, 57 insertions, 18 deletions
| diff --git a/chimere/main/admin.py b/chimere/main/admin.py index 969ca5f..4db36c2 100644 --- a/chimere/main/admin.py +++ b/chimere/main/admin.py @@ -23,7 +23,7 @@ Settings for administration pages  from chimere import settings  from chimere.main.models import Category, Icon, SubCategory, Marker, \ -                             PropertyModel, News, Route, Area, ColorTheme, Color +                  PropertyModel, News, Route, Area, ColorTheme, Color, RouteFile  from chimere.main.forms import MarkerAdminForm, RouteAdminForm, AreaAdminForm,\                                 NewsAdminForm, CategoryAdminForm  from chimere.main.widgets import TextareaWidget @@ -125,12 +125,16 @@ class ColorThemeAdmin(admin.ModelAdmin):  class IconAdmin(admin.ModelAdmin):      exclude = ['height', 'width'] +class RouteFileAdmin(admin.ModelAdmin): +    list_display = ['name', 'file_type'] +  # register of differents database fields  admin.site.register(News, NewsAdmin)  admin.site.register(Category, CategoryAdmin)  admin.site.register(Icon, IconAdmin)  admin.site.register(SubCategory, SubCategoryAdmin)  admin.site.register(Marker, MarkerAdmin) +admin.site.register(RouteFile, RouteFileAdmin)  admin.site.register(Route, RouteAdmin)  admin.site.register(PropertyModel)  admin.site.register(Area, AreaAdmin) diff --git a/chimere/main/models.py b/chimere/main/models.py index 3aefab8..3897fe9 100644 --- a/chimere/main/models.py +++ b/chimere/main/models.py @@ -294,7 +294,7 @@ class Marker(models.Model):                       'geometry':self.point.geojson,                       'icon_path':cat.icon.image,                       'icon_width':cat.icon.image.width, -                     'icon_height':cat.icon.image.height,}) +                     'icon_height':cat.icon.image.height,}              jsons.append(u'{"type":"Feature", "geometry":%(geometry)s, '\                  u'"properties":{"pk": %(id)d, "name": "%(name)s", '\                  u'"icon_path":"%(icon_path)s", "icon_width":%(icon_width)d, '\ @@ -306,12 +306,25 @@ class Marker(models.Model):                                                      self.categories.all()[0].id)          return settings.BASE_URL + 'ty/' + TinyUrl.getUrnByParameters(parameters) +class RouteFile(models.Model): +    name = models.CharField(_(u"Name"), max_length=150) +    raw_file = models.FileField(_(u"Raw file (gpx or kml)"), upload_to='upload') +    simplified_file = models.FileField(_(u"Simplified file"), +                        upload_to='upload', blank=True, null=True) +    TYPE = (('K', _(u'KML')), ('G', _(u'GPX'))) +    file_type = models.CharField(max_length=1, choices=TYPE) + +    def __unicode__(self): +        return self.name +  class Route(models.Model):      '''Route on the map      '''      name = models.CharField(_("Name"), max_length=150)      categories = SelectMultipleField(SubCategory)      route = RouteField(_("Route"), srid=settings.EPSG_DISPLAY_PROJECTION) +    associated_file = models.ForeignKey(RouteFile, blank=True, null=True, +                                        verbose_name=_(u"Associated file"))      picture = models.ImageField(_("Image"), upload_to='upload', blank=True,                            null=True, height_field='height', width_field='width')      height = models.IntegerField(_("Height"), blank=True, null=True) @@ -433,8 +446,8 @@ class SimpleArea:              equal_status = "='%s'" % status[0]          elif status:              equal_status = " in ('%s')" % "','".join(status) -        area = u"ST_GeometryFromText('POLYGON((%f %f,%f %f,%f %f,%f %f, %f %f'"\ -               u")), %d)" % (self.upper_left_corner.x, self.upper_left_corner.y, +        area = u"ST_GeometryFromText('POLYGON((%f %f,%f %f,%f %f,%f %f, %f %f"\ +              u"))', %d)" % (self.upper_left_corner.x, self.upper_left_corner.y,                            self.lower_right_corner.x, self.upper_left_corner.y,                            self.lower_right_corner.x, self.lower_right_corner.y,                            self.upper_left_corner.x, self.lower_right_corner.y, diff --git a/chimere/scripts/upgrade.py b/chimere/scripts/upgrade.py index 286842a..accb751 100755 --- a/chimere/scripts/upgrade.py +++ b/chimere/scripts/upgrade.py @@ -258,6 +258,42 @@ CREATE TABLE "main_%s_categories" (      transaction.commit_unless_managed()      print " * main_%s_categories created" % table +# -> version 1.2: associate point to route (for the future) +query = QUERY_CHECK_FIELD % ('main_marker', 'route_id') +cursor.execute(query) +transaction.commit_unless_managed() + +row = cursor.fetchone() +if not row: +    query_update = 'ALTER TABLE "main_marker" ADD COLUMN \ +"route_id" integer REFERENCES "main_route" ("id") DEFERRABLE INITIALLY DEFERRED' +    cursor.execute(query_update) +    transaction.commit_unless_managed() +    print " * route_id added to table main_marker." + +# -> version 1.3: file associated to routes +query = QUERY_CHECK_TABLE % 'main_routefile' +cursor.execute(query) +transaction.commit_unless_managed() + +row = cursor.fetchone() +if not row: +    query_create = """ +    CREATE TABLE "main_routefile" ( +            "id" serial NOT NULL PRIMARY KEY, +            "name" varchar(150) NOT NULL, +            "raw_file" varchar(100) NOT NULL, +            "simplified_file" varchar(100), +            "file_type" varchar(1) NOT NULL +            ) +    ; +    ALTER TABLE "main_route" ADD COLUMN +                 "associated_file_id" integer REFERENCES "main_routefile" ("id") +                                                  DEFERRABLE INITIALLY DEFERRED; +    """ +    cursor.execute(query_create) +    transaction.commit_unless_managed() +    print " * main_routefile created"  # early versions before 0.1: save route with wrong SRID  # only errors with default SRID is managed adapt the script for your SRID @@ -277,17 +313,3 @@ for route in routes:          route.save()  if changed:      print " * projections of routes corrected" - -# -> version 1.3: associate point to route (for the future) -query = QUERY_CHECK_FIELD % ('main_marker', 'route_id') -cursor.execute(query) -transaction.commit_unless_managed() - -row = cursor.fetchone() -if not row: -    query_update = 'ALTER TABLE "main_marker" ADD COLUMN \ -"route_id" integer REFERENCES "main_route" ("id") DEFERRABLE INITIALLY DEFERRED' -    cursor.execute(query_update) -    transaction.commit_unless_managed() -    print " * route_id added to table main_marker." - | 
