convert the model mixins to abstract models

This commit is contained in:
Laura Klünder 2017-05-09 12:50:32 +02:00
parent 65ccf1d92f
commit a845f23cee
4 changed files with 18 additions and 10 deletions

View file

@ -1,13 +1,17 @@
from collections import OrderedDict
from django.db import models
from django.utils.translation import get_language
EDITOR_FORM_MODELS = OrderedDict()
class EditorFormMixin:
class EditorFormMixin(models.Model):
EditorForm = None
class Meta:
abstract = True
@property
def title(self):
if not hasattr(self, 'titles'):

View file

@ -2,6 +2,7 @@ from collections import OrderedDict
from shapely.geometry import Point, mapping
from c3nav.mapdata.fields import GeometryField
from c3nav.mapdata.models.base import EditorFormMixin
from c3nav.mapdata.utils.json import format_geojson
@ -12,6 +13,8 @@ class GeometryMixin(EditorFormMixin):
"""
A map feature with a geometry
"""
geometry = None
class Meta:
abstract = True

View file

@ -10,6 +10,11 @@ SECTION_MODELS = OrderedDict()
class SectionGeometryMixin(GeometryMixin):
section = models.ForeignKey('mapdata.Section', on_delete=models.CASCADE, verbose_name=_('section'))
class Meta:
abstract = True
def get_geojson_properties(self):
result = super().get_geojson_properties()
result['section'] = self.section.id
@ -20,7 +25,6 @@ class Building(SectionGeometryMixin, models.Model):
"""
The outline of a building on a specific level
"""
section = models.ForeignKey('mapdata.Section', on_delete=models.CASCADE, verbose_name=_('section'))
geometry = GeometryField('polygon')
class Meta:
@ -45,8 +49,6 @@ class Space(SectionGeometryMixin, models.Model):
('upper', _('upper')),
('lowerr', _('lower')),
)
section = models.ForeignKey('mapdata.Section', on_delete=models.CASCADE, verbose_name=_('section'))
geometry = GeometryField('polygon')
public = models.BooleanField(verbose_name=_('public'), default=True)
category = models.CharField(verbose_name=_('category'), choices=CATEGORIES, max_length=16)
@ -69,7 +71,6 @@ class Door(SectionGeometryMixin, models.Model):
"""
A connection between two rooms
"""
section = models.ForeignKey('mapdata.Section', on_delete=models.CASCADE, verbose_name=_('section'))
geometry = GeometryField('polygon')
class Meta:
@ -82,7 +83,6 @@ class Hole(SectionGeometryMixin, models.Model):
"""
A hole in the ground of a room, e.g. for stairs.
"""
section = models.ForeignKey('mapdata.Section', on_delete=models.CASCADE, verbose_name=_('section'))
geometry = GeometryField('polygon')
class Meta:

View file

@ -12,6 +12,11 @@ SPACE_MODELS = OrderedDict()
class SpaceGeometryMixin(GeometryMixin):
space = models.ForeignKey('mapdata.Space', on_delete=models.CASCADE, verbose_name=_('space'))
class Meta:
abstract = True
def get_geojson_properties(self):
result = super().get_geojson_properties()
result['space'] = self.space.id
@ -22,7 +27,6 @@ class StuffedArea(SpaceGeometryMixin, models.Model):
"""
A slow area with many tables or similar. Avoid it from routing by slowing it a bit down
"""
space = models.ForeignKey('mapdata.Space', on_delete=models.CASCADE, verbose_name=_('space'))
geometry = GeometryField('polygon')
class Meta:
@ -35,7 +39,6 @@ class Stair(SpaceGeometryMixin, models.Model):
"""
A stair
"""
space = models.ForeignKey('mapdata.Space', on_delete=models.CASCADE, verbose_name=_('space'))
geometry = GeometryField('polyline')
class Meta:
@ -70,7 +73,6 @@ class Obstacle(SpaceGeometryMixin, models.Model):
"""
An obstacle
"""
space = models.ForeignKey('mapdata.Space', on_delete=models.CASCADE, verbose_name=_('space'))
geometry = GeometryField('polygon')
class Meta:
@ -83,7 +85,6 @@ class LineObstacle(SpaceGeometryMixin, models.Model):
"""
An obstacle that is a line with a specific width
"""
space = models.ForeignKey('mapdata.Space', on_delete=models.CASCADE, verbose_name=_('space'))
geometry = GeometryField('polyline')
width = models.DecimalField(_('obstacle width'), max_digits=4, decimal_places=2, default=0.15)