add models.py to mapdata which should replace classes.py soon
This commit is contained in:
parent
1aeefa1d56
commit
ac1cee9fa0
4 changed files with 124 additions and 0 deletions
79
src/c3nav/mapdata/migrations/0001_initial.py
Normal file
79
src/c3nav/mapdata/migrations/0001_initial.py
Normal file
|
@ -0,0 +1,79 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# Generated by Django 1.9.9 on 2016-08-23 00:17
|
||||||
|
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
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
initial = True
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='MapLevel',
|
||||||
|
fields=[
|
||||||
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||||
|
],
|
||||||
|
options={
|
||||||
|
'abstract': False,
|
||||||
|
},
|
||||||
|
bases=(parler.models.TranslatableModelMixin, models.Model),
|
||||||
|
),
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='MapPackage',
|
||||||
|
fields=[
|
||||||
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||||
|
('extends', models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='extended_by', to='mapdata.MapPackage', verbose_name='extends map package')),
|
||||||
|
],
|
||||||
|
options={
|
||||||
|
'abstract': False,
|
||||||
|
},
|
||||||
|
bases=(parler.models.TranslatableModelMixin, models.Model),
|
||||||
|
),
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='MapPackageTranslation',
|
||||||
|
fields=[
|
||||||
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||||
|
('language_code', models.CharField(db_index=True, max_length=15, verbose_name='Language')),
|
||||||
|
('title', models.CharField(max_length=50, verbose_name='package title')),
|
||||||
|
('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': (),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='MapSource',
|
||||||
|
fields=[
|
||||||
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||||
|
('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',
|
||||||
|
name='package',
|
||||||
|
field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='levels', to='mapdata.MapPackage', verbose_name='map package'),
|
||||||
|
),
|
||||||
|
migrations.AlterUniqueTogether(
|
||||||
|
name='mappackagetranslation',
|
||||||
|
unique_together=set([('language_code', 'master')]),
|
||||||
|
),
|
||||||
|
]
|
0
src/c3nav/mapdata/migrations/__init__.py
Normal file
0
src/c3nav/mapdata/migrations/__init__.py
Normal file
42
src/c3nav/mapdata/models.py
Normal file
42
src/c3nav/mapdata/models.py
Normal file
|
@ -0,0 +1,42 @@
|
||||||
|
from django.contrib.gis.db import models
|
||||||
|
from django.utils.translation import ugettext_lazy as _
|
||||||
|
|
||||||
|
from parler.models import TranslatedFields
|
||||||
|
|
||||||
|
from ..models import TranslatableGeoModel
|
||||||
|
|
||||||
|
|
||||||
|
class MapPackage(TranslatableGeoModel):
|
||||||
|
"""
|
||||||
|
A c3nav map package
|
||||||
|
"""
|
||||||
|
name = models.CharField(_('package identifier'), max_length=50, help_text=_('e.g. de.c3nav.33c3')),
|
||||||
|
width = models.IntegerField(_('map width'), max_length=50, null=True, help_text='in meters'),
|
||||||
|
height = models.IntegerField(_('map height'), max_length=50, null=True, help_text='in meters'),
|
||||||
|
extends = models.ForeignKey('self', on_delete=models.PROTECT, null=True, related_name='extended_by',
|
||||||
|
verbose_name=_('extends map package'))
|
||||||
|
|
||||||
|
translations = TranslatedFields(
|
||||||
|
title=models.CharField(_('package title'), max_length=50),
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class MapLevel(TranslatableGeoModel):
|
||||||
|
"""
|
||||||
|
A map level (-1, 0, 1, 2…)
|
||||||
|
"""
|
||||||
|
name = models.CharField(_('level name'), max_length=50, help_text=_('Usually just an integer (e.g. -1, 0, 1, 2)')),
|
||||||
|
package = models.ForeignKey('MapPackage', on_delete=models.PROTECT, related_name='levels',
|
||||||
|
verbose_name=_('map package'))
|
||||||
|
|
||||||
|
|
||||||
|
class MapSource(TranslatableGeoModel):
|
||||||
|
"""
|
||||||
|
A map source, images of levels that can be useful as backgrounds for the map editor
|
||||||
|
"""
|
||||||
|
name = models.SlugField(_('source name'), max_length=50, unique=True),
|
||||||
|
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'))
|
|
@ -16,6 +16,7 @@ config.read(['/etc/c3nav/c3nav.cfg', os.path.expanduser('~/.c3nav.cfg'), 'c3nav.
|
||||||
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
||||||
DATA_DIR = config.get('c3nav', 'datadir', fallback=os.environ.get('DATA_DIR', 'data'))
|
DATA_DIR = config.get('c3nav', 'datadir', fallback=os.environ.get('DATA_DIR', 'data'))
|
||||||
LOG_DIR = os.path.join(DATA_DIR, 'logs')
|
LOG_DIR = os.path.join(DATA_DIR, 'logs')
|
||||||
|
MEDIA_ROOT = os.path.join(DATA_DIR, 'media')
|
||||||
|
|
||||||
MAP_DIRS = tuple(n for n in config.get('c3nav', 'mapdirs', fallback='').split(',') if n)
|
MAP_DIRS = tuple(n for n in config.get('c3nav', 'mapdirs', fallback='').split(',') if n)
|
||||||
|
|
||||||
|
@ -23,6 +24,8 @@ if not os.path.exists(DATA_DIR):
|
||||||
os.mkdir(DATA_DIR)
|
os.mkdir(DATA_DIR)
|
||||||
if not os.path.exists(LOG_DIR):
|
if not os.path.exists(LOG_DIR):
|
||||||
os.mkdir(LOG_DIR)
|
os.mkdir(LOG_DIR)
|
||||||
|
if not os.path.exists(MEDIA_ROOT):
|
||||||
|
os.mkdir(MEDIA_ROOT)
|
||||||
|
|
||||||
if config.has_option('django', 'secret'):
|
if config.has_option('django', 'secret'):
|
||||||
SECRET_KEY = config.get('django', 'secret')
|
SECRET_KEY = config.get('django', 'secret')
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue