diff --git a/rad/settings.py b/rad/settings.py index 570cc651..1511c90c 100644 --- a/rad/settings.py +++ b/rad/settings.py @@ -49,6 +49,7 @@ INSTALLED_APPS = [ "sbas", "wally", "atlas", + "rcr", "reversion", "debug_toolbar", "django_tables2", diff --git a/rad/urls.py b/rad/urls.py index 062ebf08..760eea66 100644 --- a/rad/urls.py +++ b/rad/urls.py @@ -63,6 +63,7 @@ urlpatterns = [ path("sbas/", include("sbas.urls"), name="sbas"), path("generic/", include("generic.urls"), name="generic"), path("atlas/", include("atlas.urls"), name="atlas"), + path("rcr/", include("rcr.urls"), name="rcr"), path( "accounts/check_users", views.accounts_check_users, name="accounts_check_users" ), diff --git a/rcr/__init__.py b/rcr/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/rcr/admin.py b/rcr/admin.py new file mode 100644 index 00000000..c0b3a5fc --- /dev/null +++ b/rcr/admin.py @@ -0,0 +1,9 @@ +from django.contrib import admin + +# Register your models here. + +from rcr.models import Item, Category, Level + +admin.site.register(Item) +admin.site.register(Category) +admin.site.register(Level) \ No newline at end of file diff --git a/rcr/apps.py b/rcr/apps.py new file mode 100644 index 00000000..98d4439c --- /dev/null +++ b/rcr/apps.py @@ -0,0 +1,6 @@ +from django.apps import AppConfig + + +class RcrConfig(AppConfig): + default_auto_field = 'django.db.models.BigAutoField' + name = 'rcr' diff --git a/rcr/forms.py b/rcr/forms.py new file mode 100644 index 00000000..6583e957 --- /dev/null +++ b/rcr/forms.py @@ -0,0 +1,24 @@ + +from django import forms +from django.contrib.admin import widgets +from django.forms import ( + BaseInlineFormSet, + Form, + HiddenInput, + ModelForm, + ModelMultipleChoiceField, + ModelChoiceField, + ChoiceField, + CharField, + ValidationError, + modelformset_factory, + CheckboxSelectMultiple +) + +from rcr.models import Item, Category, Level + +class ItemForm(ModelForm): + class Meta: + model = Item + exclude = ["rcr_platform_id", "name"] + #fields = ["category", "level"] \ No newline at end of file diff --git a/rcr/migrations/0001_initial.py b/rcr/migrations/0001_initial.py new file mode 100644 index 00000000..bd85072b --- /dev/null +++ b/rcr/migrations/0001_initial.py @@ -0,0 +1,40 @@ +# Generated by Django 4.1.4 on 2023-11-04 09:48 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ] + + operations = [ + migrations.CreateModel( + name='Category', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=255)), + ], + ), + migrations.CreateModel( + name='Level', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=255)), + ], + ), + migrations.CreateModel( + name='Item', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=200)), + ('rcr_platform_id', models.CharField(max_length=255)), + ('completed', models.BooleanField(default=False)), + ('category', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to='rcr.category')), + ('level', models.ManyToManyField(to='rcr.level')), + ], + ), + ] diff --git a/rcr/migrations/__init__.py b/rcr/migrations/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/rcr/models.py b/rcr/models.py new file mode 100644 index 00000000..972e29b3 --- /dev/null +++ b/rcr/models.py @@ -0,0 +1,40 @@ +from django.db import models +from django.utils.translation import gettext_lazy as _ + +# Create your models here. + +class Item(models.Model): + class LevelChoices(models.TextChoices): + NONE = "", _("None") + PART_1 = "P1", _("FRCR Part 1") + PART_2 = "P2", _("FRCR Part 2") + POST_GEN = "GEN", _("Post FRCR Generalist") + POST_SPEC = "SPEC", _("Post FRCR Specialist") + + + name = models.CharField(max_length=200) + + rcr_platform_id = models.CharField(max_length=255) + + category = models.ForeignKey("Category", on_delete=models.SET_NULL, null=True, blank=True) + + level = models.ManyToManyField("Level", blank=True) + + + completed = models.BooleanField(default=False) + + def __str__(self): + return self.name + + +class Category(models.Model): + name = models.CharField(max_length=255) + + def __str__(self): + return self.name + +class Level(models.Model): + name = models.CharField(max_length=255) + + def __str__(self): + return self.name diff --git a/rcr/templates/rcr/base.html b/rcr/templates/rcr/base.html new file mode 100644 index 00000000..a3186a89 --- /dev/null +++ b/rcr/templates/rcr/base.html @@ -0,0 +1,117 @@ + +{% load static %} +{% load django_htmx %} +{% load crispy_forms_tags %} +{% load auth_extras %} + + +
+