Skip to content
Snippets Groups Projects
Verified Commit baa6a974 authored by Nik | Klampfradler's avatar Nik | Klampfradler
Browse files

Add short-hand for filtering lesson data by GET or POST query. Advances #3 and #34.

parent 81195d3f
No related branches found
No related tags found
No related merge requests found
......@@ -5,6 +5,7 @@ from django.core import validators
from django.core.exceptions import ValidationError
from django.db import models
from django.db.models import Q
from django.http.request import QueryDict
from django.utils.translation import ugettext_lazy as _
from biscuit.core.mixins import SchoolRelated
......@@ -48,6 +49,14 @@ class LessonPeriodQuerySet(models.QuerySet):
return self.filter(
Q(substitutions__room__pk=room, substitutions__week=models.F('_week')) | Q(room__pk=room))
def filter_from_query(self, query_data: QueryDict):
if query_data.get('group', None):
return self.filter_group(int(query_data['group']))
if query_data.get('teacher', None):
return self.filter_teacher(int(query_data['teacher']))
if query_data.get('room', None):
return self.filter_room(int(query_data['room']))
class TimePeriod(SchoolRelated):
WEEKDAY_CHOICES = [
......
......@@ -33,12 +33,7 @@ def timetable(request: HttpRequest, year: Optional[int] = None, week: Optional[i
# Incrementally filter lesson periods by GET parameters
if request.GET.get('group', None) or request.GET.get('teacher', None) or request.GET.get('room', None):
if 'group' in request.GET and request.GET['group']:
lesson_periods = lesson_periods.filter_group(int(request.GET['group']))
if 'teacher' in request.GET and request.GET['teacher']:
lesson_periods = lesson_periods.filter_teacher(int(request.GET['teacher']))
if 'room' in request.GET and request.GET['room']:
lesson_periods = lesson_periods.room_filter(int(request.GET['room']))
lesson_periods = lesson_periods.filter_from_query(request.GET)
else:
# Redirect to a selected view if no filter provided
if request.user.person:
......
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