Skip to content
Snippets Groups Projects
Verified Commit 07754a7d authored by Jonathan Weth's avatar Jonathan Weth :keyboard:
Browse files

Reformat

parent 6dfccf0d
No related branches found
No related tags found
1 merge request!64Resolve "Add support for multiple excuse types"
...@@ -47,10 +47,7 @@ class SelectForm(forms.Form): ...@@ -47,10 +47,7 @@ class SelectForm(forms.Form):
layout = Layout(Row("group", "teacher")) layout = Layout(Row("group", "teacher"))
group = forms.ModelChoiceField( group = forms.ModelChoiceField(
queryset=None, queryset=None, label=_("Group"), required=False, widget=Select2Widget,
label=_("Group"),
required=False,
widget=Select2Widget,
) )
teacher = forms.ModelChoiceField( teacher = forms.ModelChoiceField(
queryset=Person.objects.annotate( queryset=Person.objects.annotate(
...@@ -81,8 +78,10 @@ class SelectForm(forms.Form): ...@@ -81,8 +78,10 @@ class SelectForm(forms.Form):
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs) super().__init__(*args, **kwargs)
self.fields["group"].queryset = Group.objects.for_current_school_term_or_all().annotate(lessons_count=Count("lessons")).filter( self.fields["group"].queryset = (
lessons_count__gt=0 Group.objects.for_current_school_term_or_all()
.annotate(lessons_count=Count("lessons"))
.filter(lessons_count__gt=0)
) )
......
...@@ -2,39 +2,72 @@ ...@@ -2,39 +2,72 @@
import django.contrib.postgres.fields.jsonb import django.contrib.postgres.fields.jsonb
import django.contrib.sites.managers import django.contrib.sites.managers
from django.db import migrations, models
import django.db.models.deletion import django.db.models.deletion
from django.db import migrations, models
class Migration(migrations.Migration): class Migration(migrations.Migration):
dependencies = [ dependencies = [
('sites', '0002_alter_domain_unique'), ("sites", "0002_alter_domain_unique"),
('alsijil', '0001_initial'), ("alsijil", "0001_initial"),
] ]
operations = [ operations = [
migrations.CreateModel( migrations.CreateModel(
name='ExcuseType', name="ExcuseType",
fields=[ fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), (
('extended_data', django.contrib.postgres.fields.jsonb.JSONField(default=dict, editable=False)), "id",
('short_name', models.CharField(max_length=255, unique=True, verbose_name='Short name')), models.AutoField(
('name', models.CharField(max_length=255, unique=True, verbose_name='Name')), auto_created=True,
('site', models.ForeignKey(default=1, editable=False, on_delete=django.db.models.deletion.CASCADE, to='sites.Site')), primary_key=True,
serialize=False,
verbose_name="ID",
),
),
(
"extended_data",
django.contrib.postgres.fields.jsonb.JSONField(
default=dict, editable=False
),
),
(
"short_name",
models.CharField(
max_length=255, unique=True, verbose_name="Short name"
),
),
(
"name",
models.CharField(max_length=255, unique=True, verbose_name="Name"),
),
(
"site",
models.ForeignKey(
default=1,
editable=False,
on_delete=django.db.models.deletion.CASCADE,
to="sites.Site",
),
),
], ],
options={ options={
'verbose_name': 'Excuse type', "verbose_name": "Excuse type",
'verbose_name_plural': 'Excuse types', "verbose_name_plural": "Excuse types",
'ordering': ['name'], "ordering": ["name"],
}, },
managers=[ managers=[("objects", django.contrib.sites.managers.CurrentSiteManager()),],
('objects', django.contrib.sites.managers.CurrentSiteManager()),
],
), ),
migrations.AddField( migrations.AddField(
model_name='personalnote', model_name="personalnote",
name='excuse_type', name="excuse_type",
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='alsijil.ExcuseType', verbose_name='Excuse type'), field=models.ForeignKey(
blank=True,
null=True,
on_delete=django.db.models.deletion.SET_NULL,
to="alsijil.ExcuseType",
verbose_name="Excuse type",
),
), ),
] ]
...@@ -14,7 +14,9 @@ class ExcuseType(ExtensibleModel): ...@@ -14,7 +14,9 @@ class ExcuseType(ExtensibleModel):
Can be used to count different types of absences separately. Can be used to count different types of absences separately.
""" """
short_name = models.CharField(max_length=255, unique=True, verbose_name=_("Short name")) short_name = models.CharField(
max_length=255, unique=True, verbose_name=_("Short name")
)
name = models.CharField(max_length=255, unique=True, verbose_name=_("Name")) name = models.CharField(max_length=255, unique=True, verbose_name=_("Name"))
def __str__(self): def __str__(self):
...@@ -49,7 +51,13 @@ class PersonalNote(ExtensibleModel): ...@@ -49,7 +51,13 @@ class PersonalNote(ExtensibleModel):
absent = models.BooleanField(default=False) absent = models.BooleanField(default=False)
late = models.IntegerField(default=0) late = models.IntegerField(default=0)
excused = models.BooleanField(default=False) excused = models.BooleanField(default=False)
excuse_type = models.ForeignKey(ExcuseType, on_delete=models.SET_NULL, null=True, blank=True, verbose_name=_("Excuse type")) excuse_type = models.ForeignKey(
ExcuseType,
on_delete=models.SET_NULL,
null=True,
blank=True,
verbose_name=_("Excuse type"),
)
remarks = models.CharField(max_length=200, blank=True) remarks = models.CharField(max_length=200, blank=True)
......
...@@ -43,7 +43,9 @@ def lesson( ...@@ -43,7 +43,9 @@ def lesson(
if year and week and period_id: if year and week and period_id:
# Get a specific lesson period if provided in URL # Get a specific lesson period if provided in URL
wanted_week = CalendarWeek(year=year, week=week) wanted_week = CalendarWeek(year=year, week=week)
lesson_period = LessonPeriod.objects.annotate_week(wanted_week).get(pk=period_id) lesson_period = LessonPeriod.objects.annotate_week(wanted_week).get(
pk=period_id
)
else: else:
# Determine current lesson by current date and time # Determine current lesson by current date and time
lesson_period = ( lesson_period = (
...@@ -68,8 +70,7 @@ def lesson( ...@@ -68,8 +70,7 @@ def lesson(
if ( if (
datetime.combine( datetime.combine(
wanted_week[lesson_period.period.weekday], wanted_week[lesson_period.period.weekday], lesson_period.period.time_start,
lesson_period.period.time_start,
) )
> datetime.now() > datetime.now()
and not request.user.is_superuser and not request.user.is_superuser
...@@ -290,7 +291,11 @@ def full_register_group(request: HttpRequest, id_: int) -> HttpResponse: ...@@ -290,7 +291,11 @@ def full_register_group(request: HttpRequest, id_: int) -> HttpResponse:
for week in weeks: for week in weeks:
day = week[lesson_period.period.weekday] day = week[lesson_period.period.weekday]
if lesson_period.lesson.validity.date_start <= day <= lesson_period.lesson.validity.date_end: if (
lesson_period.lesson.validity.date_start
<= day
<= lesson_period.lesson.validity.date_end
):
documentations = list( documentations = list(
filter( filter(
lambda d: d.week == week.week, lambda d: d.week == week.week,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment