Skip to content

Commit

Permalink
Store event user actions to gain insights form it in the future (#3136)
Browse files Browse the repository at this point in the history
  • Loading branch information
henrikskog authored Feb 21, 2024
1 parent 638ec65 commit 2e89e1e
Show file tree
Hide file tree
Showing 4 changed files with 89 additions and 1 deletion.
53 changes: 53 additions & 0 deletions apps/events/migrations/0003_eventuseraction.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
# Generated by Django 3.2.23 on 2024-02-21 11:24

import django.db.models.deletion
from django.conf import settings
from django.db import migrations, models


class Migration(migrations.Migration):
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
("events", "0002_auto_20230215_2107"),
]

operations = [
migrations.CreateModel(
name="EventUserAction",
fields=[
(
"id",
models.AutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
("timestamp", models.DateTimeField(auto_now_add=True)),
(
"type",
models.CharField(
choices=[
("register", "register"),
("unregister", "unregister"),
],
max_length=15,
),
),
(
"event",
models.ForeignKey(
on_delete=django.db.models.deletion.CASCADE, to="events.event"
),
),
(
"user",
models.ForeignKey(
on_delete=django.db.models.deletion.CASCADE,
to=settings.AUTH_USER_MODEL,
),
),
],
),
]
16 changes: 16 additions & 0 deletions apps/events/models/Event.py
Original file line number Diff line number Diff line change
Expand Up @@ -157,6 +157,22 @@ def get_queryset_for_user(self, user: User):
)


# Store all actions users take in regards to events.
class EventUserAction(models.Model):
event = models.ForeignKey("Event", on_delete=models.CASCADE)
user = models.ForeignKey(User, on_delete=models.CASCADE)
timestamp = models.DateTimeField(auto_now_add=True)

type = models.CharField(
max_length=15,
choices=[
("register", "register"),
("unregister", "unregister")
# , ("pay", "pay"), ("chose_extra", "chose_extra"), ("sent_feedback", "sent_feedback") TODO: these should be added, but we start with register/unregister for now.
],
)


class Event(models.Model):
"""
Base class for Event-objects.
Expand Down
3 changes: 2 additions & 1 deletion apps/events/models/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
Reservee,
StatusCode,
)
from .Event import Event, EventOrderedByRegistration
from .Event import Event, EventOrderedByRegistration, EventUserAction
from .Extras import Extras

__all__ = [
Expand All @@ -31,6 +31,7 @@
Reservee,
StatusCode,
Event,
EventUserAction,
EventOrderedByRegistration,
Extras,
]
18 changes: 18 additions & 0 deletions apps/events/signals.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
from django.db.models.signals import pre_delete, pre_save
from django.dispatch import receiver

from .models import Attendee, EventUserAction


@receiver(signal=pre_save, sender=Attendee)
def handle_payment_relation_status_change(sender, instance: Attendee, **kwargs):
EventUserAction.objects.create(
user=instance.user, event=instance.event.event, type="register"
)


@receiver(signal=pre_delete, sender=Attendee)
def handle_payment_transaction_status_change(sender, instance: Attendee, **kwargs):
EventUserAction.objects.create(
user=instance.user, event=instance.event.event, type="unregister"
)

0 comments on commit 2e89e1e

Please sign in to comment.