Commit migrations and fixed pruning crontab command not setting student status to False. Also fixed Student Status subject field in admin

This commit is contained in:
Keannu Bernasol 2023-10-13 12:34:20 +08:00
parent 87d1bcb04f
commit a58142030d
3 changed files with 31 additions and 3 deletions

View file

@ -35,6 +35,7 @@ class Command(BaseCommand):
# Set the fields of the old statuses to the required values # Set the fields of the old statuses to the required values
for status in old_statuses: for status in old_statuses:
logger.info(f'Resetting StudentStatus: {status}') logger.info(f'Resetting StudentStatus: {status}')
status.active = False
status.location = Point(0, 0) status.location = Point(0, 0)
status.subject = None status.subject = None
status.landmark = None status.landmark = None

View file

@ -4,8 +4,10 @@ from leaflet.admin import LeafletGeoAdmin
from django import forms from django import forms
from subjects.models import SubjectInstance, Subject from subjects.models import SubjectInstance, Subject
from accounts.models import CustomUser from accounts.models import CustomUser
from django.contrib.gis.geos import Point
# Unused. To reimplement down the line
class CustomStudentStatusForm(forms.ModelForm): class CustomStudentStatusForm(forms.ModelForm):
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
super(CustomStudentStatusForm, self).__init__(*args, **kwargs) super(CustomStudentStatusForm, self).__init__(*args, **kwargs)
@ -23,9 +25,8 @@ class CustomStudentStatusForm(forms.ModelForm):
# Filter the Subject objects by these names # Filter the Subject objects by these names
subjects = Subject.objects.filter(name__in=subject_instance_names) subjects = Subject.objects.filter(name__in=subject_instance_names)
self.fields['subject'].queryset = subjects self.fields['subject'].queryset = subjects
# To fix: study group is still empty despite student already joined one
subject = forms.ModelChoiceField( subject = forms.ModelChoiceField(
queryset=Subject.objects.none(), required=False) queryset=Subject.objects.all(), required=False)
class Meta: class Meta:
model = StudentStatus model = StudentStatus
@ -34,12 +35,20 @@ class CustomStudentStatusForm(forms.ModelForm):
class StudentStatusAdmin(LeafletGeoAdmin): class StudentStatusAdmin(LeafletGeoAdmin):
model = StudentStatus model = StudentStatus
form = CustomStudentStatusForm
# define which fields are required # define which fields are required
def save_model(self, request, obj, form, change):
if obj.active is False:
obj.location = Point(0, 0)
obj.subject = None
obj.landmark = None
obj.study_group = None
super().save_model(request, obj, form, change)
def get_form(self, request, obj=None, **kwargs): def get_form(self, request, obj=None, **kwargs):
form = super(StudentStatusAdmin, self).get_form(request, obj, **kwargs) form = super(StudentStatusAdmin, self).get_form(request, obj, **kwargs)
form.base_fields['landmark'].required = False form.base_fields['landmark'].required = False
form.base_fields['study_group'].required = False
return form return form

View file

@ -0,0 +1,18 @@
# Generated by Django 4.2.5 on 2023-10-13 04:23
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('study_groups', '0001_initial'),
]
operations = [
migrations.AlterField(
model_name='studygroup',
name='timestamp',
field=models.DateTimeField(auto_now_add=True),
),
]