From b815899101b1bccd8e2a460cd66876def14d7309 Mon Sep 17 00:00:00 2001 From: C4 Patino Date: Wed, 7 Sep 2022 16:46:17 -0500 Subject: [PATCH] Added facilitator form --- .github/workflows/test-build.yml | 2 +- housewars/admin/Facilitator.py | 15 ++++++++++ housewars/admin/__init__.py | 1 + housewars/forms/FacilitatorForm.py | 26 ++++++++++++++++ housewars/forms/__init__.py | 1 + housewars/migrations/0006_facilitator.py | 23 ++++++++++++++ housewars/models/Facilitator.py | 13 ++++++++ housewars/models/__init__.py | 1 + housewars/urls.py | 3 +- housewars/views.py | 38 ++++++++++++++++++++++-- 10 files changed, 119 insertions(+), 4 deletions(-) create mode 100644 housewars/admin/Facilitator.py create mode 100644 housewars/forms/FacilitatorForm.py create mode 100644 housewars/migrations/0006_facilitator.py create mode 100644 housewars/models/Facilitator.py diff --git a/.github/workflows/test-build.yml b/.github/workflows/test-build.yml index b36f24c..540673d 100644 --- a/.github/workflows/test-build.yml +++ b/.github/workflows/test-build.yml @@ -2,7 +2,7 @@ name: Test build on: push: - branches: [main, dev] + branches: [main] pull_request: workflow_dispatch: diff --git a/housewars/admin/Facilitator.py b/housewars/admin/Facilitator.py new file mode 100644 index 0000000..f2cfcac --- /dev/null +++ b/housewars/admin/Facilitator.py @@ -0,0 +1,15 @@ +from django.contrib import admin + +from housewars.models import Facilitator + + +@admin.register(Facilitator) +class FacilitatorAdmin(admin.ModelAdmin): + list_display = ('first_name', 'last_name', 'activity') + + fieldsets = [ + ('Personal Information', {'fields': [ + 'first_name', 'last_name']}), + ('House Wars Information', { + 'fields': ['activity']}), + ] diff --git a/housewars/admin/__init__.py b/housewars/admin/__init__.py index e8eaabf..f9926e7 100644 --- a/housewars/admin/__init__.py +++ b/housewars/admin/__init__.py @@ -1,4 +1,5 @@ from .Activity import ActivityAdmin +from .Facilitator import Facilitator from .House import House from .PointsEntry import PointsEntry from .Teacher import Teacher diff --git a/housewars/forms/FacilitatorForm.py b/housewars/forms/FacilitatorForm.py new file mode 100644 index 0000000..ed0ab00 --- /dev/null +++ b/housewars/forms/FacilitatorForm.py @@ -0,0 +1,26 @@ +from django.forms import ModelForm, ModelChoiceField, Select, CharField, TextInput + +from housewars.models import Activity, Facilitator + + +class FacilitatorForm(ModelForm): + class Meta: + model = Facilitator + fields = '__all__' + widgets = { + 'first_name': TextInput(attrs={ + 'class': "form-control", + 'id': 'first-name', + 'placeholder': 'First Name' + }), + 'last_name': TextInput(attrs={ + 'class': 'form-control', + 'id': 'first-name', + 'placeholder': 'Last Name', + }), + 'activity': Select(attrs={ + 'class': 'form-select', + 'id': 'activity', + 'placeholder': 'activity' + }), + } diff --git a/housewars/forms/__init__.py b/housewars/forms/__init__.py index f443a28..7a47de0 100644 --- a/housewars/forms/__init__.py +++ b/housewars/forms/__init__.py @@ -1,3 +1,4 @@ from .ActivityForm import ActivityForm +from .FacilitatorForm import FacilitatorForm from .PointsEntryForm import PointsEntryForm from .UserEntryForm import UserEntryForm diff --git a/housewars/migrations/0006_facilitator.py b/housewars/migrations/0006_facilitator.py new file mode 100644 index 0000000..df47ace --- /dev/null +++ b/housewars/migrations/0006_facilitator.py @@ -0,0 +1,23 @@ +# Generated by Django 4.0.4 on 2022-09-07 21:22 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('housewars', '0005_activity_room_number_alter_teacher_grade'), + ] + + operations = [ + migrations.CreateModel( + name='Facilitator', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('first_name', models.CharField(max_length=100)), + ('last_name', models.CharField(max_length=100)), + ('activity', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='housewars.activity')), + ], + ), + ] diff --git a/housewars/models/Facilitator.py b/housewars/models/Facilitator.py new file mode 100644 index 0000000..d9dcfe0 --- /dev/null +++ b/housewars/models/Facilitator.py @@ -0,0 +1,13 @@ +from django.db import models +from . import Activity + + +class Facilitator(models.Model): + first_name = models.CharField(max_length=100) + last_name = models.CharField(max_length=100) + activity = models.ForeignKey( + Activity, on_delete=models.CASCADE, blank=True, null=True) + + def save(self, *args, **kwargs): + self.full_clean() + return super().save(*args, **kwargs) diff --git a/housewars/models/__init__.py b/housewars/models/__init__.py index 334f515..49ec7f8 100644 --- a/housewars/models/__init__.py +++ b/housewars/models/__init__.py @@ -1,5 +1,6 @@ from .Activity import Activity from .Award import Award +from .Facilitator import Facilitator from .House import House from .PointsEntry import PointsEntry from .Quota import Quota diff --git a/housewars/urls.py b/housewars/urls.py index 5bb0b48..f07ee1c 100644 --- a/housewars/urls.py +++ b/housewars/urls.py @@ -21,5 +21,6 @@ from . import views app_name = 'housewars' urlpatterns = [ path('', views.EntryCreateView.as_view(), name='signup'), - path('points/', views.PointsEntryCreateView.as_view(), name='add_points') + path('points/', views.PointsEntryCreateView.as_view(), name='add_points'), + path('facilitator/', views.FacilitatorCreateView.as_view(), name='facilitator') ] diff --git a/housewars/views.py b/housewars/views.py index 96cbb40..f0693cc 100644 --- a/housewars/views.py +++ b/housewars/views.py @@ -6,8 +6,8 @@ from django.urls import reverse from django.views.generic import CreateView from formtools.wizard.views import SessionWizardView -from .forms import ActivityForm, PointsEntryForm, UserEntryForm -from .models import Activity, Quota, PointsEntry, UserEntry +from housewars.forms import ActivityForm, PointsEntryForm, UserEntryForm, FacilitatorForm +from housewars.models import Activity, Quota, PointsEntry, UserEntry, Facilitator FORMS = [("user", UserEntryForm), ("activity", ActivityForm)] @@ -84,10 +84,17 @@ class EntryCreateView(SessionWizardView): def get_success_url(self): return reverse('housewars:signup') + def get_context_data(self, **kwargs): + context = super().get_context_data(**kwargs) + context['title'] = 'Signup' + context['formtitle'] = 'House Wars Signup' + return context + class PointsEntryCreateView(CreateView): model = PointsEntry form_class = PointsEntryForm + template_name = 'housewars/general_form.html' def form_valid(self, form): messages.success(self.request, 'Your points entry has been submitted.') @@ -96,3 +103,30 @@ class PointsEntryCreateView(CreateView): def get_success_url(self): return reverse('housewars:add_points') + + def get_context_data(self, **kwargs): + context = super().get_context_data(**kwargs) + context['title'] = 'Add Points' + context['formtitle'] = 'Add House Points' + return context + + +class FacilitatorCreateView(CreateView): + model = Facilitator + form_class = FacilitatorForm + template_name = 'housewars/general_form.html' + + def form_valid(self, form): + messages.success( + self.request, 'Your facilitator signup has been submitted.') + + return super().form_valid(form) + + def get_success_url(self): + return reverse('housewars:add_points') + + def get_context_data(self, **kwargs): + context = super().get_context_data(**kwargs) + context['title'] = 'Facilitator' + context['formtitle'] = 'Facilitator Signup' + return context