guild-journal/guild/models.py

106 lines
2.9 KiB
Python
Raw Normal View History

2023-06-09 19:51:18 +00:00
from django.db import models
from django.urls import reverse
from django.utils.translation import gettext as _
class Player(models.Model):
2023-06-10 19:33:06 +00:00
name = models.CharField(max_length=255, unique=True)
2023-06-09 19:51:18 +00:00
class Meta:
verbose_name = _("player")
verbose_name_plural = _("players")
def __str__(self):
return self.name
def get_absolute_url(self):
2023-06-10 19:33:06 +00:00
return reverse("guild:player_detail", kwargs={"pk": self.pk})
2023-06-09 19:51:18 +00:00
class Resource(models.Model):
name = models.CharField(max_length=255)
description = models.TextField()
class Meta:
verbose_name = _("resource")
verbose_name_plural = _("resources")
def __str__(self):
return self.name
def get_absolute_url(self):
2023-06-10 19:33:06 +00:00
return reverse("guild:resource_detail", kwargs={"pk": self.pk})
2023-06-09 19:51:18 +00:00
class Adventure(models.Model):
name = models.CharField(max_length=255)
description = models.TextField()
master = models.ForeignKey("Player", verbose_name=_("master"), on_delete=models.SET_NULL, null=True, blank=True)
class Meta:
verbose_name = _("Adventure")
verbose_name_plural = _("Adventures")
def __str__(self):
return self.name
def get_absolute_url(self):
2023-06-10 19:33:06 +00:00
return reverse("guild:adventure_detail", kwargs={"pk": self.pk})
2023-06-09 19:51:18 +00:00
class Character(models.Model):
name = models.CharField(max_length=255)
description = models.TextField()
player = models.ForeignKey("Player", verbose_name=_("player"), on_delete=models.SET_NULL, null=True, blank=True)
class Meta:
verbose_name = _("character")
verbose_name_plural = _("characters")
def __str__(self):
return self.name
def get_absolute_url(self):
2023-06-10 19:33:06 +00:00
return reverse("guild:character_detail", kwargs={"pk": self.pk})
2023-06-09 19:51:18 +00:00
class PlaySession(models.Model):
date = models.DateField()
adventure = models.ForeignKey("Adventure", verbose_name=_("adventure"), on_delete=models.CASCADE)
characters = models.ManyToManyField("Character", verbose_name=_("characters"))
summary = models.TextField()
class Meta:
verbose_name = _("playsession")
verbose_name_plural = _("playsessions")
def __str__(self):
return self.name
def get_absolute_url(self):
2023-06-10 20:32:45 +00:00
return reverse(
"guild:playsession_detail",
kwargs={"pk": self.adventure.pk, "playsession_pk": self.pk}
)
2023-06-09 19:51:18 +00:00
class ResourceEarned(models.Model):
resource = models.ForeignKey("Resource", verbose_name=_("resource"), on_delete=models.CASCADE)
character = models.ForeignKey("Character", verbose_name=_("character"), on_delete=models.CASCADE, null=True, blank=True)
amount = models.IntegerField()
class Meta:
verbose_name = _("resourceearned")
verbose_name_plural = _("resourceearneds")
def __str__(self):
return self.name
def get_absolute_url(self):
2023-06-10 19:33:06 +00:00
return reverse("guild:resourceearned_detail", kwargs={"pk": self.pk})