Skip to content

Commit

Permalink
Merge pull request #3496 from webkom/feat-event-organizer-field
Browse files Browse the repository at this point in the history
Add field for event organizer users
  • Loading branch information
jonasdeluna authored Sep 29, 2023
2 parents 61b47f9 + 0eb55bb commit 46a22af
Show file tree
Hide file tree
Showing 4 changed files with 53 additions and 3 deletions.
19 changes: 19 additions & 0 deletions lego/apps/events/migrations/0037_event_responsible_users.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# Generated by Django 4.0.10 on 2023-09-27 16:59

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


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

operations = [
migrations.AddField(
model_name="event",
name="responsible_users",
field=models.ManyToManyField(to=settings.AUTH_USER_MODEL),
),
]
3 changes: 2 additions & 1 deletion lego/apps/events/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
from django.conf import settings
from django.core.exceptions import ValidationError
from django.db import models, transaction
from django.db.models import CharField, Count, QuerySet, Sum
from django.db.models import CharField, Count, ManyToManyField, QuerySet, Sum
from django.utils import timezone

from lego.apps.action_handlers.events import handle_event
Expand Down Expand Up @@ -102,6 +102,7 @@ def unregistration_close_time(self) -> date:
use_contact_tracing = models.BooleanField(default=False)
legacy_registration_count = models.PositiveIntegerField(default=0)
mazemap_poi = models.PositiveIntegerField(null=True)
responsible_users = ManyToManyField(User)

class Meta:
permission_handler = EventPermissionHandler()
Expand Down
26 changes: 24 additions & 2 deletions lego/apps/events/serializers/events.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,8 @@
from lego.apps.files.fields import File, ImageField
from lego.apps.tags.serializers import TagSerializerMixin
from lego.apps.users.constants import GROUP_GRADE
from lego.apps.users.fields import AbakusGroupField
from lego.apps.users.models import AbakusGroup, PhotoConsent
from lego.apps.users.fields import AbakusGroupField, PublicUserField
from lego.apps.users.models import AbakusGroup, PhotoConsent, User
from lego.apps.users.serializers.abakus_groups import PublicAbakusGroupSerializer
from lego.apps.users.serializers.photo_consents import PhotoConsentSerializer
from lego.apps.users.serializers.users import PublicUserSerializer
Expand Down Expand Up @@ -82,6 +82,12 @@ class EventReadSerializer(
)
activation_time = ActivationTimeField()
is_admitted = IsAdmittedField()
responsible_users = PublicUserField(
queryset=User.objects.all(),
allow_null=False,
required=True,
many=True,
)

class Meta:
model = Event
Expand All @@ -106,6 +112,7 @@ class Meta:
"is_admitted",
"survey",
"is_priced",
"responsible_users",
) + ObjectPermissionsSerializerMixin.Meta.fields
read_only = True

Expand All @@ -128,6 +135,12 @@ class EventReadDetailedSerializer(

registration_close_time = serializers.DateTimeField(read_only=True)
unregistration_close_time = serializers.DateTimeField(read_only=True)
responsible_users = PublicUserField(
queryset=User.objects.all(),
allow_null=False,
required=True,
many=True,
)

class Meta:
model = Event
Expand Down Expand Up @@ -176,6 +189,7 @@ class Meta:
"youtube_url",
"use_contact_tracing",
"mazemap_poi",
"responsible_users",
)
read_only = True

Expand Down Expand Up @@ -349,6 +363,13 @@ class EventCreateAndUpdateSerializer(

registration_close_time = serializers.DateTimeField(read_only=True)
unregistration_close_time = serializers.DateTimeField(read_only=True)
responsible_users = PublicUserField(
queryset=User.objects.all(),
allow_null=False,
allow_empty=True,
required=False,
many=True,
)

class Meta:
model = Event
Expand Down Expand Up @@ -387,6 +408,7 @@ class Meta:
"youtube_url",
"use_contact_tracing",
"mazemap_poi",
"responsible_users",
) + ObjectPermissionsSerializerMixin.Meta.fields

def validate(self, data):
Expand Down
8 changes: 8 additions & 0 deletions lego/apps/events/tests/test_events_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@
"permissionGroups": [1],
}
],
"responsibleUsers": [1],
},
{
"title": "Event2",
Expand Down Expand Up @@ -72,6 +73,7 @@
"permissionGroups": [2],
},
],
"responsibleUsers": [1],
},
{
"title": "Event3",
Expand All @@ -93,6 +95,7 @@
"permissionGroups": [2],
}
],
"responsibleUsers": [1],
},
{
"title": "Event4",
Expand All @@ -114,6 +117,7 @@
"permissionGroups": [2],
}
],
"responsibleUsers": [1],
},
{
"title": "Event5",
Expand All @@ -135,6 +139,7 @@
"permissionGroups": [2],
}
],
"responsibleUsers": [1],
},
{
"title": "Event6",
Expand All @@ -155,6 +160,7 @@
"permissionGroups": [2],
}
],
"responsibleUsers": [1],
},
{
"title": "Event7",
Expand All @@ -166,6 +172,7 @@
"startTime": "2015-09-01T13:20:30Z",
"endTime": "2015-09-01T13:20:30Z",
"mergeTime": "2016-01-01T13:20:30Z",
"responsibleUsers": [1],
},
{
"title": "Event8",
Expand All @@ -186,6 +193,7 @@
"permissionGroups": [21, 25],
}
],
"responsibleUsers": [1],
},
]

Expand Down

0 comments on commit 46a22af

Please sign in to comment.