diff --git a/.idea/.gitignore b/.idea/.gitignore
deleted file mode 100644
index 6244ba1..0000000
--- a/.idea/.gitignore
+++ /dev/null
@@ -1,8 +0,0 @@
-# Default ignored files
-/shelf/
-/workspace.xml
-# Datasource local storage ignored files
-/../../../../../../../../:\Users\miker\Documents\Projects\Houston ARTCC\zhu-core\.idea/dataSources/
-/dataSources.local.xml
-# Editor-based HTTP Client requests
-/httpRequests/
diff --git a/.idea/dataSources.xml b/.idea/dataSources.xml
deleted file mode 100644
index 859c59b..0000000
--- a/.idea/dataSources.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-
-
- sqlite.xerial
- true
- org.sqlite.JDBC
- jdbc:sqlite:C:\Users\miker\Documents\Projects\Houston ARTCC\zhu-core\db.sqlite3
- $ProjectFileDir$
-
-
- file://$APPLICATION_CONFIG_DIR$/jdbc-drivers/Xerial SQLiteJDBC/3.31.1/sqlite-jdbc-3.31.1.jar
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/discord.xml b/.idea/discord.xml
deleted file mode 100644
index cd711a0..0000000
--- a/.idea/discord.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml
deleted file mode 100644
index ae93aab..0000000
--- a/.idea/inspectionProfiles/Project_Default.xml
+++ /dev/null
@@ -1,62 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml
deleted file mode 100644
index 105ce2d..0000000
--- a/.idea/inspectionProfiles/profiles_settings.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
deleted file mode 100644
index a6d48a2..0000000
--- a/.idea/misc.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
deleted file mode 100644
index b542c65..0000000
--- a/.idea/modules.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/ruff.xml b/.idea/ruff.xml
deleted file mode 100644
index 94a50bd..0000000
--- a/.idea/ruff.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/runConfigurations/Start.xml b/.idea/runConfigurations/Start.xml
deleted file mode 100644
index ba653ef..0000000
--- a/.idea/runConfigurations/Start.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
deleted file mode 100644
index 94a25f7..0000000
--- a/.idea/vcs.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/zhu-core.iml b/.idea/zhu-core.iml
deleted file mode 100644
index 0646d89..0000000
--- a/.idea/zhu-core.iml
+++ /dev/null
@@ -1,29 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/Dockerfile b/Dockerfile
index 3552985..3e6d20d 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,7 +1,10 @@
-FROM python:3.10-alpine
+FROM python:3.10-slim
WORKDIR /app
COPY requirements.txt /app
+
RUN --mount=type=cache,target=/root/.cache/pip \
- pip3 install -r requirements.txt
+ apt-get update \
+ && apt-get -y install libpq-dev gcc \
+ && pip3 install -r requirements.txt
diff --git a/apps/announcements/migrations/0001_initial.py b/apps/announcements/migrations/0001_initial.py
index 3050855..06e7384 100644
--- a/apps/announcements/migrations/0001_initial.py
+++ b/apps/announcements/migrations/0001_initial.py
@@ -1,8 +1,6 @@
-# Generated by Django 3.1.4 on 2021-01-04 16:03
+# Generated by Django 5.0.3 on 2024-03-08 05:37
-from django.conf import settings
from django.db import migrations, models
-import django.db.models.deletion
class Migration(migrations.Migration):
@@ -10,7 +8,6 @@ class Migration(migrations.Migration):
initial = True
dependencies = [
- migrations.swappable_dependency(settings.AUTH_USER_MODEL),
]
operations = [
@@ -21,7 +18,9 @@ class Migration(migrations.Migration):
('title', models.CharField(max_length=128)),
('body', models.TextField()),
('posted', models.DateTimeField(auto_now_add=True)),
- ('author', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='announcements', to=settings.AUTH_USER_MODEL)),
],
+ options={
+ 'verbose_name': 'Announcement',
+ },
),
]
diff --git a/apps/announcements/migrations/0002_auto_20210509_1710.py b/apps/announcements/migrations/0002_auto_20210509_1710.py
deleted file mode 100644
index 7c9274a..0000000
--- a/apps/announcements/migrations/0002_auto_20210509_1710.py
+++ /dev/null
@@ -1,17 +0,0 @@
-# Generated by Django 3.1.7 on 2021-05-09 21:10
-
-from django.db import migrations
-
-
-class Migration(migrations.Migration):
-
- dependencies = [
- ('announcements', '0001_initial'),
- ]
-
- operations = [
- migrations.AlterModelOptions(
- name='announcement',
- options={'verbose_name': 'Announcement'},
- ),
- ]
diff --git a/apps/events/migrations/0005_auto_20210319_1800.py b/apps/announcements/migrations/0002_initial.py
similarity index 52%
rename from apps/events/migrations/0005_auto_20210319_1800.py
rename to apps/announcements/migrations/0002_initial.py
index 3b3fac0..ade5400 100644
--- a/apps/events/migrations/0005_auto_20210319_1800.py
+++ b/apps/announcements/migrations/0002_initial.py
@@ -1,21 +1,23 @@
-# Generated by Django 3.1.7 on 2021-03-19 22:00
+# Generated by Django 5.0.3 on 2024-03-08 05:37
+import django.db.models.deletion
from django.conf import settings
from django.db import migrations, models
-import django.db.models.deletion
class Migration(migrations.Migration):
+ initial = True
+
dependencies = [
+ ('announcements', '0001_initial'),
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
- ('events', '0004_remove_eventposition_user'),
]
operations = [
- migrations.AlterField(
- model_name='positionshift',
- name='user',
- field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='event_shifts', to=settings.AUTH_USER_MODEL),
+ migrations.AddField(
+ model_name='announcement',
+ name='author',
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='announcements', to=settings.AUTH_USER_MODEL),
),
]
diff --git a/apps/booking/migrations/0001_initial.py b/apps/booking/migrations/0001_initial.py
index 35a3db4..fe7934c 100644
--- a/apps/booking/migrations/0001_initial.py
+++ b/apps/booking/migrations/0001_initial.py
@@ -1,8 +1,6 @@
-# Generated by Django 3.1.7 on 2021-04-09 15:22
+# Generated by Django 5.0.3 on 2024-03-08 05:37
-from django.conf import settings
from django.db import migrations, models
-import django.db.models.deletion
class Migration(migrations.Migration):
@@ -10,7 +8,6 @@ class Migration(migrations.Migration):
initial = True
dependencies = [
- migrations.swappable_dependency(settings.AUTH_USER_MODEL),
]
operations = [
@@ -21,7 +18,9 @@ class Migration(migrations.Migration):
('callsign', models.CharField(max_length=16)),
('start', models.DateTimeField()),
('end', models.DateTimeField()),
- ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='bookings', to=settings.AUTH_USER_MODEL)),
],
+ options={
+ 'verbose_name': 'Booking',
+ },
),
]
diff --git a/apps/booking/migrations/0002_auto_20210509_1710.py b/apps/booking/migrations/0002_auto_20210509_1710.py
deleted file mode 100644
index f93b666..0000000
--- a/apps/booking/migrations/0002_auto_20210509_1710.py
+++ /dev/null
@@ -1,17 +0,0 @@
-# Generated by Django 3.1.7 on 2021-05-09 21:10
-
-from django.db import migrations
-
-
-class Migration(migrations.Migration):
-
- dependencies = [
- ('booking', '0001_initial'),
- ]
-
- operations = [
- migrations.AlterModelOptions(
- name='booking',
- options={'verbose_name': 'Booking'},
- ),
- ]
diff --git a/apps/booking/migrations/0002_initial.py b/apps/booking/migrations/0002_initial.py
new file mode 100644
index 0000000..9c7f884
--- /dev/null
+++ b/apps/booking/migrations/0002_initial.py
@@ -0,0 +1,23 @@
+# Generated by Django 5.0.3 on 2024-03-08 05:37
+
+import django.db.models.deletion
+from django.conf import settings
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ initial = True
+
+ dependencies = [
+ ('booking', '0001_initial'),
+ migrations.swappable_dependency(settings.AUTH_USER_MODEL),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='booking',
+ name='user',
+ field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='bookings', to=settings.AUTH_USER_MODEL),
+ ),
+ ]
diff --git a/apps/connections/migrations/0001_initial.py b/apps/connections/migrations/0001_initial.py
index 3518440..395c7c4 100644
--- a/apps/connections/migrations/0001_initial.py
+++ b/apps/connections/migrations/0001_initial.py
@@ -1,4 +1,4 @@
-# Generated by Django 3.1.4 on 2020-12-24 21:19
+# Generated by Django 5.0.3 on 2024-03-08 05:37
from django.db import migrations, models
@@ -20,7 +20,7 @@ class Migration(migrations.Migration):
('duration', models.DurationField()),
],
options={
- 'verbose_name_plural': 'Controller Sessions',
+ 'verbose_name': 'Controller session',
},
),
migrations.CreateModel(
@@ -32,7 +32,7 @@ class Migration(migrations.Migration):
('last_updated', models.DateTimeField(auto_now=True)),
],
options={
- 'verbose_name_plural': 'Online Controllers',
+ 'verbose_name': 'Online controller',
},
),
]
diff --git a/apps/connections/migrations/0002_auto_20201224_1619.py b/apps/connections/migrations/0002_initial.py
similarity index 94%
rename from apps/connections/migrations/0002_auto_20201224_1619.py
rename to apps/connections/migrations/0002_initial.py
index 86edf98..051d1ee 100644
--- a/apps/connections/migrations/0002_auto_20201224_1619.py
+++ b/apps/connections/migrations/0002_initial.py
@@ -1,8 +1,8 @@
-# Generated by Django 3.1.4 on 2020-12-24 21:19
+# Generated by Django 5.0.3 on 2024-03-08 05:37
+import django.db.models.deletion
from django.conf import settings
from django.db import migrations, models
-import django.db.models.deletion
class Migration(migrations.Migration):
@@ -10,19 +10,19 @@ class Migration(migrations.Migration):
initial = True
dependencies = [
- migrations.swappable_dependency(settings.AUTH_USER_MODEL),
('connections', '0001_initial'),
+ migrations.swappable_dependency(settings.AUTH_USER_MODEL),
]
operations = [
migrations.AddField(
- model_name='onlinecontroller',
+ model_name='controllersession',
name='user',
- field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='controller_online', to=settings.AUTH_USER_MODEL),
+ field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='sessions', to=settings.AUTH_USER_MODEL),
),
migrations.AddField(
- model_name='controllersession',
+ model_name='onlinecontroller',
name='user',
- field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='sessions', to=settings.AUTH_USER_MODEL),
+ field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='controller_online', to=settings.AUTH_USER_MODEL),
),
]
diff --git a/apps/connections/migrations/0003_auto_20210509_1710.py b/apps/connections/migrations/0003_auto_20210509_1710.py
deleted file mode 100644
index d5e7551..0000000
--- a/apps/connections/migrations/0003_auto_20210509_1710.py
+++ /dev/null
@@ -1,21 +0,0 @@
-# Generated by Django 3.1.7 on 2021-05-09 21:10
-
-from django.db import migrations
-
-
-class Migration(migrations.Migration):
-
- dependencies = [
- ('connections', '0002_auto_20201224_1619'),
- ]
-
- operations = [
- migrations.AlterModelOptions(
- name='controllersession',
- options={'verbose_name': 'Controller session'},
- ),
- migrations.AlterModelOptions(
- name='onlinecontroller',
- options={'verbose_name': 'Online controller'},
- ),
- ]
diff --git a/apps/events/app.py b/apps/events/app.py
index 3890436..00e3daa 100644
--- a/apps/events/app.py
+++ b/apps/events/app.py
@@ -1,12 +1,14 @@
from django.apps import AppConfig
from django.db.models.signals import post_save, pre_save
-from .signals import event_webhook_created, event_webhook_edited
-
class EventsConfig(AppConfig):
name = "apps.events"
def ready(self):
- pre_save.connect(event_webhook_edited)
- post_save.connect(event_webhook_created)
+ # This needs to be imported here or else the app registry complains that apps aren't loaded yet
+ from .models import Event
+ from .signals import event_webhook_created, event_webhook_edited
+
+ pre_save.connect(event_webhook_edited, sender=Event)
+ post_save.connect(event_webhook_created, sender=Event)
diff --git a/apps/events/migrations/0001_initial.py b/apps/events/migrations/0001_initial.py
index e342ab4..996cbe8 100644
--- a/apps/events/migrations/0001_initial.py
+++ b/apps/events/migrations/0001_initial.py
@@ -1,5 +1,6 @@
-# Generated by Django 3.1.4 on 2020-12-24 21:19
+# Generated by Django 5.0.3 on 2024-03-08 05:37
+import django.db.models.deletion
from django.db import migrations, models
@@ -19,28 +20,41 @@ class Migration(migrations.Migration):
('banner', models.URLField(blank=True, null=True)),
('start', models.DateTimeField()),
('end', models.DateTimeField()),
- ('host', models.CharField(max_length=32)),
+ ('host', models.CharField(max_length=64)),
('description', models.TextField(blank=True, null=True)),
('hidden', models.BooleanField(default=False)),
],
+ options={
+ 'verbose_name': 'Event',
+ },
),
migrations.CreateModel(
- name='EventPosition',
+ name='PositionPreset',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('name', models.CharField(max_length=64)),
+ ('positions', models.JSONField(default=list)),
+ ],
+ options={
+ 'verbose_name': 'Position preset',
+ },
+ ),
+ migrations.CreateModel(
+ name='PositionShift',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
- ('callsign', models.CharField(max_length=16)),
],
options={
- 'verbose_name_plural': 'Event Positions',
+ 'verbose_name': 'Position shift',
},
),
migrations.CreateModel(
- name='EventPositionRequest',
+ name='ShiftRequest',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
],
options={
- 'verbose_name_plural': 'Event Position Requests',
+ 'verbose_name': 'Shift request',
},
),
migrations.CreateModel(
@@ -52,10 +66,34 @@ class Migration(migrations.Migration):
('start', models.DateTimeField()),
('end', models.DateTimeField()),
('host', models.CharField(max_length=32)),
+ ('requested_fields', models.JSONField(blank=True, default=list)),
('description', models.TextField(blank=True, null=True)),
],
options={
- 'verbose_name_plural': 'Event Support Requests',
+ 'verbose_name': 'Event support request',
+ },
+ ),
+ migrations.CreateModel(
+ name='EventPosition',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('callsign', models.CharField(max_length=16)),
+ ('event', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='positions', to='events.event')),
+ ],
+ options={
+ 'verbose_name': 'Event position',
+ },
+ ),
+ migrations.CreateModel(
+ name='EventScore',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('score', models.PositiveIntegerField()),
+ ('notes', models.JSONField()),
+ ('event', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='scores', to='events.event')),
+ ],
+ options={
+ 'verbose_name': 'Event score',
},
),
]
diff --git a/apps/events/migrations/0002_auto_20201224_1619.py b/apps/events/migrations/0002_initial.py
similarity index 57%
rename from apps/events/migrations/0002_auto_20201224_1619.py
rename to apps/events/migrations/0002_initial.py
index 1d747a4..143a752 100644
--- a/apps/events/migrations/0002_auto_20201224_1619.py
+++ b/apps/events/migrations/0002_initial.py
@@ -1,8 +1,8 @@
-# Generated by Django 3.1.4 on 2020-12-24 21:19
+# Generated by Django 5.0.3 on 2024-03-08 05:37
+import django.db.models.deletion
from django.conf import settings
from django.db import migrations, models
-import django.db.models.deletion
class Migration(migrations.Migration):
@@ -10,34 +10,39 @@ class Migration(migrations.Migration):
initial = True
dependencies = [
- migrations.swappable_dependency(settings.AUTH_USER_MODEL),
('events', '0001_initial'),
+ migrations.swappable_dependency(settings.AUTH_USER_MODEL),
]
operations = [
migrations.AddField(
- model_name='supportrequest',
+ model_name='eventscore',
name='user',
- field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='support_requests', to=settings.AUTH_USER_MODEL),
+ field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='event_scores', to=settings.AUTH_USER_MODEL),
),
migrations.AddField(
- model_name='eventpositionrequest',
+ model_name='positionshift',
name='position',
- field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='requests', to='events.eventposition'),
+ field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='shifts', to='events.eventposition'),
),
migrations.AddField(
- model_name='eventpositionrequest',
+ model_name='positionshift',
name='user',
- field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='event_position_requests', to=settings.AUTH_USER_MODEL),
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='event_shifts', to=settings.AUTH_USER_MODEL),
),
migrations.AddField(
- model_name='eventposition',
- name='event',
- field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='positions', to='events.event'),
+ model_name='shiftrequest',
+ name='shift',
+ field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='requests', to='events.positionshift'),
),
migrations.AddField(
- model_name='eventposition',
+ model_name='shiftrequest',
name='user',
- field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='event_positions', to=settings.AUTH_USER_MODEL),
+ field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='shift_requests', to=settings.AUTH_USER_MODEL),
+ ),
+ migrations.AddField(
+ model_name='supportrequest',
+ name='user',
+ field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='support_requests', to=settings.AUTH_USER_MODEL),
),
]
diff --git a/apps/events/migrations/0003_auto_20210125_1251.py b/apps/events/migrations/0003_auto_20210125_1251.py
deleted file mode 100644
index afd79e8..0000000
--- a/apps/events/migrations/0003_auto_20210125_1251.py
+++ /dev/null
@@ -1,55 +0,0 @@
-# Generated by Django 3.1.4 on 2021-01-25 17:51
-
-from django.conf import settings
-from django.db import migrations, models
-import django.db.models.deletion
-
-
-class Migration(migrations.Migration):
-
- dependencies = [
- migrations.swappable_dependency(settings.AUTH_USER_MODEL),
- ('events', '0002_auto_20201224_1619'),
- ]
-
- operations = [
- migrations.CreateModel(
- name='PositionShift',
- fields=[
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
- ('start', models.DateTimeField()),
- ('end', models.DateTimeField()),
- ],
- options={
- 'verbose_name_plural': 'Position Shifts',
- },
- ),
- migrations.AlterModelOptions(
- name='eventpositionrequest',
- options={},
- ),
- migrations.DeleteModel(
- name='eventpositionrequest'
- ),
- migrations.CreateModel(
- name='ShiftRequest',
- fields=[
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
- ('shift', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='requests', to='events.positionshift')),
- ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='shift_requests', to=settings.AUTH_USER_MODEL)),
- ],
- options={
- 'verbose_name_plural': 'Shift Requests',
- },
- ),
- migrations.AddField(
- model_name='positionshift',
- name='position',
- field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='shifts', to='events.eventposition'),
- ),
- migrations.AddField(
- model_name='positionshift',
- name='user',
- field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='event_positions', to=settings.AUTH_USER_MODEL),
- ),
- ]
diff --git a/apps/events/migrations/0004_remove_eventposition_user.py b/apps/events/migrations/0004_remove_eventposition_user.py
deleted file mode 100644
index 8aafeba..0000000
--- a/apps/events/migrations/0004_remove_eventposition_user.py
+++ /dev/null
@@ -1,17 +0,0 @@
-# Generated by Django 3.1.4 on 2021-02-15 19:32
-
-from django.db import migrations
-
-
-class Migration(migrations.Migration):
-
- dependencies = [
- ('events', '0003_auto_20210125_1251'),
- ]
-
- operations = [
- migrations.RemoveField(
- model_name='eventposition',
- name='user',
- ),
- ]
diff --git a/apps/events/migrations/0006_auto_20210422_1129.py b/apps/events/migrations/0006_auto_20210422_1129.py
deleted file mode 100644
index 59235cd..0000000
--- a/apps/events/migrations/0006_auto_20210422_1129.py
+++ /dev/null
@@ -1,21 +0,0 @@
-# Generated by Django 3.1.7 on 2021-04-22 15:29
-
-from django.db import migrations
-
-
-class Migration(migrations.Migration):
-
- dependencies = [
- ('events', '0005_auto_20210319_1800'),
- ]
-
- operations = [
- migrations.RemoveField(
- model_name='positionshift',
- name='end',
- ),
- migrations.RemoveField(
- model_name='positionshift',
- name='start',
- ),
- ]
diff --git a/apps/events/migrations/0007_positionpreset.py b/apps/events/migrations/0007_positionpreset.py
deleted file mode 100644
index 151edd2..0000000
--- a/apps/events/migrations/0007_positionpreset.py
+++ /dev/null
@@ -1,24 +0,0 @@
-# Generated by Django 3.1.7 on 2021-05-04 15:24
-
-from django.db import migrations, models
-
-
-class Migration(migrations.Migration):
-
- dependencies = [
- ('events', '0006_auto_20210422_1129'),
- ]
-
- operations = [
- migrations.CreateModel(
- name='PositionPreset',
- fields=[
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
- ('name', models.CharField(max_length=64)),
- ('positions', models.JSONField(default=list)),
- ],
- options={
- 'verbose_name_plural': 'Position Presets',
- },
- ),
- ]
diff --git a/apps/events/migrations/0008_auto_20210509_1710.py b/apps/events/migrations/0008_auto_20210509_1710.py
deleted file mode 100644
index 781f2f0..0000000
--- a/apps/events/migrations/0008_auto_20210509_1710.py
+++ /dev/null
@@ -1,37 +0,0 @@
-# Generated by Django 3.1.7 on 2021-05-09 21:10
-
-from django.db import migrations
-
-
-class Migration(migrations.Migration):
-
- dependencies = [
- ('events', '0007_positionpreset'),
- ]
-
- operations = [
- migrations.AlterModelOptions(
- name='event',
- options={'verbose_name': 'Event'},
- ),
- migrations.AlterModelOptions(
- name='eventposition',
- options={'verbose_name': 'Event position'},
- ),
- migrations.AlterModelOptions(
- name='positionpreset',
- options={'verbose_name': 'Position preset'},
- ),
- migrations.AlterModelOptions(
- name='positionshift',
- options={'verbose_name': 'Position shift'},
- ),
- migrations.AlterModelOptions(
- name='shiftrequest',
- options={'verbose_name': 'Shift request'},
- ),
- migrations.AlterModelOptions(
- name='supportrequest',
- options={'verbose_name': 'Event support request'},
- ),
- ]
diff --git a/apps/events/migrations/0009_supportrequest_requested_fields.py b/apps/events/migrations/0009_supportrequest_requested_fields.py
deleted file mode 100644
index 76f745b..0000000
--- a/apps/events/migrations/0009_supportrequest_requested_fields.py
+++ /dev/null
@@ -1,18 +0,0 @@
-# Generated by Django 3.2.4 on 2023-10-20 03:55
-
-from django.db import migrations, models
-
-
-class Migration(migrations.Migration):
-
- dependencies = [
- ('events', '0008_auto_20210509_1710'),
- ]
-
- operations = [
- migrations.AddField(
- model_name='supportrequest',
- name='requested_fields',
- field=models.JSONField(blank=True, default=list),
- ),
- ]
diff --git a/apps/events/migrations/0010_eventscore.py b/apps/events/migrations/0010_eventscore.py
deleted file mode 100644
index a7dbb55..0000000
--- a/apps/events/migrations/0010_eventscore.py
+++ /dev/null
@@ -1,29 +0,0 @@
-# Generated by Django 3.2.4 on 2023-10-20 05:14
-
-from django.conf import settings
-from django.db import migrations, models
-import django.db.models.deletion
-
-
-class Migration(migrations.Migration):
-
- dependencies = [
- migrations.swappable_dependency(settings.AUTH_USER_MODEL),
- ('events', '0009_supportrequest_requested_fields'),
- ]
-
- operations = [
- migrations.CreateModel(
- name='EventScore',
- fields=[
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
- ('score', models.PositiveIntegerField()),
- ('notes', models.JSONField()),
- ('event', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='scores', to='events.event')),
- ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='event_scores', to=settings.AUTH_USER_MODEL)),
- ],
- options={
- 'verbose_name': 'Event score',
- },
- ),
- ]
diff --git a/apps/events/models.py b/apps/events/models.py
index 9fe8186..f30734e 100644
--- a/apps/events/models.py
+++ b/apps/events/models.py
@@ -15,7 +15,7 @@ class Meta:
banner = models.URLField(null=True, blank=True)
start = models.DateTimeField()
end = models.DateTimeField()
- host = models.CharField(max_length=32)
+ host = models.CharField(max_length=64)
description = models.TextField(null=True, blank=True)
hidden = models.BooleanField(default=False)
diff --git a/apps/feedback/migrations/0001_initial.py b/apps/feedback/migrations/0001_initial.py
index eb46f67..391eb11 100644
--- a/apps/feedback/migrations/0001_initial.py
+++ b/apps/feedback/migrations/0001_initial.py
@@ -1,4 +1,4 @@
-# Generated by Django 3.1.4 on 2020-12-24 21:19
+# Generated by Django 5.0.3 on 2024-03-08 05:37
from django.db import migrations, models
@@ -15,17 +15,15 @@ class Migration(migrations.Migration):
name='Feedback',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
- ('callsign', models.CharField(max_length=16)),
+ ('controller_callsign', models.CharField(blank=True, max_length=16, null=True)),
+ ('pilot_callsign', models.CharField(blank=True, max_length=16, null=True)),
('rating', models.IntegerField()),
('comments', models.TextField()),
- ('pilot_cid', models.IntegerField()),
- ('pilot_name', models.CharField(blank=True, max_length=64, null=True)),
- ('pilot_email', models.EmailField(blank=True, max_length=254, null=True)),
- ('pilot_callsign', models.CharField(blank=True, max_length=16, null=True)),
('created', models.DateTimeField(auto_now_add=True)),
('approved', models.BooleanField(default=False)),
],
options={
+ 'verbose_name': 'Feedback',
'verbose_name_plural': 'Feedback',
},
),
diff --git a/apps/feedback/migrations/0002_auto_20201224_1619.py b/apps/feedback/migrations/0002_initial.py
similarity index 57%
rename from apps/feedback/migrations/0002_auto_20201224_1619.py
rename to apps/feedback/migrations/0002_initial.py
index 4690475..02fdd2f 100644
--- a/apps/feedback/migrations/0002_auto_20201224_1619.py
+++ b/apps/feedback/migrations/0002_initial.py
@@ -1,8 +1,8 @@
-# Generated by Django 3.1.4 on 2020-12-24 21:19
+# Generated by Django 5.0.3 on 2024-03-08 05:37
+import django.db.models.deletion
from django.conf import settings
from django.db import migrations, models
-import django.db.models.deletion
class Migration(migrations.Migration):
@@ -10,20 +10,25 @@ class Migration(migrations.Migration):
initial = True
dependencies = [
- migrations.swappable_dependency(settings.AUTH_USER_MODEL),
+ ('events', '0002_initial'),
('feedback', '0001_initial'),
- ('events', '0002_auto_20201224_1619'),
+ migrations.swappable_dependency(settings.AUTH_USER_MODEL),
]
operations = [
migrations.AddField(
model_name='feedback',
name='controller',
- field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='controller_feedback', to=settings.AUTH_USER_MODEL),
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='feedback', to=settings.AUTH_USER_MODEL),
),
migrations.AddField(
model_name='feedback',
name='event',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='feedback', to='events.event'),
),
+ migrations.AddField(
+ model_name='feedback',
+ name='pilot',
+ field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='feedback_given', to=settings.AUTH_USER_MODEL),
+ ),
]
diff --git a/apps/feedback/migrations/0003_auto_20210111_0957.py b/apps/feedback/migrations/0003_auto_20210111_0957.py
deleted file mode 100644
index 860d710..0000000
--- a/apps/feedback/migrations/0003_auto_20210111_0957.py
+++ /dev/null
@@ -1,43 +0,0 @@
-# Generated by Django 3.1.4 on 2021-01-11 14:57
-
-from django.conf import settings
-from django.db import migrations, models
-import django.db.models.deletion
-
-
-class Migration(migrations.Migration):
-
- dependencies = [
- migrations.swappable_dependency(settings.AUTH_USER_MODEL),
- ('feedback', '0002_auto_20201224_1619'),
- ]
-
- operations = [
- migrations.RenameField(
- model_name='feedback',
- old_name='callsign',
- new_name='controller_callsign',
- ),
- migrations.RemoveField(
- model_name='feedback',
- name='pilot_cid',
- ),
- migrations.RemoveField(
- model_name='feedback',
- name='pilot_email',
- ),
- migrations.RemoveField(
- model_name='feedback',
- name='pilot_name',
- ),
- migrations.AddField(
- model_name='feedback',
- name='pilot',
- field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='feedback_given', to=settings.AUTH_USER_MODEL),
- ),
- migrations.AlterField(
- model_name='feedback',
- name='controller',
- field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='feedback', to=settings.AUTH_USER_MODEL),
- ),
- ]
diff --git a/apps/feedback/migrations/0004_auto_20210112_1023.py b/apps/feedback/migrations/0004_auto_20210112_1023.py
deleted file mode 100644
index 9b9d43e..0000000
--- a/apps/feedback/migrations/0004_auto_20210112_1023.py
+++ /dev/null
@@ -1,26 +0,0 @@
-# Generated by Django 3.1.4 on 2021-01-12 15:23
-
-from django.conf import settings
-from django.db import migrations, models
-import django.db.models.deletion
-
-
-class Migration(migrations.Migration):
-
- dependencies = [
- migrations.swappable_dependency(settings.AUTH_USER_MODEL),
- ('feedback', '0003_auto_20210111_0957'),
- ]
-
- operations = [
- migrations.AlterField(
- model_name='feedback',
- name='controller',
- field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='feedback', to=settings.AUTH_USER_MODEL),
- ),
- migrations.AlterField(
- model_name='feedback',
- name='controller_callsign',
- field=models.CharField(blank=True, max_length=16, null=True),
- ),
- ]
diff --git a/apps/feedback/migrations/0005_auto_20210509_1710.py b/apps/feedback/migrations/0005_auto_20210509_1710.py
deleted file mode 100644
index 032f98c..0000000
--- a/apps/feedback/migrations/0005_auto_20210509_1710.py
+++ /dev/null
@@ -1,17 +0,0 @@
-# Generated by Django 3.1.7 on 2021-05-09 21:10
-
-from django.db import migrations
-
-
-class Migration(migrations.Migration):
-
- dependencies = [
- ('feedback', '0004_auto_20210112_1023'),
- ]
-
- operations = [
- migrations.AlterModelOptions(
- name='feedback',
- options={'verbose_name': 'Feedback', 'verbose_name_plural': 'Feedback'},
- ),
- ]
diff --git a/apps/loa/migrations/0001_initial.py b/apps/loa/migrations/0001_initial.py
index 4c56e25..bd65426 100644
--- a/apps/loa/migrations/0001_initial.py
+++ b/apps/loa/migrations/0001_initial.py
@@ -1,8 +1,6 @@
-# Generated by Django 3.1.7 on 2021-04-27 00:25
+# Generated by Django 5.0.3 on 2024-03-08 05:37
-from django.conf import settings
from django.db import migrations, models
-import django.db.models.deletion
class Migration(migrations.Migration):
@@ -10,7 +8,6 @@ class Migration(migrations.Migration):
initial = True
dependencies = [
- migrations.swappable_dependency(settings.AUTH_USER_MODEL),
]
operations = [
@@ -22,7 +19,9 @@ class Migration(migrations.Migration):
('end', models.DateField()),
('remarks', models.TextField()),
('approved', models.BooleanField(default=False)),
- ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='loa_requests', to=settings.AUTH_USER_MODEL)),
],
+ options={
+ 'verbose_name': 'LOA',
+ },
),
]
diff --git a/apps/loa/migrations/0002_auto_20210509_1710.py b/apps/loa/migrations/0002_auto_20210509_1710.py
deleted file mode 100644
index a8d62f6..0000000
--- a/apps/loa/migrations/0002_auto_20210509_1710.py
+++ /dev/null
@@ -1,17 +0,0 @@
-# Generated by Django 3.1.7 on 2021-05-09 21:10
-
-from django.db import migrations
-
-
-class Migration(migrations.Migration):
-
- dependencies = [
- ('loa', '0001_initial'),
- ]
-
- operations = [
- migrations.AlterModelOptions(
- name='loa',
- options={'verbose_name': 'LOA'},
- ),
- ]
diff --git a/apps/loa/migrations/0003_alter_loa_user.py b/apps/loa/migrations/0002_initial.py
similarity index 78%
rename from apps/loa/migrations/0003_alter_loa_user.py
rename to apps/loa/migrations/0002_initial.py
index 880d085..30f3e8e 100644
--- a/apps/loa/migrations/0003_alter_loa_user.py
+++ b/apps/loa/migrations/0002_initial.py
@@ -1,4 +1,4 @@
-# Generated by Django 5.0.1 on 2024-01-28 15:27
+# Generated by Django 5.0.3 on 2024-03-08 05:37
import django.db.models.deletion
from django.conf import settings
@@ -7,13 +7,15 @@
class Migration(migrations.Migration):
+ initial = True
+
dependencies = [
- ('loa', '0002_auto_20210509_1710'),
+ ('loa', '0001_initial'),
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
]
operations = [
- migrations.AlterField(
+ migrations.AddField(
model_name='loa',
name='user',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='loas', to=settings.AUTH_USER_MODEL),
diff --git a/apps/mailer/migrations/0001_initial.py b/apps/mailer/migrations/0001_initial.py
index 164bc5b..afb6cf9 100644
--- a/apps/mailer/migrations/0001_initial.py
+++ b/apps/mailer/migrations/0001_initial.py
@@ -1,4 +1,4 @@
-# Generated by Django 3.1.7 on 2021-05-13 22:43
+# Generated by Django 5.0.3 on 2024-03-08 05:37
from django.db import migrations, models
@@ -20,10 +20,11 @@ class Migration(migrations.Migration):
('text_body', models.TextField()),
('from_email', models.EmailField(max_length=254, null=True)),
('to_email', models.TextField()),
- ('cc_email', models.TextField(null=True)),
- ('bcc_email', models.TextField(null=True)),
+ ('cc_email', models.CharField(max_length=255, null=True)),
+ ('bcc_email', models.CharField(max_length=255, null=True)),
('status', models.IntegerField(choices=[(0, 'Pending'), (1, 'Failed'), (2, 'Sent')], default=0)),
('last_attempt', models.DateTimeField(null=True)),
+ ('error', models.TextField(null=True)),
],
),
]
diff --git a/apps/mailer/migrations/0002_auto_20210513_1905.py b/apps/mailer/migrations/0002_auto_20210513_1905.py
deleted file mode 100644
index 773b324..0000000
--- a/apps/mailer/migrations/0002_auto_20210513_1905.py
+++ /dev/null
@@ -1,28 +0,0 @@
-# Generated by Django 3.1.7 on 2021-05-13 23:05
-
-from django.db import migrations, models
-
-
-class Migration(migrations.Migration):
-
- dependencies = [
- ('mailer', '0001_initial'),
- ]
-
- operations = [
- migrations.AddField(
- model_name='email',
- name='error',
- field=models.TextField(null=True),
- ),
- migrations.AlterField(
- model_name='email',
- name='bcc_email',
- field=models.CharField(max_length=255, null=True),
- ),
- migrations.AlterField(
- model_name='email',
- name='cc_email',
- field=models.CharField(max_length=255, null=True),
- ),
- ]
diff --git a/apps/resources/migrations/0001_initial.py b/apps/resources/migrations/0001_initial.py
index 834d16b..3c4f0b2 100644
--- a/apps/resources/migrations/0001_initial.py
+++ b/apps/resources/migrations/0001_initial.py
@@ -1,4 +1,4 @@
-# Generated by Django 3.1.4 on 2020-12-24 21:19
+# Generated by Django 5.0.3 on 2024-03-08 05:37
from django.db import migrations, models
@@ -16,9 +16,12 @@ class Migration(migrations.Migration):
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=128)),
- ('category', models.CharField(choices=[('VRC', 'VRC'), ('vSTARS', 'vSTARS'), ('vERAM', 'vERAM'), ('vATIS', 'vATIS'), ('SOP', 'SOP'), ('LOA', 'LOA'), ('MAVP', 'MAVP'), ('Misc', 'Misc')], max_length=16)),
+ ('category', models.CharField(choices=[('POLY', 'Policy'), ('PROC', 'Procedure'), ('LOA', 'LOA'), ('vATIS', 'vATIS Profile'), ('RVM', 'RVM List'), ('REF', 'Reference')], max_length=16)),
('path', models.FileField(upload_to='resources/')),
('updated', models.DateTimeField(auto_now=True)),
],
+ options={
+ 'verbose_name': 'Resource',
+ },
),
]
diff --git a/apps/resources/migrations/0002_auto_20210509_1710.py b/apps/resources/migrations/0002_auto_20210509_1710.py
deleted file mode 100644
index cf669c1..0000000
--- a/apps/resources/migrations/0002_auto_20210509_1710.py
+++ /dev/null
@@ -1,17 +0,0 @@
-# Generated by Django 3.1.7 on 2021-05-09 21:10
-
-from django.db import migrations
-
-
-class Migration(migrations.Migration):
-
- dependencies = [
- ('resources', '0001_initial'),
- ]
-
- operations = [
- migrations.AlterModelOptions(
- name='resource',
- options={'verbose_name': 'Resource'},
- ),
- ]
diff --git a/apps/resources/migrations/0003_alter_resource_category.py b/apps/resources/migrations/0003_alter_resource_category.py
deleted file mode 100644
index 4573937..0000000
--- a/apps/resources/migrations/0003_alter_resource_category.py
+++ /dev/null
@@ -1,18 +0,0 @@
-# Generated by Django 3.2.4 on 2023-10-11 14:01
-
-from django.db import migrations, models
-
-
-class Migration(migrations.Migration):
-
- dependencies = [
- ('resources', '0002_auto_20210509_1710'),
- ]
-
- operations = [
- migrations.AlterField(
- model_name='resource',
- name='category',
- field=models.CharField(choices=[('POLY', 'Policies'), ('PROC', 'Procedures'), ('LOA', 'LOAs'), ('RVM', 'RVM Lists'), ('REF', 'References')], max_length=16),
- ),
- ]
diff --git a/apps/resources/migrations/0004_alter_resource_category.py b/apps/resources/migrations/0004_alter_resource_category.py
deleted file mode 100644
index bc86228..0000000
--- a/apps/resources/migrations/0004_alter_resource_category.py
+++ /dev/null
@@ -1,18 +0,0 @@
-# Generated by Django 3.2.4 on 2023-10-12 18:57
-
-from django.db import migrations, models
-
-
-class Migration(migrations.Migration):
-
- dependencies = [
- ('resources', '0003_alter_resource_category'),
- ]
-
- operations = [
- migrations.AlterField(
- model_name='resource',
- name='category',
- field=models.CharField(choices=[('POLY', 'Policie'), ('PROC', 'Procedure'), ('LOA', 'LOA'), ('vATIS', 'vATIS Profile'), ('RVM', 'RVM List'), ('REF', 'Reference')], max_length=16),
- ),
- ]
diff --git a/apps/resources/migrations/0005_alter_resource_category.py b/apps/resources/migrations/0005_alter_resource_category.py
deleted file mode 100644
index b2c077a..0000000
--- a/apps/resources/migrations/0005_alter_resource_category.py
+++ /dev/null
@@ -1,18 +0,0 @@
-# Generated by Django 3.2.4 on 2023-10-12 19:09
-
-from django.db import migrations, models
-
-
-class Migration(migrations.Migration):
-
- dependencies = [
- ('resources', '0004_alter_resource_category'),
- ]
-
- operations = [
- migrations.AlterField(
- model_name='resource',
- name='category',
- field=models.CharField(choices=[('POLY', 'Policy'), ('PROC', 'Procedure'), ('LOA', 'LOA'), ('vATIS', 'vATIS Profile'), ('RVM', 'RVM List'), ('REF', 'Reference')], max_length=16),
- ),
- ]
diff --git a/apps/tmu/migrations/0001_initial.py b/apps/tmu/migrations/0001_initial.py
index 4ce6b3c..2270061 100644
--- a/apps/tmu/migrations/0001_initial.py
+++ b/apps/tmu/migrations/0001_initial.py
@@ -1,4 +1,4 @@
-# Generated by Django 3.1.4 on 2020-12-24 21:19
+# Generated by Django 5.0.3 on 2024-03-08 05:37
from django.db import migrations, models
@@ -23,9 +23,23 @@ class Migration(migrations.Migration):
('updated', models.DateTimeField(auto_now=True)),
],
options={
+ 'verbose_name': 'ATIS',
'verbose_name_plural': 'ATIS',
},
),
+ migrations.CreateModel(
+ name='METAR',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('station', models.CharField(max_length=4)),
+ ('raw', models.TextField()),
+ ('flight_rules', models.CharField(max_length=4)),
+ ('timestamp', models.DateTimeField()),
+ ],
+ options={
+ 'verbose_name': 'METAR',
+ },
+ ),
migrations.CreateModel(
name='TMUNotice',
fields=[
@@ -35,7 +49,7 @@ class Migration(migrations.Migration):
('time_expires', models.DateTimeField()),
],
options={
- 'verbose_name_plural': 'TMU Notices',
+ 'verbose_name': 'TMU notice',
},
),
]
diff --git a/apps/tmu/migrations/0002_metar.py b/apps/tmu/migrations/0002_metar.py
deleted file mode 100644
index 2b7fe30..0000000
--- a/apps/tmu/migrations/0002_metar.py
+++ /dev/null
@@ -1,26 +0,0 @@
-# Generated by Django 3.1.4 on 2021-01-23 23:22
-
-from django.db import migrations, models
-
-
-class Migration(migrations.Migration):
-
- dependencies = [
- ('tmu', '0001_initial'),
- ]
-
- operations = [
- migrations.CreateModel(
- name='METAR',
- fields=[
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
- ('station', models.CharField(max_length=4)),
- ('raw', models.TextField()),
- ('flight_rules', models.CharField(max_length=4)),
- ('timestamp', models.DateTimeField()),
- ],
- options={
- 'verbose_name_plural': 'METARs',
- },
- ),
- ]
diff --git a/apps/tmu/migrations/0003_auto_20210509_1710.py b/apps/tmu/migrations/0003_auto_20210509_1710.py
deleted file mode 100644
index 0e3f516..0000000
--- a/apps/tmu/migrations/0003_auto_20210509_1710.py
+++ /dev/null
@@ -1,25 +0,0 @@
-# Generated by Django 3.1.7 on 2021-05-09 21:10
-
-from django.db import migrations
-
-
-class Migration(migrations.Migration):
-
- dependencies = [
- ('tmu', '0002_metar'),
- ]
-
- operations = [
- migrations.AlterModelOptions(
- name='atis',
- options={'verbose_name': 'ATIS', 'verbose_name_plural': 'ATIS'},
- ),
- migrations.AlterModelOptions(
- name='metar',
- options={'verbose_name': 'METAR'},
- ),
- migrations.AlterModelOptions(
- name='tmunotice',
- options={'verbose_name': 'TMU notice'},
- ),
- ]
diff --git a/apps/training/app.py b/apps/training/app.py
index 8a24056..2932eec 100644
--- a/apps/training/app.py
+++ b/apps/training/app.py
@@ -1,11 +1,13 @@
from django.apps import AppConfig
from django.db.models.signals import pre_save
-from .signals import update_ctrs
-
class TrainingConfig(AppConfig):
name = "apps.training"
def ready(self):
- pre_save.connect(update_ctrs)
+ # This needs to be imported here or else the app registry complains that apps aren't loaded yet
+ from .models import TrainingSession
+ from .signals import update_ctrs
+
+ pre_save.connect(update_ctrs, sender=TrainingSession)
diff --git a/apps/training/migrations/0001_initial.py b/apps/training/migrations/0001_initial.py
index 86e6d98..7ddd861 100644
--- a/apps/training/migrations/0001_initial.py
+++ b/apps/training/migrations/0001_initial.py
@@ -1,4 +1,4 @@
-# Generated by Django 3.1.4 on 2020-12-24 21:19
+# Generated by Django 5.0.3 on 2024-03-08 05:37
from django.db import migrations, models
@@ -11,6 +11,18 @@ class Migration(migrations.Migration):
]
operations = [
+ migrations.CreateModel(
+ name='MentorAvailability',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('day', models.IntegerField(choices=[(0, 'Sunday'), (1, 'Monday'), (2, 'Tuesday'), (3, 'Wednesday'), (4, 'Thursday'), (5, 'Friday'), (6, 'Saturday')])),
+ ('start', models.TimeField()),
+ ('end', models.TimeField()),
+ ],
+ options={
+ 'verbose_name': 'Mentor availability',
+ },
+ ),
migrations.CreateModel(
name='TrainingRequest',
fields=[
@@ -18,11 +30,11 @@ class Migration(migrations.Migration):
('start', models.DateTimeField()),
('end', models.DateTimeField()),
('type', models.IntegerField(choices=[(0, 'Classroom'), (1, 'Sweatbox'), (2, 'Online'), (3, 'OTS')])),
- ('level', models.IntegerField(choices=[(0, 'Minor Ground'), (1, 'Major Ground'), (2, 'Minor Tower'), (3, 'Major Tower'), (4, 'Minor Approach'), (5, 'Major Approach'), (6, 'Center'), (7, 'Oceanic')])),
+ ('level', models.IntegerField(choices=[(0, 'Minor Ground'), (1, 'Major Ground'), (2, 'Minor Tower'), (3, 'Major Tower'), (4, 'Minor Approach'), (5, 'Major Approach'), (6, 'Center')])),
('remarks', models.TextField(blank=True, null=True)),
],
options={
- 'verbose_name_plural': 'Training Requests',
+ 'verbose_name': 'Training request',
},
),
migrations.CreateModel(
@@ -33,9 +45,9 @@ class Migration(migrations.Migration):
('end', models.DateTimeField()),
('movements', models.IntegerField(default=0)),
('progress', models.IntegerField(default=3)),
- ('position', models.CharField(max_length=16)),
+ ('position', models.CharField(blank=True, max_length=16, null=True)),
('type', models.IntegerField(choices=[(0, 'Classroom'), (1, 'Sweatbox'), (2, 'Online'), (3, 'OTS')])),
- ('level', models.IntegerField(choices=[(0, 'Minor Ground'), (1, 'Major Ground'), (2, 'Minor Tower'), (3, 'Major Tower'), (4, 'Minor Approach'), (5, 'Major Approach'), (6, 'Center'), (7, 'Oceanic')])),
+ ('level', models.IntegerField(choices=[(0, 'Minor Ground'), (1, 'Major Ground'), (2, 'Minor Tower'), (3, 'Major Tower'), (4, 'Minor Approach'), (5, 'Major Approach'), (6, 'Center')])),
('status', models.IntegerField(choices=[(0, 'Scheduled'), (1, 'Completed'), (2, 'Cancelled'), (3, 'No-Show')], default=0)),
('ots_status', models.IntegerField(choices=[(0, 'Non-OTS'), (1, 'Passed'), (2, 'Failed'), (3, 'Recommended')], default=0)),
('ctrs_id', models.IntegerField(blank=True, null=True)),
@@ -43,7 +55,7 @@ class Migration(migrations.Migration):
('solo_granted', models.BooleanField(default=False)),
],
options={
- 'verbose_name_plural': 'Training Sessions',
+ 'verbose_name': 'Training session',
},
),
]
diff --git a/apps/training/migrations/0002_auto_20201224_1619.py b/apps/training/migrations/0002_initial.py
similarity index 72%
rename from apps/training/migrations/0002_auto_20201224_1619.py
rename to apps/training/migrations/0002_initial.py
index cf291e5..a381789 100644
--- a/apps/training/migrations/0002_auto_20201224_1619.py
+++ b/apps/training/migrations/0002_initial.py
@@ -1,8 +1,8 @@
-# Generated by Django 3.1.4 on 2020-12-24 21:19
+# Generated by Django 5.0.3 on 2024-03-08 05:37
+import django.db.models.deletion
from django.conf import settings
from django.db import migrations, models
-import django.db.models.deletion
class Migration(migrations.Migration):
@@ -10,11 +10,21 @@ class Migration(migrations.Migration):
initial = True
dependencies = [
- migrations.swappable_dependency(settings.AUTH_USER_MODEL),
('training', '0001_initial'),
+ migrations.swappable_dependency(settings.AUTH_USER_MODEL),
]
operations = [
+ migrations.AddField(
+ model_name='mentoravailability',
+ name='user',
+ field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='available_days', to=settings.AUTH_USER_MODEL),
+ ),
+ migrations.AddField(
+ model_name='trainingrequest',
+ name='user',
+ field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='training_requests', to=settings.AUTH_USER_MODEL),
+ ),
migrations.AddField(
model_name='trainingsession',
name='instructor',
@@ -25,9 +35,8 @@ class Migration(migrations.Migration):
name='student',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='student_sessions', to=settings.AUTH_USER_MODEL),
),
- migrations.AddField(
- model_name='trainingrequest',
- name='user',
- field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='training_requests', to=settings.AUTH_USER_MODEL),
+ migrations.AlterUniqueTogether(
+ name='mentoravailability',
+ unique_together={('user', 'day')},
),
]
diff --git a/apps/training/migrations/0003_auto_20210319_1800.py b/apps/training/migrations/0003_auto_20210319_1800.py
deleted file mode 100644
index e259bad..0000000
--- a/apps/training/migrations/0003_auto_20210319_1800.py
+++ /dev/null
@@ -1,18 +0,0 @@
-# Generated by Django 3.1.7 on 2021-03-19 22:00
-
-from django.db import migrations, models
-
-
-class Migration(migrations.Migration):
-
- dependencies = [
- ('training', '0002_auto_20201224_1619'),
- ]
-
- operations = [
- migrations.AlterField(
- model_name='trainingsession',
- name='position',
- field=models.CharField(blank=True, max_length=16, null=True),
- ),
- ]
diff --git a/apps/training/migrations/0004_auto_20210509_1710.py b/apps/training/migrations/0004_auto_20210509_1710.py
deleted file mode 100644
index 71c305b..0000000
--- a/apps/training/migrations/0004_auto_20210509_1710.py
+++ /dev/null
@@ -1,21 +0,0 @@
-# Generated by Django 3.1.7 on 2021-05-09 21:10
-
-from django.db import migrations
-
-
-class Migration(migrations.Migration):
-
- dependencies = [
- ('training', '0003_auto_20210319_1800'),
- ]
-
- operations = [
- migrations.AlterModelOptions(
- name='trainingrequest',
- options={'verbose_name': 'Training request'},
- ),
- migrations.AlterModelOptions(
- name='trainingsession',
- options={'verbose_name': 'Training session'},
- ),
- ]
diff --git a/apps/training/migrations/0005_mentoravailability.py b/apps/training/migrations/0005_mentoravailability.py
deleted file mode 100644
index c165600..0000000
--- a/apps/training/migrations/0005_mentoravailability.py
+++ /dev/null
@@ -1,29 +0,0 @@
-# Generated by Django 3.2.4 on 2022-05-11 23:04
-
-from django.conf import settings
-from django.db import migrations, models
-import django.db.models.deletion
-
-
-class Migration(migrations.Migration):
-
- dependencies = [
- migrations.swappable_dependency(settings.AUTH_USER_MODEL),
- ('training', '0004_auto_20210509_1710'),
- ]
-
- operations = [
- migrations.CreateModel(
- name='MentorAvailability',
- fields=[
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
- ('day', models.IntegerField(choices=[(1, 'Sunday'), (2, 'Monday'), (3, 'Tuesday'), (4, 'Wednesday'), (5, 'Thursday'), (6, 'Friday'), (7, 'Saturday')])),
- ('start', models.TimeField()),
- ('end', models.TimeField()),
- ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='available_days', to=settings.AUTH_USER_MODEL)),
- ],
- options={
- 'verbose_name': 'Mentor availability',
- },
- ),
- ]
diff --git a/apps/training/migrations/0006_alter_mentoravailability_unique_together.py b/apps/training/migrations/0006_alter_mentoravailability_unique_together.py
deleted file mode 100644
index 3fc3f1c..0000000
--- a/apps/training/migrations/0006_alter_mentoravailability_unique_together.py
+++ /dev/null
@@ -1,19 +0,0 @@
-# Generated by Django 3.2.4 on 2022-05-11 23:08
-
-from django.conf import settings
-from django.db import migrations
-
-
-class Migration(migrations.Migration):
-
- dependencies = [
- migrations.swappable_dependency(settings.AUTH_USER_MODEL),
- ('training', '0005_mentoravailability'),
- ]
-
- operations = [
- migrations.AlterUniqueTogether(
- name='mentoravailability',
- unique_together={('user', 'day')},
- ),
- ]
diff --git a/apps/training/migrations/0007_alter_mentoravailability_day.py b/apps/training/migrations/0007_alter_mentoravailability_day.py
deleted file mode 100644
index 9ef106a..0000000
--- a/apps/training/migrations/0007_alter_mentoravailability_day.py
+++ /dev/null
@@ -1,18 +0,0 @@
-# Generated by Django 3.2.4 on 2022-05-12 02:41
-
-from django.db import migrations, models
-
-
-class Migration(migrations.Migration):
-
- dependencies = [
- ('training', '0006_alter_mentoravailability_unique_together'),
- ]
-
- operations = [
- migrations.AlterField(
- model_name='mentoravailability',
- name='day',
- field=models.IntegerField(choices=[(0, 'Sunday'), (1, 'Monday'), (2, 'Tuesday'), (3, 'Wednesday'), (4, 'Thursday'), (5, 'Friday'), (6, 'Saturday')]),
- ),
- ]
diff --git a/apps/training/migrations/0008_auto_20231013_2302.py b/apps/training/migrations/0008_auto_20231013_2302.py
deleted file mode 100644
index fb45487..0000000
--- a/apps/training/migrations/0008_auto_20231013_2302.py
+++ /dev/null
@@ -1,23 +0,0 @@
-# Generated by Django 3.2.4 on 2023-10-13 23:02
-
-from django.db import migrations, models
-
-
-class Migration(migrations.Migration):
-
- dependencies = [
- ('training', '0007_alter_mentoravailability_day'),
- ]
-
- operations = [
- migrations.AlterField(
- model_name='trainingrequest',
- name='level',
- field=models.IntegerField(choices=[(0, 'Minor Ground'), (1, 'Major Ground'), (2, 'Minor Tower'), (3, 'Major Tower'), (4, 'Minor Approach'), (5, 'Major Approach'), (6, 'Center')]),
- ),
- migrations.AlterField(
- model_name='trainingsession',
- name='level',
- field=models.IntegerField(choices=[(0, 'Minor Ground'), (1, 'Major Ground'), (2, 'Minor Tower'), (3, 'Major Tower'), (4, 'Minor Approach'), (5, 'Major Approach'), (6, 'Center')]),
- ),
- ]
diff --git a/apps/users/app.py b/apps/users/app.py
index c37b4fb..62a04b4 100644
--- a/apps/users/app.py
+++ b/apps/users/app.py
@@ -1,12 +1,13 @@
from django.apps import AppConfig
from django.db.models.signals import m2m_changed
-from .models import User
-from .signals import user_roles_changed
-
class UserConfig(AppConfig):
name = "apps.users"
def ready(self):
+ # This needs to be imported here or else the app registry complains that apps aren't loaded yet
+ from .models import User
+ from .signals import user_roles_changed
+
m2m_changed.connect(user_roles_changed, sender=User.roles.through)
diff --git a/apps/users/migrations/0001_initial.py b/apps/users/migrations/0001_initial.py
index bb645b9..8f8a3d0 100644
--- a/apps/users/migrations/0001_initial.py
+++ b/apps/users/migrations/0001_initial.py
@@ -1,5 +1,7 @@
-# Generated by Django 3.1.4 on 2020-12-24 21:19
+# Generated by Django 5.0.3 on 2024-03-08 05:37
+import apps.users.models
+import zhu_core.utils
from django.db import migrations, models
@@ -28,24 +30,24 @@ class Migration(migrations.Migration):
('is_superuser', models.BooleanField(default=False)),
('cid', models.IntegerField(primary_key=True, serialize=False, unique=True)),
('email', models.EmailField(max_length=254)),
- ('first_name', models.CharField(max_length=16)),
- ('last_name', models.CharField(max_length=16)),
- ('rating', models.CharField(choices=[('OBS', 'Observer'), ('S1', 'Student 1'), ('S2', 'Student 2'), ('S3', 'Student 3'), ('C1', 'Controller'), ('C3', 'Senior Controller'), ('I1', 'Instructor'), ('I3', 'Senior Instructor'), ('SUP', 'Supervisor'), ('ADM', 'Administrator')], max_length=3)),
- ('home_facility', models.CharField(max_length=8)),
+ ('first_name', models.CharField(max_length=32)),
+ ('last_name', models.CharField(max_length=32)),
+ ('profile', models.ImageField(blank=True, null=True, storage=zhu_core.utils.OverwriteStorage(), upload_to=apps.users.models.create_profile_path)),
+ ('biography', models.TextField(blank=True, null=True)),
+ ('rating', models.CharField(choices=[('', 'Unknown'), ('OBS', 'Observer'), ('S1', 'Student 1'), ('S2', 'Student 2'), ('S3', 'Student 3'), ('C1', 'Controller'), ('C3', 'Senior Controller'), ('I1', 'Instructor'), ('I3', 'Senior Instructor'), ('SUP', 'Supervisor'), ('ADM', 'Administrator')], max_length=3)),
+ ('home_facility', models.CharField(max_length=16)),
('status', models.IntegerField(choices=[(0, 'Active'), (1, 'Loa'), (2, 'Non Member')], default=2)),
('initials', models.CharField(blank=True, max_length=2, null=True)),
- ('del_cert', models.IntegerField(choices=[(0, 'No Certification'), (1, 'Minor Certification'), (2, 'Major Certification'), (3, 'Solo Certification')], default=0)),
- ('gnd_cert', models.IntegerField(choices=[(0, 'No Certification'), (1, 'Minor Certification'), (2, 'Major Certification'), (3, 'Solo Certification')], default=0)),
- ('twr_cert', models.IntegerField(choices=[(0, 'No Certification'), (1, 'Minor Certification'), (2, 'Major Certification'), (3, 'Solo Certification')], default=0)),
- ('app_cert', models.IntegerField(choices=[(0, 'No Certification'), (1, 'Minor Certification'), (2, 'Major Certification'), (3, 'Solo Certification')], default=0)),
- ('ctr_cert', models.IntegerField(choices=[(0, 'No Certification'), (1, 'Minor Certification'), (2, 'Major Certification'), (3, 'Solo Certification')], default=0)),
- ('ocn_cert', models.IntegerField(choices=[(0, 'No Certification'), (1, 'Minor Certification'), (2, 'Major Certification'), (3, 'Solo Certification')], default=0)),
- ('groups', models.ManyToManyField(blank=True, help_text='The groups this user belongs to. A user will get all permissions granted to each of their groups.', related_name='user_set', related_query_name='user', to='auth.Group', verbose_name='groups')),
- ('roles', models.ManyToManyField(related_name='roles', to='users.Role')),
- ('user_permissions', models.ManyToManyField(blank=True, help_text='Specific permissions for this user.', related_name='user_set', related_query_name='user', to='auth.Permission', verbose_name='user permissions')),
+ ('joined', models.DateTimeField(blank=True, null=True)),
+ ('endorsements', models.JSONField(default=apps.users.models.default_endorsements)),
+ ('prevent_event_signup', models.BooleanField(default=False)),
+ ('cic_endorsed', models.BooleanField(default=False)),
+ ('groups', models.ManyToManyField(blank=True, help_text='The groups this user belongs to. A user will get all permissions granted to each of their groups.', related_name='user_set', related_query_name='user', to='auth.group', verbose_name='groups')),
+ ('user_permissions', models.ManyToManyField(blank=True, help_text='Specific permissions for this user.', related_name='user_set', related_query_name='user', to='auth.permission', verbose_name='user permissions')),
+ ('roles', models.ManyToManyField(blank=True, related_name='users', to='users.role')),
],
options={
- 'abstract': False,
+ 'verbose_name': 'User',
},
),
]
diff --git a/apps/users/migrations/0002_user_joined.py b/apps/users/migrations/0002_user_joined.py
deleted file mode 100644
index 40a63d1..0000000
--- a/apps/users/migrations/0002_user_joined.py
+++ /dev/null
@@ -1,18 +0,0 @@
-# Generated by Django 3.1.4 on 2021-01-04 15:09
-
-from django.db import migrations, models
-
-
-class Migration(migrations.Migration):
-
- dependencies = [
- ('users', '0001_initial'),
- ]
-
- operations = [
- migrations.AddField(
- model_name='user',
- name='joined',
- field=models.DateTimeField(blank=True, null=True),
- ),
- ]
diff --git a/apps/users/migrations/0003_user_profile.py b/apps/users/migrations/0003_user_profile.py
deleted file mode 100644
index 0f73dff..0000000
--- a/apps/users/migrations/0003_user_profile.py
+++ /dev/null
@@ -1,18 +0,0 @@
-# Generated by Django 3.1.4 on 2021-01-04 22:42
-
-from django.db import migrations, models
-
-
-class Migration(migrations.Migration):
-
- dependencies = [
- ('users', '0002_user_joined'),
- ]
-
- operations = [
- migrations.AddField(
- model_name='user',
- name='profile',
- field=models.ImageField(blank=True, null=True, upload_to='profile/'),
- ),
- ]
diff --git a/apps/users/migrations/0004_auto_20210106_1811.py b/apps/users/migrations/0004_auto_20210106_1811.py
deleted file mode 100644
index 7b09bb1..0000000
--- a/apps/users/migrations/0004_auto_20210106_1811.py
+++ /dev/null
@@ -1,25 +0,0 @@
-# Generated by Django 3.1.4 on 2021-01-06 23:11
-
-import apps.users.models
-from django.db import migrations, models
-import zhu_core.utils
-
-
-class Migration(migrations.Migration):
-
- dependencies = [
- ('users', '0003_user_profile'),
- ]
-
- operations = [
- migrations.AddField(
- model_name='user',
- name='biography',
- field=models.TextField(blank=True, null=True),
- ),
- migrations.AlterField(
- model_name='user',
- name='profile',
- field=models.ImageField(blank=True, null=True, storage=zhu_core.utils.OverwriteStorage(), upload_to=apps.users.models.create_profile_path),
- ),
- ]
diff --git a/apps/users/migrations/0005_auto_20210215_1432.py b/apps/users/migrations/0005_auto_20210215_1432.py
deleted file mode 100644
index 97e3d47..0000000
--- a/apps/users/migrations/0005_auto_20210215_1432.py
+++ /dev/null
@@ -1,23 +0,0 @@
-# Generated by Django 3.1.4 on 2021-02-15 19:32
-
-from django.db import migrations, models
-
-
-class Migration(migrations.Migration):
-
- dependencies = [
- ('users', '0004_auto_20210106_1811'),
- ]
-
- operations = [
- migrations.AddField(
- model_name='user',
- name='prevent_event_signup',
- field=models.BooleanField(default=False),
- ),
- migrations.AlterField(
- model_name='user',
- name='roles',
- field=models.ManyToManyField(blank=True, related_name='roles', to='users.Role'),
- ),
- ]
diff --git a/apps/users/migrations/0006_user_cic_endorsed.py b/apps/users/migrations/0006_user_cic_endorsed.py
deleted file mode 100644
index 95e8638..0000000
--- a/apps/users/migrations/0006_user_cic_endorsed.py
+++ /dev/null
@@ -1,18 +0,0 @@
-# Generated by Django 3.1.4 on 2021-02-15 19:32
-
-from django.db import migrations, models
-
-
-class Migration(migrations.Migration):
-
- dependencies = [
- ('users', '0005_auto_20210215_1432'),
- ]
-
- operations = [
- migrations.AddField(
- model_name='user',
- name='cic_endorsed',
- field=models.BooleanField(default=False),
- ),
- ]
diff --git a/apps/users/migrations/0007_auto_20210409_1117.py b/apps/users/migrations/0007_auto_20210409_1117.py
deleted file mode 100644
index d68d24b..0000000
--- a/apps/users/migrations/0007_auto_20210409_1117.py
+++ /dev/null
@@ -1,18 +0,0 @@
-# Generated by Django 3.1.7 on 2021-04-09 15:17
-
-from django.db import migrations, models
-
-
-class Migration(migrations.Migration):
-
- dependencies = [
- ('users', '0006_user_cic_endorsed'),
- ]
-
- operations = [
- migrations.AlterField(
- model_name='user',
- name='rating',
- field=models.CharField(choices=[('', 'Unknown'), ('OBS', 'Observer'), ('S1', 'Student 1'), ('S2', 'Student 2'), ('S3', 'Student 3'), ('C1', 'Controller'), ('C3', 'Senior Controller'), ('I1', 'Instructor'), ('I3', 'Senior Instructor'), ('SUP', 'Supervisor'), ('ADM', 'Administrator')], max_length=3),
- ),
- ]
diff --git a/apps/users/migrations/0008_auto_20210509_1710.py b/apps/users/migrations/0008_auto_20210509_1710.py
deleted file mode 100644
index 60cfc84..0000000
--- a/apps/users/migrations/0008_auto_20210509_1710.py
+++ /dev/null
@@ -1,17 +0,0 @@
-# Generated by Django 3.1.7 on 2021-05-09 21:10
-
-from django.db import migrations
-
-
-class Migration(migrations.Migration):
-
- dependencies = [
- ('users', '0007_auto_20210409_1117'),
- ]
-
- operations = [
- migrations.AlterModelOptions(
- name='user',
- options={'verbose_name': 'User'},
- ),
- ]
diff --git a/apps/users/migrations/0009_user_solo_facility.py b/apps/users/migrations/0009_user_solo_facility.py
deleted file mode 100644
index 9108e3d..0000000
--- a/apps/users/migrations/0009_user_solo_facility.py
+++ /dev/null
@@ -1,18 +0,0 @@
-# Generated by Django 3.2.4 on 2021-06-10 18:08
-
-from django.db import migrations, models
-
-
-class Migration(migrations.Migration):
-
- dependencies = [
- ('users', '0008_auto_20210509_1710'),
- ]
-
- operations = [
- migrations.AddField(
- model_name='user',
- name='solo_facility',
- field=models.CharField(blank=True, max_length=3, null=True),
- ),
- ]
diff --git a/apps/users/migrations/0010_remove_user_ocn_cert.py b/apps/users/migrations/0010_remove_user_ocn_cert.py
deleted file mode 100644
index 25725b9..0000000
--- a/apps/users/migrations/0010_remove_user_ocn_cert.py
+++ /dev/null
@@ -1,17 +0,0 @@
-# Generated by Django 3.2.4 on 2023-10-13 23:02
-
-from django.db import migrations
-
-
-class Migration(migrations.Migration):
-
- dependencies = [
- ('users', '0009_user_solo_facility'),
- ]
-
- operations = [
- migrations.RemoveField(
- model_name='user',
- name='ocn_cert',
- ),
- ]
diff --git a/apps/users/migrations/0011_auto_20231017_1703.py b/apps/users/migrations/0011_auto_20231017_1703.py
deleted file mode 100644
index 218c680..0000000
--- a/apps/users/migrations/0011_auto_20231017_1703.py
+++ /dev/null
@@ -1,23 +0,0 @@
-# Generated by Django 3.2.4 on 2023-10-17 17:03
-
-from django.db import migrations
-from django.db.models import Q
-
-
-def remove_default_profiles(apps, schema_editor):
- User = apps.get_model("users", "User")
- db_alias = schema_editor.connection.alias
-
- no_profile = Q(profile__contains="default") | Q(profile="")
- User.objects.using(db_alias).filter(no_profile).update(profile=None)
-
-
-class Migration(migrations.Migration):
-
- dependencies = [
- ('users', '0010_remove_user_ocn_cert'),
- ]
-
- operations = [
- migrations.RunPython(remove_default_profiles)
- ]
diff --git a/apps/users/migrations/0012_auto_20240105_1930.py b/apps/users/migrations/0012_auto_20240105_1930.py
deleted file mode 100644
index dbd9247..0000000
--- a/apps/users/migrations/0012_auto_20240105_1930.py
+++ /dev/null
@@ -1,74 +0,0 @@
-# Generated by Django 3.2.4 on 2024-01-06 00:30
-
-import apps.users.models
-from apps.users.models import Certification
-from django.db import migrations, models
-
-
-def migrate_certifications(apps, schema_editor):
- User = apps.get_model("users", "User")
-
- for user in User.objects.all():
- user.endorsements = {
- "del": user.del_cert in [Certification.MINOR, Certification.MAJOR],
- "gnd": user.gnd_cert in [Certification.MINOR, Certification.MAJOR],
- "hou_gnd": user.gnd_cert in [Certification.MINOR, Certification.MAJOR],
- "iah_gnd": user.gnd_cert == Certification.MAJOR,
- "twr": user.twr_cert in [Certification.MINOR, Certification.MAJOR],
- "hou_twr": user.twr_cert in [Certification.MINOR, Certification.MAJOR],
- "iah_twr": user.twr_cert == Certification.MAJOR,
- "app": user.app_cert in [Certification.MINOR, Certification.MAJOR],
- "i90_app": user.app_cert == Certification.MAJOR,
- "zhu": user.ctr_cert in [Certification.MINOR, Certification.MAJOR],
- }
-
- if user.del_cert == Certification.SOLO:
- user.endorsements["del"] = user.solo_facility
- if user.gnd_cert == Certification.SOLO:
- user.endorsements["gnd"] = user.solo_facility
- if user.twr_cert == Certification.SOLO:
- user.endorsements["twr"] = user.solo_facility
- if user.app_cert == Certification.SOLO:
- user.endorsements["app"] = user.solo_facility
-
- user.save()
-
-
-class Migration(migrations.Migration):
-
- dependencies = [
- ('users', '0011_auto_20231017_1703'),
- ]
-
- operations = [
- migrations.AddField(
- model_name='user',
- name='endorsements',
- field=models.JSONField(default=apps.users.models.default_endorsements),
- ),
- migrations.RunPython(migrate_certifications),
- migrations.RemoveField(
- model_name='user',
- name='app_cert',
- ),
- migrations.RemoveField(
- model_name='user',
- name='ctr_cert',
- ),
- migrations.RemoveField(
- model_name='user',
- name='del_cert',
- ),
- migrations.RemoveField(
- model_name='user',
- name='gnd_cert',
- ),
- migrations.RemoveField(
- model_name='user',
- name='solo_facility',
- ),
- migrations.RemoveField(
- model_name='user',
- name='twr_cert',
- ),
- ]
diff --git a/apps/users/migrations/0013_alter_user_roles.py b/apps/users/migrations/0013_alter_user_roles.py
deleted file mode 100644
index c436271..0000000
--- a/apps/users/migrations/0013_alter_user_roles.py
+++ /dev/null
@@ -1,18 +0,0 @@
-# Generated by Django 5.0.1 on 2024-01-06 15:59
-
-from django.db import migrations, models
-
-
-class Migration(migrations.Migration):
-
- dependencies = [
- ('users', '0012_auto_20240105_1930'),
- ]
-
- operations = [
- migrations.AlterField(
- model_name='user',
- name='roles',
- field=models.ManyToManyField(blank=True, related_name='users', to='users.role'),
- ),
- ]
diff --git a/apps/users/models.py b/apps/users/models.py
index 0d22d81..01b9940 100644
--- a/apps/users/models.py
+++ b/apps/users/models.py
@@ -12,7 +12,6 @@
from django.utils import timezone
from apps.mailer.models import Email
-from apps.visit.models import VisitingApplication
from zhu_core.utils import OverwriteStorage, base26decode, base26encode
@@ -100,14 +99,14 @@ class Meta:
# Personal Info
cid = models.IntegerField(primary_key=True, unique=True)
email = models.EmailField()
- first_name = models.CharField(max_length=16)
- last_name = models.CharField(max_length=16)
+ first_name = models.CharField(max_length=32)
+ last_name = models.CharField(max_length=32)
profile = models.ImageField(upload_to=create_profile_path, null=True, blank=True, storage=OverwriteStorage())
biography = models.TextField(null=True, blank=True)
# VATSIM Details
rating = models.CharField(max_length=3, choices=Rating.choices)
- home_facility = models.CharField(max_length=8)
+ home_facility = models.CharField(max_length=16)
# ARTCC Details
roles = models.ManyToManyField(Role, related_name="users", blank=True)
@@ -162,6 +161,9 @@ def staff_role(self):
@property
def visiting_eligibility(self):
"""Check if authenticated user is eligible to apply as a visiting controller."""
+ # Imported in here to avoid a circular dependency
+ from apps.visit.models import VisitingApplication
+
rating_check = self.rating not in [Rating.UNK, Rating.OBS, Rating.S1]
rating_time = requests.get(f"https://api.vatsim.net/api/ratings/{self.cid}/").json()
diff --git a/apps/visit/migrations/0001_initial.py b/apps/visit/migrations/0001_initial.py
index 0bbf554..124a1bd 100644
--- a/apps/visit/migrations/0001_initial.py
+++ b/apps/visit/migrations/0001_initial.py
@@ -1,8 +1,8 @@
-# Generated by Django 3.1.7 on 2021-03-25 17:19
+# Generated by Django 5.0.3 on 2024-03-08 05:37
+import django.db.models.deletion
from django.conf import settings
from django.db import migrations, models
-import django.db.models.deletion
class Migration(migrations.Migration):
@@ -23,7 +23,7 @@ class Migration(migrations.Migration):
('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='visiting_application', to=settings.AUTH_USER_MODEL)),
],
options={
- 'verbose_name_plural': 'Vistiting Applications',
+ 'verbose_name': 'Vistiting application',
},
),
]
diff --git a/apps/visit/migrations/0002_auto_20210509_1710.py b/apps/visit/migrations/0002_auto_20210509_1710.py
deleted file mode 100644
index 709ac54..0000000
--- a/apps/visit/migrations/0002_auto_20210509_1710.py
+++ /dev/null
@@ -1,17 +0,0 @@
-# Generated by Django 3.1.7 on 2021-05-09 21:10
-
-from django.db import migrations
-
-
-class Migration(migrations.Migration):
-
- dependencies = [
- ('visit', '0001_initial'),
- ]
-
- operations = [
- migrations.AlterModelOptions(
- name='visitingapplication',
- options={'verbose_name': 'Vistiting application'},
- ),
- ]
diff --git a/requirements.txt b/requirements.txt
index b056750..e573163 100644
Binary files a/requirements.txt and b/requirements.txt differ