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):
layout = Layout(Row("group", "teacher"))
group = forms.ModelChoiceField(
queryset=None,
label=_("Group"),
required=False,
widget=Select2Widget,
queryset=None, label=_("Group"), required=False, widget=Select2Widget,
)
teacher = forms.ModelChoiceField(
queryset=Person.objects.annotate(
......@@ -81,8 +78,10 @@ class SelectForm(forms.Form):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.fields["group"].queryset = Group.objects.for_current_school_term_or_all().annotate(lessons_count=Count("lessons")).filter(
lessons_count__gt=0
self.fields["group"].queryset = (
Group.objects.for_current_school_term_or_all()
.annotate(lessons_count=Count("lessons"))
.filter(lessons_count__gt=0)
)
......
......@@ -2,39 +2,72 @@
import django.contrib.postgres.fields.jsonb
import django.contrib.sites.managers
from django.db import migrations, models
import django.db.models.deletion
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('sites', '0002_alter_domain_unique'),
('alsijil', '0001_initial'),
("sites", "0002_alter_domain_unique"),
("alsijil", "0001_initial"),
]
operations = [
migrations.CreateModel(
name='ExcuseType',
name="ExcuseType",
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)),
('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')),
(
"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
),
),
(
"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={
'verbose_name': 'Excuse type',
'verbose_name_plural': 'Excuse types',
'ordering': ['name'],
"verbose_name": "Excuse type",
"verbose_name_plural": "Excuse types",
"ordering": ["name"],
},
managers=[
('objects', django.contrib.sites.managers.CurrentSiteManager()),
],
managers=[("objects", django.contrib.sites.managers.CurrentSiteManager()),],
),
migrations.AddField(
model_name='personalnote',
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'),
model_name="personalnote",
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):
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"))
def __str__(self):
......@@ -49,7 +51,13 @@ class PersonalNote(ExtensibleModel):
absent = models.BooleanField(default=False)
late = models.IntegerField(default=0)
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)
......
......@@ -43,7 +43,9 @@ def lesson(
if year and week and period_id:
# Get a specific lesson period if provided in URL
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:
# Determine current lesson by current date and time
lesson_period = (
......@@ -68,8 +70,7 @@ def lesson(
if (
datetime.combine(
wanted_week[lesson_period.period.weekday],
lesson_period.period.time_start,
wanted_week[lesson_period.period.weekday], lesson_period.period.time_start,
)
> datetime.now()
and not request.user.is_superuser
......@@ -290,7 +291,11 @@ def full_register_group(request: HttpRequest, id_: int) -> HttpResponse:
for week in weeks:
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(
filter(
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