Don't use GeoDjango. It does not bring advantages for our use case.

This commit is contained in:
Laura Klünder 2016-08-23 11:41:04 +02:00
parent ac1cee9fa0
commit 565739f790
4 changed files with 29 additions and 41 deletions

View file

@ -1,8 +1,7 @@
# -*- coding: utf-8 -*- # -*- 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 from __future__ import unicode_literals
import django.contrib.gis.db.models.fields
from django.db import migrations, models from django.db import migrations, models
import django.db.models.deletion import django.db.models.deletion
import parler.models 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')), ('master', models.ForeignKey(editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='translations', to='mapdata.MapPackage')),
], ],
options={ options={
'db_table': 'mapdata_mappackage_translation',
'db_tablespace': '',
'managed': True, 'managed': True,
'verbose_name': 'map package Translation',
'default_permissions': (), 'default_permissions': (),
'db_tablespace': '',
'verbose_name': 'map package Translation',
'db_table': 'mapdata_mappackage_translation',
}, },
), ),
migrations.CreateModel( migrations.CreateModel(
name='MapSource', name='MapSource',
fields=[ fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('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')), ('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')), ('package', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='sources', to='mapdata.MapPackage', verbose_name='map package')),
], ],
options={ options={
'abstract': False, 'abstract': False,
}, },
bases=(parler.models.TranslatableModelMixin, models.Model),
), ),
migrations.AddField( migrations.AddField(
model_name='maplevel', model_name='maplevel',

View file

@ -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 django.utils.translation import ugettext_lazy as _
from parler.models import TranslatedFields from parler.models import TranslatedFields, TranslatableModel
from ..models import TranslatableGeoModel
class MapPackage(TranslatableGeoModel): class MapPackage(TranslatableModel):
""" """
A c3nav map package A c3nav map package
""" """
@ -21,7 +19,7 @@ class MapPackage(TranslatableGeoModel):
) )
class MapLevel(TranslatableGeoModel): class MapLevel(TranslatableModel):
""" """
A map level (-1, 0, 1, 2) A map level (-1, 0, 1, 2)
""" """
@ -30,7 +28,21 @@ class MapLevel(TranslatableGeoModel):
verbose_name=_('map package')) 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 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', package = models.ForeignKey('MapPackage', on_delete=models.PROTECT, related_name='sources',
verbose_name=_('map package')) verbose_name=_('map package'))
image = models.FileField(_('source image'), upload_to='mapsources/') image = models.FileField(_('source image'), upload_to='mapsources/')
bottom_left = models.PointField(_('bottom left coordinates'))
top_right = models.PointField(_('bottom left coordinates'))

View file

@ -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

View file

@ -46,10 +46,10 @@ else:
debug_fallback = "runserver" in sys.argv debug_fallback = "runserver" in sys.argv
DEBUG = config.getboolean('django', 'debug', fallback=debug_fallback) 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 = { DATABASES = {
'default': { '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')), 'NAME': config.get('database', 'name', fallback=os.path.join(DATA_DIR, 'db.sqlite3')),
'USER': config.get('database', 'user', fallback=''), 'USER': config.get('database', 'user', fallback=''),
'PASSWORD': config.get('database', 'password', fallback=''), 'PASSWORD': config.get('database', 'password', fallback=''),
@ -58,7 +58,6 @@ DATABASES = {
'CONN_MAX_AGE': 0 if db_backend == 'sqlite3' else 120 'CONN_MAX_AGE': 0 if db_backend == 'sqlite3' else 120
} }
} }
SPATIALITE_LIBRARY_PATH = 'mod_spatialite'
STATIC_URL = config.get('urls', 'static', fallback='/static/') STATIC_URL = config.get('urls', 'static', fallback='/static/')
@ -106,7 +105,6 @@ INSTALLED_APPS = [
'django.contrib.sessions', 'django.contrib.sessions',
'django.contrib.messages', 'django.contrib.messages',
'django.contrib.staticfiles', 'django.contrib.staticfiles',
'django.contrib.gis',
'compressor', 'compressor',
'bootstrap3', 'bootstrap3',
'c3nav.control', 'c3nav.control',