Skip to content

Commit 75e1467

Browse files
authored
Merge pull request #29 from EventAccess/feat/crew
Add models for crew
2 parents 46a2ec4 + fc45bd5 commit 75e1467

5 files changed

Lines changed: 207 additions & 46 deletions

admin.py

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,18 @@
11
from django.contrib import admin
2-
from .models import Attendant, Crew
2+
3+
from .models import Attendant
4+
from .models import Crewmember
5+
36

47
class AttendantAdmin(admin.ModelAdmin):
58
list_display = ["ticket_id", "nfc_id", "is_crew", "is_valid"]
69

710

8-
class CrewAdmin(admin.ModelAdmin):
9-
list_display = ["first_name", "last_name", "email", "phone_number","discord"]
11+
admin.site.register(Attendant, AttendantAdmin)
1012

1113

12-
admin.site.register(Crew, CrewAdmin)
13-
admin.site.register(Attendant, AttendantAdmin)
14+
class CrewmemberAdmin(admin.ModelAdmin):
15+
list_display = ["first_name", "last_name", "email", "phone_number"]
1416

1517

16-
# Register your models here.
18+
admin.site.register(Crewmember, CrewmemberAdmin)
Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
# Generated by Django 5.1.5 on 2025-02-20 14:45
2+
3+
import database.validators
4+
import django.db.models.deletion
5+
from django.db import migrations, models
6+
7+
8+
class Migration(migrations.Migration):
9+
10+
dependencies = [
11+
("database", "0003_attendant_is_valid"),
12+
]
13+
14+
operations = [
15+
migrations.CreateModel(
16+
name="Crewmember",
17+
fields=[
18+
(
19+
"id",
20+
models.BigAutoField(
21+
auto_created=True,
22+
primary_key=True,
23+
serialize=False,
24+
verbose_name="ID",
25+
),
26+
),
27+
("first_name", models.CharField(max_length=100)),
28+
("last_name", models.CharField(max_length=100)),
29+
("email", models.EmailField(max_length=200)),
30+
(
31+
"discord",
32+
models.CharField(
33+
blank=True,
34+
max_length=32,
35+
null=True,
36+
unique=True,
37+
validators=[database.validators.discord_username_validator],
38+
),
39+
),
40+
("phone_number", models.CharField(max_length=15)),
41+
(
42+
"profile_image",
43+
models.ImageField(
44+
blank=True, null=True, upload_to="profile_images/"
45+
),
46+
),
47+
],
48+
),
49+
migrations.CreateModel(
50+
name="Crews",
51+
fields=[
52+
(
53+
"id",
54+
models.BigAutoField(
55+
auto_created=True,
56+
primary_key=True,
57+
serialize=False,
58+
verbose_name="ID",
59+
),
60+
),
61+
("name", models.CharField(max_length=32)),
62+
],
63+
),
64+
migrations.RemoveField(
65+
model_name="attendant",
66+
name="discord",
67+
),
68+
migrations.AlterField(
69+
model_name="attendant",
70+
name="nfc_id",
71+
field=models.CharField(max_length=14, unique=True),
72+
),
73+
migrations.AddField(
74+
model_name="attendant",
75+
name="crewinfo",
76+
field=models.ForeignKey(
77+
default=None,
78+
null=True,
79+
on_delete=django.db.models.deletion.CASCADE,
80+
to="database.crewmember",
81+
),
82+
),
83+
migrations.AddField(
84+
model_name="crewmember",
85+
name="crew",
86+
field=models.ForeignKey(
87+
null=True,
88+
on_delete=django.db.models.deletion.SET_NULL,
89+
to="database.crews",
90+
),
91+
),
92+
]

migrations/0004_remove_attendant_discord_crew.py

