summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--chimere/main/admin.py6
-rw-r--r--chimere/main/models.py19
-rwxr-xr-xchimere/scripts/upgrade.py50
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."
-