diff --git a/AKModel/admin.py b/AKModel/admin.py index bcfb719c051a8a77978cae87e220787ab31fb72b..a90b3ff2686172b36f5c92a3000779decfa00263 100644 --- a/AKModel/admin.py +++ b/AKModel/admin.py @@ -2,7 +2,7 @@ from django.contrib import admin -from AKModel.models import Event, AKOwner, AKType, AKTrack, AKTag, AKRequirement, AK, Room +from AKModel.models import Event, AKOwner, AKType, AKTrack, AKTag, AKRequirement, AK, Room, AKSlot admin.site.register(Event) @@ -13,4 +13,7 @@ admin.site.register(AKTrack) admin.site.register(AKTag) admin.site.register(AKRequirement) admin.site.register(AK) + admin.site.register(Room) + +admin.site.register(AKSlot) diff --git a/AKModel/models.py b/AKModel/models.py index 372ad917f0984a6d0d8497cb606c0cd644cad30c..8a89dbf8a005b734f4748e8bc434eda87d9eb6dc 100644 --- a/AKModel/models.py +++ b/AKModel/models.py @@ -137,3 +137,21 @@ class Room(models.Model): verbose_name_plural = 'Rooms' ordering = ['building', 'name'] unique_together = [['name', 'building']] + + +class AKSlot(models.Model): + """ An AK Mapping matches an AK to a room during a certain time. + """ + ak = models.ForeignKey(to=AK, on_delete=models.CASCADE, verbose_name='AK', help_text='AK being mapped') + room = models.ForeignKey(to=Room, null=True, on_delete=models.SET_NULL, verbose_name='Room', + help_text='Room the AK will take place in') + start = models.DateTimeField(verbose_name='Slot Begin', help_text='Time and date the slot begins') + duration = models.DecimalField(max_digits=4, decimal_places=2, default=2, verbose_name='Duration', + help_text='Length in hours') + + event = models.ForeignKey(to=Event, on_delete=models.CASCADE, verbose_name='Event', help_text='Matching event') + + class Meta: + verbose_name = 'AK Slot' + verbose_name_plural = 'AK Slots' + ordering = ['start', 'room']