54 lines
1.3 KiB
Python
54 lines
1.3 KiB
Python
from django.db import models
|
|
|
|
from polymorphic.models import PolymorphicModel
|
|
|
|
class FeatureSet(models.Model):
|
|
pass
|
|
|
|
class Feature(PolymorphicModel):
|
|
featureset = models.OneToOneField(FeatureSet, models.CASCADE)
|
|
comment = models.CharField(max_length=128)
|
|
|
|
@property
|
|
def name(self):
|
|
raise NotImplementedError("%s does not implement name" % self.__class__)
|
|
|
|
def icon(self):
|
|
return ""
|
|
|
|
class TimeFeature(Feature):
|
|
time = models.TimeField()
|
|
|
|
class TimeRangeFeature(Feature):
|
|
time_from = models.TimeField()
|
|
time_to = models.TimeField()
|
|
|
|
class IncludedStatus(models.IntegerChoices):
|
|
UNAVAILABLE = 0
|
|
AVAILABLE = 1
|
|
INCLUDED = 2
|
|
|
|
class IncludedFeature(Feature):
|
|
status = models.IntegerField(choices=IncludedStatus.choices)
|
|
|
|
class BedsFeature(Feature):
|
|
single = models.IntegerField()
|
|
double = models.IntegerField()
|
|
queen = models.IntegerField()
|
|
king = models.IntegerField()
|
|
couch = models.IntegerField()
|
|
|
|
class AvailableFeature(Feature):
|
|
status = models.BooleanField()
|
|
|
|
class CountFeature(Feature):
|
|
count = models.IntegerField()
|
|
|
|
class InRoomStatus(models.IntegerChoices):
|
|
UNAVAILABLE = 0
|
|
COMMON = 1
|
|
ROOM = 2
|
|
|
|
class InRoomFeature(Feature):
|
|
status = models.IntegerField(choices=InRoomStatus.choices)
|
|
|