Skip to content

Commit 5ce8602

Browse files
committed
Add models for crew
1 parent 2bbe058 commit 5ce8602

3 files changed

Lines changed: 129 additions & 7 deletions

File tree

admin.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,11 @@
11
from django.contrib import admin
22

33
# Register your models here.
4+
from .models import Crewmember
5+
6+
7+
class CrewmemberAdmin(admin.ModelAdmin):
8+
list_display = ["first_name", "last_name", "email", "phone_number"]
9+
10+
11+
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+
]

models.py

Lines changed: 29 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,18 +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)
10+
is_crew = models.BooleanField(default=False)
11+
_is_valid = models.BooleanField(name="is_valid", default=True)
12+
13+
crewinfo = models.ForeignKey(
14+
"Crewmember", on_delete=models.CASCADE, default=None, null=True
15+
)
16+
17+
@property
18+
def is_valid(self):
19+
# TODO: Validate daily ticket here
20+
return self._is_valid
21+
22+
23+
class Crews(models.Model):
24+
name = models.CharField(max_length=32)
25+
26+
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)
1031
discord = models.CharField(
1132
max_length=32,
1233
unique=True,
1334
null=True,
1435
blank=True,
1536
validators=[discord_username_validator],
1637
)
17-
is_crew = models.BooleanField(default=False)
18-
_is_valid = models.BooleanField(name="is_valid", default=True)
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+
)
1943

20-
@property
21-
def is_valid(self):
22-
# TODO: Validate daily ticket here
23-
return self._is_valid
44+
def __str__(self):
45+
return f"{self.first_name} {self.last_name}"

0 commit comments

Comments
 (0)