add used_time to BaseTicket model so we know when tickets were checked in/used
This commit is contained in:
parent
a99c546e06
commit
48952c5463
|
@ -3,6 +3,7 @@ from itertools import chain
|
||||||
|
|
||||||
from django.contrib import messages
|
from django.contrib import messages
|
||||||
from django.contrib.auth.mixins import LoginRequiredMixin
|
from django.contrib.auth.mixins import LoginRequiredMixin
|
||||||
|
from django.utils import timezone
|
||||||
from django.views.generic import ListView, TemplateView
|
from django.views.generic import ListView, TemplateView
|
||||||
|
|
||||||
from camps.mixins import CampViewMixin
|
from camps.mixins import CampViewMixin
|
||||||
|
@ -121,6 +122,7 @@ class ScanTicketsView(
|
||||||
check_in_ticket_id = request.POST.get("check_in_ticket_id")
|
check_in_ticket_id = request.POST.get("check_in_ticket_id")
|
||||||
ticket_to_check_in = _ticket_getter_by_pk(check_in_ticket_id)
|
ticket_to_check_in = _ticket_getter_by_pk(check_in_ticket_id)
|
||||||
ticket_to_check_in.used = True
|
ticket_to_check_in.used = True
|
||||||
|
ticket_to_check_in.used_time = timezone.now()
|
||||||
ticket_to_check_in.save()
|
ticket_to_check_in.save()
|
||||||
messages.info(request, "Ticket checked-in!")
|
messages.info(request, "Ticket checked-in!")
|
||||||
return ticket_to_check_in
|
return ticket_to_check_in
|
||||||
|
|
28
src/tickets/migrations/0019_auto_20210802_1756.py
Normal file
28
src/tickets/migrations/0019_auto_20210802_1756.py
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
# Generated by Django 3.2.5 on 2021-08-02 17:56
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
("tickets", "0018_remove_shopticket_order"),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AddField(
|
||||||
|
model_name="discountticket",
|
||||||
|
name="used_time",
|
||||||
|
field=models.DateTimeField(null=True),
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name="shopticket",
|
||||||
|
name="used_time",
|
||||||
|
field=models.DateTimeField(null=True),
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name="sponsorticket",
|
||||||
|
name="used_time",
|
||||||
|
field=models.DateTimeField(null=True),
|
||||||
|
),
|
||||||
|
]
|
30
src/tickets/migrations/0020_populate_ticket_used_when.py
Normal file
30
src/tickets/migrations/0020_populate_ticket_used_when.py
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
# Generated by Django 3.2.5 on 2021-08-02 17:56
|
||||||
|
|
||||||
|
from django.db import migrations
|
||||||
|
|
||||||
|
|
||||||
|
def populate_ticket_used_when(apps, schema_editor):
|
||||||
|
ShopTicket = apps.get_model("tickets", "ShopTicket")
|
||||||
|
SponsorTicket = apps.get_model("tickets", "SponsorTicket")
|
||||||
|
DiscountTicket = apps.get_model("tickets", "DiscountTicket")
|
||||||
|
|
||||||
|
for st in ShopTicket.objects.filter(used_time__isnull=True, used=True):
|
||||||
|
st.used_when = st.updated
|
||||||
|
st.save()
|
||||||
|
|
||||||
|
for st in SponsorTicket.objects.filter(used_time__isnull=True, used=True):
|
||||||
|
st.used_when = st.updated
|
||||||
|
st.save()
|
||||||
|
|
||||||
|
for dt in DiscountTicket.objects.filter(used_time__isnull=True, used=True):
|
||||||
|
st.used_when = st.updated
|
||||||
|
st.save()
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
("tickets", "0019_auto_20210802_1756"),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [migrations.RunPython(populate_ticket_used_when)]
|
|
@ -98,6 +98,7 @@ def qr_code_base64(token):
|
||||||
class BaseTicket(CampRelatedModel, UUIDModel):
|
class BaseTicket(CampRelatedModel, UUIDModel):
|
||||||
ticket_type = models.ForeignKey("TicketType", on_delete=models.PROTECT)
|
ticket_type = models.ForeignKey("TicketType", on_delete=models.PROTECT)
|
||||||
used = models.BooleanField(default=False)
|
used = models.BooleanField(default=False)
|
||||||
|
used_time = models.DateTimeField(null=True)
|
||||||
badge_handed_out = models.BooleanField(default=False)
|
badge_handed_out = models.BooleanField(default=False)
|
||||||
token = models.CharField(max_length=64, blank=True)
|
token = models.CharField(max_length=64, blank=True)
|
||||||
badge_token = models.CharField(max_length=64, blank=True)
|
badge_token = models.CharField(max_length=64, blank=True)
|
||||||
|
|
Loading…
Reference in a new issue