It's an old code, sir, but it checks out.

This commit is contained in:
Víðir Valberg Guðmundsson 2019-08-13 17:53:13 +02:00
parent 1b56280b12
commit 7e0c87957f
4 changed files with 34 additions and 11 deletions

View File

@ -94,3 +94,5 @@ ACCOUNTINGSYSTEM_EMAIL = "{{ django_accountingsystem_email }}"
ECONOMYTEAM_EMAIL = "{{ django_economyteam_email }}" ECONOMYTEAM_EMAIL = "{{ django_economyteam_email }}"
ECONOMYTEAM_NAME = "Economy" ECONOMYTEAM_NAME = "Economy"
BORNHACK_2019_OLD_TOKEN_TOKEN = "{{ bornhack_2019_old_token_token }}"

View File

@ -7,10 +7,18 @@ Secret Token Found! | {{ block.super }}
{% endblock %} {% endblock %}
{% block content %} {% block content %}
<h3 class="text-center">Secret Token Found!</h3>
<p class="lead text-center">You found a secret token:</p> {% if view.older_code %}
<p class="lead text-center"><span class="badge">{{ token.description }}</span></p> <h3 class="text-center">It's an older code, sir, but it checks out!</h3>
<p class="lead text-center">Your visit has been registered! Keep hunting, there might be more tokens out there.</p> <p class="lead text-center">You have tried to use an older token, so here have a token for your efforts!</p>
<p class="lead text-center"><a href="{% url 'tokens:tokenfind_list' %}">List All Found Tokens</a></p> <pre class="lead text-center">{{ view.older_token_token }}</pre>
{% else %}
<h3 class="text-center">Secret Token Found!</h3>
<p class="lead text-center">You found a secret token:</p>
<p class="lead text-center"><span class="badge">{{ token.description }}</span></p>
<p class="lead text-center">Your visit has been registered! Keep hunting, there might be more tokens out there.</p>
<p class="lead text-center"><a href="{% url 'tokens:tokenfind_list' %}">List All Found Tokens</a></p>
{% endif %}
{% endblock %} {% endblock %}

View File

@ -1,6 +1,9 @@
from django.conf import settings
from django.contrib.auth.mixins import LoginRequiredMixin from django.contrib.auth.mixins import LoginRequiredMixin
from django.core.exceptions import ValidationError
from django.views.generic import ListView, DetailView from django.views.generic import ListView, DetailView
from utils.models import CampReadOnlyModeError
from .models import Token, TokenFind from .models import Token, TokenFind
@ -9,13 +12,19 @@ class TokenDetailView(LoginRequiredMixin, DetailView):
model = Token model = Token
slug_field = "token" slug_field = "token"
slug_url_kwarg = "token" slug_url_kwarg = "token"
older_code = False
def get(self, request, *args, **kwargs): def get(self, request, *args, **kwargs):
# register this tokenview if it isn't already # register this tokenview if it isn't already
token, created = TokenFind.objects.get_or_create( try:
token=self.get_object(), user=request.user token, created = TokenFind.objects.get_or_create(
) token=self.get_object(), user=request.user
return super().get(request, *args, **kwargs) )
return super().get(request, *args, **kwargs)
except CampReadOnlyModeError:
self.older_code = True
self.older_token_token = settings.BORNHACK_2019_OLD_TOKEN_TOKEN
return super().get(request, *args, **kwargs)
class TokenFindListView(LoginRequiredMixin, ListView): class TokenFindListView(LoginRequiredMixin, ListView):

View File

@ -47,6 +47,10 @@ class CreatedUpdatedModel(CleanedModel):
updated = models.DateTimeField(auto_now=True) updated = models.DateTimeField(auto_now=True)
class CampReadOnlyModeError(ValidationError):
pass
class CampRelatedModel(CreatedUpdatedModel): class CampRelatedModel(CreatedUpdatedModel):
camp_filter = "camp" camp_filter = "camp"
@ -58,7 +62,7 @@ class CampRelatedModel(CreatedUpdatedModel):
if self.camp.read_only: if self.camp.read_only:
if hasattr(self, "request"): if hasattr(self, "request"):
messages.error(self.request, "Camp is in read only mode.") messages.error(self.request, "Camp is in read only mode.")
raise ValidationError("This camp is in read only mode.") raise CampReadOnlyModeError("This camp is in read only mode.")
super().save(**kwargs) super().save(**kwargs)
@ -66,7 +70,7 @@ class CampRelatedModel(CreatedUpdatedModel):
if self.camp.read_only: if self.camp.read_only:
if hasattr(self, "request"): if hasattr(self, "request"):
messages.error(self.request, "Camp is in read only mode.") messages.error(self.request, "Camp is in read only mode.")
raise ValidationError("This camp is in read only mode.") raise CampReadOnlyModeError("This camp is in read only mode.")
super().delete(**kwargs) super().delete(**kwargs)