Added House and Points Entry models
This commit is contained in:
parent
3cc29e3ad6
commit
5503ee1bd7
8 changed files with 151 additions and 27 deletions
|
|
@ -1,6 +1,6 @@
|
|||
from django.contrib import admin
|
||||
from django.db.models import Count
|
||||
from .models import Activity, Entry
|
||||
from django.db.models import Sum
|
||||
from .models import Activity, House, UserEntry, PointsEntry
|
||||
|
||||
|
||||
@admin.register(Activity)
|
||||
|
|
@ -16,22 +16,22 @@ class ActivityAdmin(admin.ModelAdmin):
|
|||
|
||||
@admin.display(description='Hawk Signups')
|
||||
def hawk_signups(self, obj):
|
||||
return str(Entry.hawk.filterActivity1(obj).count()) + " / " + str((Entry.hawk.filterActivity2(obj).count(), "N/A")[obj.time == 60])
|
||||
return str(UserEntry.hawk.filterActivity1(obj).count()) + " / " + str((UserEntry.hawk.filterActivity2(obj).count(), "N/A")[obj.time == 60])
|
||||
|
||||
@admin.display(description='Great Grey Signups')
|
||||
def great_grey_signups(self, obj):
|
||||
return str(Entry.great_grey.filterActivity1(obj).count()) + " / " + str((Entry.great_grey.filterActivity2(obj).count(), "N/A")[obj.time == 60])
|
||||
return str(UserEntry.great_grey.filterActivity1(obj).count()) + " / " + str((UserEntry.great_grey.filterActivity2(obj).count(), "N/A")[obj.time == 60])
|
||||
|
||||
@admin.display(description='Snowy Signups')
|
||||
def snowy_signups(self, obj):
|
||||
return str(Entry.snowy.filterActivity1(obj).count()) + " / " + str((Entry.snowy.filterActivity2(obj).count(), "N/A")[obj.time == 60])
|
||||
return str(UserEntry.snowy.filterActivity1(obj).count()) + " / " + str((UserEntry.snowy.filterActivity2(obj).count(), "N/A")[obj.time == 60])
|
||||
|
||||
@admin.display(description='Eagle Signups')
|
||||
def eagle_signups(self, obj):
|
||||
return str(Entry.eagle.filterActivity1(obj).count()) + " / " + str((Entry.eagle.filterActivity2(obj).count(), "N/A")[obj.time == 60])
|
||||
return str(UserEntry.eagle.filterActivity1(obj).count()) + " / " + str((UserEntry.eagle.filterActivity2(obj).count(), "N/A")[obj.time == 60])
|
||||
|
||||
|
||||
@admin.register(Entry)
|
||||
@admin.register(UserEntry)
|
||||
class EntryAdmin(admin.ModelAdmin):
|
||||
fieldsets = [
|
||||
('Personal Information', {'fields': [
|
||||
|
|
@ -44,3 +44,17 @@ class EntryAdmin(admin.ModelAdmin):
|
|||
'house', 'activity1', 'activity2')
|
||||
|
||||
list_filter = ['house', 'grade', 'activity1', 'activity2']
|
||||
|
||||
|
||||
@admin.register(House)
|
||||
class HouseAdmin(admin.ModelAdmin):
|
||||
list_display = ('name', 'points', 'current_points')
|
||||
|
||||
@admin.display(description='Current HouseWar Points')
|
||||
def current_points(self, obj):
|
||||
return PointsEntry.objects.filter(house__name=obj.name).aggregate(Sum('points')).get('points__sum')
|
||||
|
||||
|
||||
@admin.register(PointsEntry)
|
||||
class PointsEntryAdmin(admin.ModelAdmin):
|
||||
list_display = ('activity', 'name', 'house', 'points')
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
from django.forms import Form, CharField, EmailField, ChoiceField, ModelChoiceField, Select, TextInput, EmailInput
|
||||
from django.forms import ValidationError
|
||||
|
||||
from .models import Entry, Activity
|
||||
from .models import Activity, House, UserEntry
|
||||
|
||||
|
||||
class UserEntryForm(Form):
|
||||
|
|
@ -21,12 +21,12 @@ class UserEntryForm(Form):
|
|||
'id': 'email',
|
||||
'placeholder': 'Email'
|
||||
}))
|
||||
grade = ChoiceField(choices=Entry.GradeChoices, widget=Select(attrs={
|
||||
grade = ChoiceField(choices=UserEntry.GradeChoices, widget=Select(attrs={
|
||||
'class': "form-select",
|
||||
'id': 'grade',
|
||||
'placeholder': 'Grade'
|
||||
}))
|
||||
house = ChoiceField(choices=Entry.HouseChoices, widget=Select(attrs={
|
||||
house = ModelChoiceField(House.objects.all(), widget=Select(attrs={
|
||||
'class': "form-select",
|
||||
'id': 'house',
|
||||
'placeholder': 'House'
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
from django.db.models import Manager, F
|
||||
from django.db.models import Manager
|
||||
|
||||
|
||||
class EntryManager(Manager):
|
||||
|
|
@ -11,19 +11,19 @@ class EntryManager(Manager):
|
|||
|
||||
class HawkEntryManager(EntryManager):
|
||||
def get_queryset(self):
|
||||
return super().get_queryset().filter(house='HAWK')
|
||||
return super().get_queryset().filter(house__name='Hawk')
|
||||
|
||||
|
||||
class EagleEntryManager(EntryManager):
|
||||
def get_queryset(self):
|
||||
return super().get_queryset().filter(house='EAGLE')
|
||||
return super().get_queryset().filter(house__name='Eagle')
|
||||
|
||||
|
||||
class GreatGreyEntryManager(EntryManager):
|
||||
def get_queryset(self):
|
||||
return super().get_queryset().filter(house='GREATGREY')
|
||||
return super().get_queryset().filter(house__name='Great Grey')
|
||||
|
||||
|
||||
class SnowyEntryManager(EntryManager):
|
||||
def get_queryset(self):
|
||||
return super().get_queryset().filter(house='SNOWY')
|
||||
return super().get_queryset().filter(house__name='Snowy')
|
||||
|
|
|
|||
|
|
@ -0,0 +1,59 @@
|
|||
# Generated by Django 4.0.4 on 2022-05-21 18:15
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
import django.db.models.manager
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('housewars', '0012_alter_activity_managers_alter_entry_house_and_more'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='House',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('name', models.CharField(max_length=100)),
|
||||
('points', models.IntegerField()),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='PointsEntry',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('name', models.CharField(max_length=100)),
|
||||
('points', models.IntegerField()),
|
||||
('reason', models.TextField()),
|
||||
('activity', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='housewars.activity')),
|
||||
('house', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='housewars.house')),
|
||||
],
|
||||
options={
|
||||
'verbose_name_plural': 'Point Entries',
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='UserEntry',
|
||||
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)),
|
||||
('email', models.EmailField(max_length=100)),
|
||||
('grade', models.IntegerField(choices=[(9, '9th/Freshman'), (10, '10th/Sophomore'), (11, '11th/Junior'), (12, '12th/Senior')])),
|
||||
('activity1', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='activity1', to='housewars.activity')),
|
||||
('activity2', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='activity2', to='housewars.activity')),
|
||||
('house', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='housewars.house')),
|
||||
],
|
||||
options={
|
||||
'verbose_name_plural': 'User Entries',
|
||||
},
|
||||
managers=[
|
||||
('hawk', django.db.models.manager.Manager()),
|
||||
],
|
||||
),
|
||||
migrations.DeleteModel(
|
||||
name='Entry',
|
||||
),
|
||||
]
|
||||
20
housewars/migrations/0014_alter_pointsentry_managers.py
Normal file
20
housewars/migrations/0014_alter_pointsentry_managers.py
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
# Generated by Django 4.0.4 on 2022-05-21 18:17
|
||||
|
||||
from django.db import migrations
|
||||
import django.db.models.manager
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('housewars', '0013_house_pointsentry_userentry_delete_entry'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterModelManagers(
|
||||
name='pointsentry',
|
||||
managers=[
|
||||
('hawk', django.db.models.manager.Manager()),
|
||||
],
|
||||
),
|
||||
]
|
||||
18
housewars/migrations/0015_alter_pointsentry_managers.py
Normal file
18
housewars/migrations/0015_alter_pointsentry_managers.py
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
# Generated by Django 4.0.4 on 2022-05-21 18:33
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('housewars', '0014_alter_pointsentry_managers'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterModelManagers(
|
||||
name='pointsentry',
|
||||
managers=[
|
||||
],
|
||||
),
|
||||
]
|
||||
|
|
@ -19,9 +19,17 @@ class Activity(models.Model):
|
|||
return f"{self.name} ({self.time})"
|
||||
|
||||
|
||||
class Entry(models.Model):
|
||||
class House(models.Model):
|
||||
name = models.CharField(max_length=100)
|
||||
points = models.IntegerField()
|
||||
|
||||
def __str__(self):
|
||||
return f"{self.name}"
|
||||
|
||||
|
||||
class UserEntry(models.Model):
|
||||
class Meta:
|
||||
verbose_name_plural = "Entries"
|
||||
verbose_name_plural = "User Entries"
|
||||
|
||||
objects = EntryManager()
|
||||
hawk = HawkEntryManager()
|
||||
|
|
@ -36,18 +44,12 @@ class Entry(models.Model):
|
|||
(12, '12th/Senior'),
|
||||
)
|
||||
|
||||
HouseChoices = (
|
||||
('HAWK', 'Hawk'),
|
||||
('GREATGREY', 'Great Grey'),
|
||||
('EAGLE', 'Eagle'),
|
||||
('SNOWY', 'Snowy')
|
||||
)
|
||||
|
||||
first_name = models.CharField(max_length=100)
|
||||
last_name = models.CharField(max_length=100)
|
||||
email = models.EmailField(max_length=100)
|
||||
grade = models.IntegerField(choices=GradeChoices)
|
||||
house = models.CharField(choices=HouseChoices, max_length=15)
|
||||
house = models.ForeignKey(
|
||||
House, on_delete=models.CASCADE)
|
||||
activity1 = models.ForeignKey(
|
||||
Activity, related_name='activity1', on_delete=models.CASCADE)
|
||||
activity2 = models.ForeignKey(
|
||||
|
|
@ -55,3 +57,14 @@ class Entry(models.Model):
|
|||
|
||||
def __str__(self):
|
||||
return f"{self.first_name} {self.last_name}"
|
||||
|
||||
|
||||
class PointsEntry(models.Model):
|
||||
class Meta:
|
||||
verbose_name_plural = "Point Entries"
|
||||
|
||||
name = models.CharField(max_length=100)
|
||||
activity = models.ForeignKey(Activity, on_delete=models.CASCADE)
|
||||
house = models.ForeignKey(House, on_delete=models.CASCADE)
|
||||
points = models.IntegerField()
|
||||
reason = models.TextField(blank=False)
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ from django.urls import reverse
|
|||
from django.db.models import Count, Q, F
|
||||
from formtools.wizard.views import SessionWizardView
|
||||
|
||||
from .models import Activity, Entry
|
||||
from .models import Activity, UserEntry
|
||||
from .forms import UserEntryForm, ActivityForm
|
||||
|
||||
FORMS = [("user", UserEntryForm),
|
||||
|
|
@ -47,7 +47,7 @@ class EntryCreateView(SessionWizardView):
|
|||
return form
|
||||
|
||||
def done(self, form_list, **kwargs):
|
||||
Entry.objects.create(**self.get_all_cleaned_data())
|
||||
UserEntry.objects.create(**self.get_all_cleaned_data())
|
||||
|
||||
messages.success(self.request, 'Your entry has been submitted')
|
||||
return redirect('housewars:create_entry')
|
||||
|
|
|
|||
Reference in a new issue