From 7a5ecc5f874e378445fc94e948ffe38173866c2f Mon Sep 17 00:00:00 2001 From: TuringTux <53300311+TuringTux@users.noreply.github.com> Date: Tue, 19 Nov 2019 21:55:45 +0100 Subject: [PATCH 1/7] Adapt UI to show unsubscribe link, start making backend adjustments --- muesli/web/templates/lecture/view.pt | 7 +++++-- muesli/web/viewsLecture.py | 6 ++++-- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/muesli/web/templates/lecture/view.pt b/muesli/web/templates/lecture/view.pt index d8db0977..3f5da9d1 100644 --- a/muesli/web/templates/lecture/view.pt +++ b/muesli/web/templates/lecture/view.pt @@ -48,9 +48,12 @@ Details - - ${'Wechseln' if subscribed else 'Beitreten'} + ${'Wechseln' if subscribed_to_any_tutorial else 'Beitreten'} + + + Austreten diff --git a/muesli/web/viewsLecture.py b/muesli/web/viewsLecture.py index f6bcb69d..52f5f8f6 100644 --- a/muesli/web/viewsLecture.py +++ b/muesli/web/viewsLecture.py @@ -84,9 +84,11 @@ def __init__(self, request): def __call__(self): lecture = self.db.query(models.Lecture).options(undefer('tutorials.student_count')).get(self.lecture_id) times = lecture.prepareTimePreferences(user=self.request.user) - subscribed = self.request.user.id in [s.id for s in lecture.students] + subscribed_to_any_tutorial = self.request.user.id in [s.id for s in lecture.students] + subscribed_tutorial_id = None # TODO Determine the ID of the tutorial to which the student is subscribed return {'lecture': lecture, - 'subscribed': subscribed, + 'subscribed_to_any_tutorial': subscribed_to_any_tutorial, + 'subscribed_tutorial_id': subscribed_tutorial_id, 'times': times, 'prefs': utils.preferences} From c9643a3c387e719a208aa93c478234be185431ed Mon Sep 17 00:00:00 2001 From: TuringTux <53300311+TuringTux@users.noreply.github.com> Date: Wed, 20 Nov 2019 11:05:43 +0100 Subject: [PATCH 2/7] Remove unneeded variable, thanks @tynsh --- muesli/web/templates/lecture/view.pt | 6 +++--- muesli/web/viewsLecture.py | 6 ++---- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/muesli/web/templates/lecture/view.pt b/muesli/web/templates/lecture/view.pt index 3f5da9d1..6807d525 100644 --- a/muesli/web/templates/lecture/view.pt +++ b/muesli/web/templates/lecture/view.pt @@ -48,11 +48,11 @@ Details - - ${'Wechseln' if subscribed_to_any_tutorial else 'Beitreten'} + ${'Wechseln' if not subscribed_tutorial else 'Beitreten'} - + Austreten diff --git a/muesli/web/viewsLecture.py b/muesli/web/viewsLecture.py index 52f5f8f6..9a956f05 100644 --- a/muesli/web/viewsLecture.py +++ b/muesli/web/viewsLecture.py @@ -84,11 +84,9 @@ def __init__(self, request): def __call__(self): lecture = self.db.query(models.Lecture).options(undefer('tutorials.student_count')).get(self.lecture_id) times = lecture.prepareTimePreferences(user=self.request.user) - subscribed_to_any_tutorial = self.request.user.id in [s.id for s in lecture.students] - subscribed_tutorial_id = None # TODO Determine the ID of the tutorial to which the student is subscribed + subscribed_tutorial = None # TODO Determine the tutorial the student is subscribed to, if any return {'lecture': lecture, - 'subscribed_to_any_tutorial': subscribed_to_any_tutorial, - 'subscribed_tutorial_id': subscribed_tutorial_id, + 'subscribed_tutorial': subscribed_tutorial, 'times': times, 'prefs': utils.preferences} From fdc490d4022e4ffec5e94b5dff190806aa12e9b3 Mon Sep 17 00:00:00 2001 From: TuringTux <53300311+TuringTux@users.noreply.github.com> Date: Wed, 20 Nov 2019 12:16:01 +0100 Subject: [PATCH 3/7] Add TODO comment for later --- muesli/web/templates/lecture/view.pt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/muesli/web/templates/lecture/view.pt b/muesli/web/templates/lecture/view.pt index 6807d525..a55ed361 100644 --- a/muesli/web/templates/lecture/view.pt +++ b/muesli/web/templates/lecture/view.pt @@ -50,7 +50,7 @@ - ${'Wechseln' if not subscribed_tutorial else 'Beitreten'} + ${'Wechseln' if not subscribed_tutorial else 'Beitreten'} Austreten From 1d8e6b78f06e0bfc2f57eec7fd4be587387e3f66 Mon Sep 17 00:00:00 2001 From: TuringTux <53300311+TuringTux@users.noreply.github.com> Date: Thu, 21 Nov 2019 21:06:20 +0100 Subject: [PATCH 4/7] Fix front-end side logic --- muesli/web/templates/lecture/view.pt | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/muesli/web/templates/lecture/view.pt b/muesli/web/templates/lecture/view.pt index a55ed361..b8323a9b 100644 --- a/muesli/web/templates/lecture/view.pt +++ b/muesli/web/templates/lecture/view.pt @@ -48,11 +48,12 @@ Details - - ${'Wechseln' if not subscribed_tutorial else 'Beitreten'} + ${'Beitreten' if not subscribed_tutorial else 'Wechseln'} - + Austreten From 4fea9589ce00d28521a53e78d249ba7244b95fe7 Mon Sep 17 00:00:00 2001 From: TuringTux <53300311+TuringTux@users.noreply.github.com> Date: Sun, 24 Nov 2019 18:40:25 +0100 Subject: [PATCH 5/7] Make database query work --- muesli/web/viewsLecture.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/muesli/web/viewsLecture.py b/muesli/web/viewsLecture.py index 9a956f05..339334a5 100644 --- a/muesli/web/viewsLecture.py +++ b/muesli/web/viewsLecture.py @@ -83,8 +83,14 @@ def __init__(self, request): self.lecture_id = request.matchdict['lecture_id'] def __call__(self): lecture = self.db.query(models.Lecture).options(undefer('tutorials.student_count')).get(self.lecture_id) + print(lecture) times = lecture.prepareTimePreferences(user=self.request.user) - subscribed_tutorial = None # TODO Determine the tutorial the student is subscribed to, if any + subscribed_tutorial = self.db.query(models.Tutorial).filter( + Tutorial.lecture_students.any( + LectureStudent.student_id == self.request.user.id and LectureStudent.lecture_id == self.lecture_id + ) + ).first() + print(subscribed_tutorial) return {'lecture': lecture, 'subscribed_tutorial': subscribed_tutorial, 'times': times, From a4d01dd4bb7c35734b490d4795305405a8652e56 Mon Sep 17 00:00:00 2001 From: TuringTux <53300311+TuringTux@users.noreply.github.com> Date: Mon, 25 Nov 2019 10:08:40 +0100 Subject: [PATCH 6/7] Remove unneeded print statements I'm sorry for forgetting to remove them in the first place. --- muesli/web/viewsLecture.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/muesli/web/viewsLecture.py b/muesli/web/viewsLecture.py index 339334a5..64da625b 100644 --- a/muesli/web/viewsLecture.py +++ b/muesli/web/viewsLecture.py @@ -83,14 +83,12 @@ def __init__(self, request): self.lecture_id = request.matchdict['lecture_id'] def __call__(self): lecture = self.db.query(models.Lecture).options(undefer('tutorials.student_count')).get(self.lecture_id) - print(lecture) times = lecture.prepareTimePreferences(user=self.request.user) subscribed_tutorial = self.db.query(models.Tutorial).filter( Tutorial.lecture_students.any( LectureStudent.student_id == self.request.user.id and LectureStudent.lecture_id == self.lecture_id ) ).first() - print(subscribed_tutorial) return {'lecture': lecture, 'subscribed_tutorial': subscribed_tutorial, 'times': times, From 67cf08cb02cf2955cc24c8f9a35f7c96e9fa0bff Mon Sep 17 00:00:00 2001 From: TuringTux <53300311+TuringTux@users.noreply.github.com> Date: Mon, 25 Nov 2019 20:30:27 +0100 Subject: [PATCH 7/7] Shorten query to get subscribed_tutorial --- muesli/web/viewsLecture.py | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/muesli/web/viewsLecture.py b/muesli/web/viewsLecture.py index a87b7ad9..fd94b660 100644 --- a/muesli/web/viewsLecture.py +++ b/muesli/web/viewsLecture.py @@ -84,11 +84,7 @@ def __init__(self, request): def __call__(self): lecture = self.db.query(models.Lecture).options(undefer('tutorials.student_count')).get(self.lecture_id) times = lecture.prepareTimePreferences(user=self.request.user) - subscribed_tutorial = self.db.query(models.Tutorial).filter( - Tutorial.lecture_students.any( - LectureStudent.student_id == self.request.user.id and LectureStudent.lecture_id == self.lecture_id - ) - ).first() + subscribed_tutorial = self.request.user.tutorials.filter(LectureStudent.lecture_id == self.lecture_id).first() return {'lecture': lecture, 'subscribed_tutorial': subscribed_tutorial, 'times': times,