bornhack-website/src/tokens/models.py
2021-07-19 15:06:10 +02:00

51 lines
1.2 KiB
Python

from django.db import models
from django.urls import reverse
from utils.models import CampRelatedModel
class Token(CampRelatedModel):
camp = models.ForeignKey("camps.Camp", on_delete=models.PROTECT)
token = models.CharField(max_length=32, help_text="The secret token")
category = models.TextField(
help_text="The category/hint for this token (physical, website, whatever)"
)
description = models.TextField(help_text="The description of the token")
camp_filter = "camp"
def __str__(self):
return "%s (%s)" % (self.description, self.camp)
class Meta:
ordering = ["camp"]
def get_absolute_url(self):
return reverse(
"backoffice:token_detail",
kwargs={"camp_slug": self.camp.slug, "pk": self.pk},
)
class TokenFind(CampRelatedModel):
class Meta:
unique_together = ("user", "token")
token = models.ForeignKey("tokens.Token", on_delete=models.PROTECT)
user = models.ForeignKey(
"auth.User", on_delete=models.PROTECT, related_name="token_finds"
)
camp_filter = "token__camp"
def __str__(self):
return "%s found by %s" % (self.token, self.user)
@property
def camp(self):
return self.token.camp