team-3/src/c3nav/mapdata/models/level.py

33 lines
1 KiB
Python
Raw Normal View History

2016-08-29 18:49:24 +02:00
from django.db import models
from django.utils.translation import ugettext_lazy as _
class Level(models.Model):
"""
A map level (-1, 0, 1, 2)
"""
name = models.SlugField(_('level name'), primary_key=True, max_length=50,
2016-08-29 18:49:24 +02:00
help_text=_('Usually just an integer (e.g. -1, 0, 1, 2)'))
altitude = models.DecimalField(_('level altitude'), null=True, max_digits=6, decimal_places=2)
2016-09-24 14:23:44 +02:00
package = models.ForeignKey('mapdata.Package', on_delete=models.CASCADE, related_name='levels',
2016-08-29 18:49:24 +02:00
verbose_name=_('map package'))
2016-09-24 14:09:52 +02:00
path_regex = r'^levels/'
@classmethod
2016-09-24 14:09:52 +02:00
def fromfile(cls, data):
if 'altitude' not in data:
2016-09-24 14:09:52 +02:00
raise ValueError('missing altitude.')
if not isinstance(data['altitude'], (int, float)):
2016-09-24 14:09:52 +02:00
raise ValueError('altitude has to be int or float.')
return {
'altitude': data['altitude'],
}
2016-08-30 13:58:45 +02:00
def tofile(self):
return {
'altitude': float(self.altitude)
}