diff --git a/src/c3nav/mapdata/migrations/0001_initial.py b/src/c3nav/mapdata/migrations/0001_initial.py index e067e68a..028a9a10 100644 --- a/src/c3nav/mapdata/migrations/0001_initial.py +++ b/src/c3nav/mapdata/migrations/0001_initial.py @@ -1,8 +1,7 @@ # -*- coding: utf-8 -*- -# Generated by Django 1.9.9 on 2016-08-23 00:17 +# Generated by Django 1.9.9 on 2016-08-23 10:10 from __future__ import unicode_literals -import django.contrib.gis.db.models.fields from django.db import migrations, models import django.db.models.deletion import parler.models @@ -46,26 +45,27 @@ class Migration(migrations.Migration): ('master', models.ForeignKey(editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='translations', to='mapdata.MapPackage')), ], options={ - 'db_table': 'mapdata_mappackage_translation', - 'db_tablespace': '', 'managed': True, - 'verbose_name': 'map package Translation', 'default_permissions': (), + 'db_tablespace': '', + 'verbose_name': 'map package Translation', + 'db_table': 'mapdata_mappackage_translation', }, ), migrations.CreateModel( name='MapSource', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('bottom', models.DecimalField(decimal_places=2, max_digits=6, verbose_name='bottom coordinate')), + ('left', models.DecimalField(decimal_places=2, max_digits=6, verbose_name='left coordinate')), + ('top', models.DecimalField(decimal_places=2, max_digits=6, verbose_name='top coordinate')), + ('right', models.DecimalField(decimal_places=2, max_digits=6, verbose_name='right coordinate')), ('image', models.FileField(upload_to='mapsources/', verbose_name='source image')), - ('bottom_left', django.contrib.gis.db.models.fields.PointField(srid=4326, verbose_name='bottom left coordinates')), - ('top_right', django.contrib.gis.db.models.fields.PointField(srid=4326, verbose_name='bottom left coordinates')), ('package', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='sources', to='mapdata.MapPackage', verbose_name='map package')), ], options={ 'abstract': False, }, - bases=(parler.models.TranslatableModelMixin, models.Model), ), migrations.AddField( model_name='maplevel', diff --git a/src/c3nav/mapdata/models.py b/src/c3nav/mapdata/models.py index daf054cc..d0747d33 100644 --- a/src/c3nav/mapdata/models.py +++ b/src/c3nav/mapdata/models.py @@ -1,12 +1,10 @@ -from django.contrib.gis.db import models +from django.db import models from django.utils.translation import ugettext_lazy as _ -from parler.models import TranslatedFields - -from ..models import TranslatableGeoModel +from parler.models import TranslatedFields, TranslatableModel -class MapPackage(TranslatableGeoModel): +class MapPackage(TranslatableModel): """ A c3nav map package """ @@ -21,7 +19,7 @@ class MapPackage(TranslatableGeoModel): ) -class MapLevel(TranslatableGeoModel): +class MapLevel(TranslatableModel): """ A map level (-1, 0, 1, 2…) """ @@ -30,7 +28,21 @@ class MapLevel(TranslatableGeoModel): verbose_name=_('map package')) -class MapSource(TranslatableGeoModel): +class BoundingBoxModel(models.Model): + bottom = models.DecimalField(_('bottom coordinate'), max_digits=6, decimal_places=2) + left = models.DecimalField(_('left coordinate'), max_digits=6, decimal_places=2) + top = models.DecimalField(_('top coordinate'), max_digits=6, decimal_places=2) + right = models.DecimalField(_('right coordinate'), max_digits=6, decimal_places=2) + + @property + def bounds(self): + return ((self.bottom, self.left), (self.top, self.right)) + + class Meta: + abstract = True + + +class MapSource(BoundingBoxModel): """ A map source, images of levels that can be useful as backgrounds for the map editor """ @@ -38,5 +50,3 @@ class MapSource(TranslatableGeoModel): package = models.ForeignKey('MapPackage', on_delete=models.PROTECT, related_name='sources', verbose_name=_('map package')) image = models.FileField(_('source image'), upload_to='mapsources/') - bottom_left = models.PointField(_('bottom left coordinates')) - top_right = models.PointField(_('bottom left coordinates')) diff --git a/src/c3nav/models.py b/src/c3nav/models.py deleted file mode 100644 index c6c01b0f..00000000 --- a/src/c3nav/models.py +++ /dev/null @@ -1,20 +0,0 @@ -from django.contrib.gis.db import models -from django.contrib.gis.db.models.query import GeoQuerySet - -from parler.managers import TranslatableManager, TranslatableQuerySet -from parler.models import TranslatableModel - - -class TranslatableGeoQuerySet(TranslatableQuerySet, GeoQuerySet): - pass - - -class TranslatableGeoManager(TranslatableManager): - queryset_class = TranslatableGeoQuerySet - - -class TranslatableGeoModel(TranslatableModel, models.Model): - objects = TranslatableGeoManager() - - class Meta: - abstract = True diff --git a/src/c3nav/settings.py b/src/c3nav/settings.py index d3fcdf78..260a97e8 100644 --- a/src/c3nav/settings.py +++ b/src/c3nav/settings.py @@ -46,10 +46,10 @@ else: debug_fallback = "runserver" in sys.argv DEBUG = config.getboolean('django', 'debug', fallback=debug_fallback) -db_backend = config.get('database', 'backend', fallback='spatialite') +db_backend = config.get('database', 'backend', fallback='sqlite3') DATABASES = { 'default': { - 'ENGINE': 'django.contrib.gis.db.backends.' + db_backend, + 'ENGINE': 'django.db.backends.' + db_backend, 'NAME': config.get('database', 'name', fallback=os.path.join(DATA_DIR, 'db.sqlite3')), 'USER': config.get('database', 'user', fallback=''), 'PASSWORD': config.get('database', 'password', fallback=''), @@ -58,7 +58,6 @@ DATABASES = { 'CONN_MAX_AGE': 0 if db_backend == 'sqlite3' else 120 } } -SPATIALITE_LIBRARY_PATH = 'mod_spatialite' STATIC_URL = config.get('urls', 'static', fallback='/static/') @@ -106,7 +105,6 @@ INSTALLED_APPS = [ 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', - 'django.contrib.gis', 'compressor', 'bootstrap3', 'c3nav.control',