Lines changed: 0 additions & 31 deletions
This file was deleted.
Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
# Generated by Django 5.1.5 on 2025-02-27 15:12
2+
3+
import database.validators
4+
import django.db.models.deletion
5+
from django.db import migrations, models
6+
7+
8+
class Migration(migrations.Migration):
9+
10+
dependencies = [
11+
("database", "0004_remove_attendant_discord_crew"),
12+
]
13+
14+
operations = [
15+
migrations.CreateModel(
16+
name="Crewmember",
17+
fields=[
18+
(
19+
"id",
20+
models.BigAutoField(
21+
auto_created=True,
22+
primary_key=True,
23+
serialize=False,
24+
verbose_name="ID",
25+
),
26+
),
27+
("first_name", models.CharField(max_length=100)),
28+
("last_name", models.CharField(max_length=100)),
29+
("email", models.EmailField(max_length=200)),
30+
(
31+
"discord",
32+
models.CharField(
33+
blank=True,
34+
max_length=32,
35+
null=True,
36+
unique=True,
37+
validators=[database.validators.discord_username_validator],
38+
),
39+
),
40+
("phone_number", models.CharField(max_length=15)),
41+
(
42+
"profile_image",
43+
models.ImageField(
44+
blank=True, null=True, upload_to="profile_images/"
45+
),
46+
),
47+
],
48+
),
49+
migrations.CreateModel(
50+
name="Crews",
51+
fields=[
52+
(
53+
"id",
54+
models.BigAutoField(
55+
auto_created=True,
56+
primary_key=True,
57+
serialize=False,
58+
verbose_name="ID",
59+
),
60+
),
61+
("name", models.CharField(max_length=32)),
62+
],
63+
),
64+
migrations.AlterField(
65+
model_name="attendant",
66+
name="nfc_id",
67+
field=models.CharField(max_length=14, unique=True),
68+
),
69+
migrations.AddField(
70+
model_name="attendant",
71+
name="crewinfo",
72+
field=models.ForeignKey(
73+
default=None,
74+
null=True,
75+
on_delete=django.db.models.deletion.CASCADE,
76+
to="database.crewmember",
77+
),
78+
),
79+
migrations.AddField(
80+
model_name="crewmember",
81+
name="crew",
82+
field=models.ForeignKey(
83+
null=True,
84+
on_delete=django.db.models.deletion.SET_NULL,
85+
to="database.crews",
86+
),
87+
),
88+
migrations.DeleteModel(
89+
name="Crew",
90+
),
91+
]

models.py

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,33 +6,40 @@
66

77
class Attendant(models.Model):
88
ticket_id = models.CharField(max_length=128, unique=True, null=True, blank=True)
9-
nfc_id = models.BinaryField(max_length=7, unique=True, null=False, blank=False)
9+
nfc_id = models.CharField(max_length=14, unique=True, null=False, blank=False)
1010
is_crew = models.BooleanField(default=False)
1111
_is_valid = models.BooleanField(name="is_valid", default=True)
1212

13+
crewinfo = models.ForeignKey(
14+
"Crewmember", on_delete=models.CASCADE, default=None, null=True
15+
)
16+
1317
@property
1418
def is_valid(self):
1519
# TODO: Validate daily ticket here
1620
return self._is_valid
1721

1822

23+
class Crews(models.Model):
24+
name = models.CharField(max_length=32)
1925

20-
class Crew(models.Model):
21-
attendant = models.ForeignKey(Attendant,on_delete=models.CASCADE) ##if we are deleting attandant object, delete crew aswell.
22-
first_name = models.CharField(max_length=30)
23-
last_name = models.CharField(max_length=30)
24-
email = models.EmailField(max_length=100)
25-
phone_number = models.CharField(max_length=12)
2626

27+
class Crewmember(models.Model):
28+
first_name = models.CharField(max_length=100)
29+
last_name = models.CharField(max_length=100)
30+
email = models.EmailField(max_length=200)
2731
discord = models.CharField(
2832
max_length=32,
2933
unique=True,
3034
null=True,
3135
blank=True,
3236
validators=[discord_username_validator],
3337
)
38+
phone_number = models.CharField(max_length=15)
39+
crew = models.ForeignKey(Crews, on_delete=models.SET_NULL, null=True)
40+
profile_image = models.ImageField(
41+
upload_to="profile_images/", blank=True, null=True
42+
)
3443

3544
def __str__(self):
3645
return f"{self.first_name} {self.last_name}"
37-
38-

0 commit comments

Comments
 (0)