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." - |