feat: add events app + "multi-tenants" aka multi-events
This commit is contained in:
@@ -1,16 +1,24 @@
|
||||
from django.db import models
|
||||
|
||||
from events.models import Event
|
||||
|
||||
|
||||
class GameQuerySet(models.QuerySet):
|
||||
def enabled_for_event(self, event):
|
||||
return self.exclude(event_games__event=event, event_games__enabled=False)
|
||||
|
||||
|
||||
class Game(models.Model):
|
||||
steam_app_id = models.PositiveIntegerField(null=True, blank=True)
|
||||
name = models.CharField(max_length=255)
|
||||
path = models.CharField(max_length=100)
|
||||
image = models.URLField(null=True, blank=True)
|
||||
enabled = models.BooleanField(default=True)
|
||||
|
||||
created_at = models.DateTimeField(auto_now_add=True)
|
||||
updated_at = models.DateTimeField(auto_now=True)
|
||||
|
||||
objects = models.Manager.from_queryset(GameQuerySet)()
|
||||
|
||||
class Meta:
|
||||
ordering = ["name"]
|
||||
|
||||
@@ -18,3 +26,28 @@ class Game(models.Model):
|
||||
if self.steam_app_id:
|
||||
return f"{self.name} ({self.steam_app_id})"
|
||||
return self.name
|
||||
|
||||
|
||||
class EventGame(models.Model):
|
||||
event = models.ForeignKey(
|
||||
Event,
|
||||
on_delete=models.CASCADE,
|
||||
related_name="event_games",
|
||||
)
|
||||
game = models.ForeignKey(
|
||||
Game,
|
||||
on_delete=models.CASCADE,
|
||||
related_name="event_games",
|
||||
)
|
||||
enabled = models.BooleanField(default=True)
|
||||
|
||||
class Meta:
|
||||
constraints = [
|
||||
models.UniqueConstraint(
|
||||
fields=["event", "game"],
|
||||
name="unique_event_game",
|
||||
),
|
||||
]
|
||||
|
||||
def __str__(self) -> str:
|
||||
return f"{self.game.name} @ {self.event.name} ({'enabled' if self.enabled else 'disabled'})"
|
||||
|
||||
Reference in New Issue
Block a user