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