diff --git a/Main/views/SolutionsTableView.py b/Main/views/SolutionsTableView.py index 14a5072..e37782c 100644 --- a/Main/views/SolutionsTableView.py +++ b/Main/views/SolutionsTableView.py @@ -1,5 +1,3 @@ -from django.db.models import QuerySet - from Main.models import Solution from SprintLib.BaseView import BaseView, AccessError @@ -13,32 +11,26 @@ class SolutionsTableView(BaseView): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) - self.filters = [ - self.filter_set, - self.filter_task, - ] self.queryset = Solution.objects.all() - def filter_task(self, queryset: QuerySet): - if 'task_id' in self.request.GET: - return queryset.filter(task_id=int(self.request.GET['task_id'])) - return queryset - - def filter_set(self, queryset: QuerySet): - if 'set_id' in self.request.GET: - return queryset.filter(set_id=self.request.GET['set_id']).distinct() - return queryset - def pre_handle(self): if 'page' not in self.request.GET: raise AccessError() self.page = int(self.request.GET['page']) def get(self): - if 'only_my' in self.request.GET: - self.queryset = self.queryset.filter(user=self.request.user) - for fltr in self.filters: - self.queryset = fltr(self.queryset) + if 'teacher' in self.request.GET.keys(): + if 'set_id' in self.request.GET.keys(): + self.queryset = self.queryset.filter(set_id=self.request.GET['set_id']) + elif 'task_id' in self.request.GET.keys(): + self.queryset = self.queryset.filter(task_id=self.request.GET['task_id'], set=None) + else: + raise AccessError() + else: + if hasattr(self.entities, 'setTask'): + self.queryset = self.queryset.filter(user=self.request.user, task=self.entities.setTask.task, set=self.entities.setTask.set) + else: + self.queryset = self.queryset.filter(user=self.request.user, task=self.entities.task, set=None) offset = self.page_size * (self.page - 1) limit = self.page_size self.context["solutions"] = self.queryset.order_by("-id")[offset:offset + limit] diff --git a/Main/views/SolutionsView.py b/Main/views/SolutionsView.py index 4b3de79..cb328b8 100644 --- a/Main/views/SolutionsView.py +++ b/Main/views/SolutionsView.py @@ -5,8 +5,3 @@ class SolutionsView(BaseView): required_login = True endpoint = "solutions" view_file = "solutions.html" - - def get(self): - self.context['task_id'] = self.request.GET.get('task_id') - if not self.context['task_id']: - self.context['set_id'] = self.request.GET['set_id'] diff --git a/templates/solutions.html b/templates/solutions.html index e9108ca..8a6c353 100644 --- a/templates/solutions.html +++ b/templates/solutions.html @@ -6,7 +6,7 @@ page = number; } function doPoll() { - jQuery.get('/solutions_table?{% if task_id %}task_id={{ task.id }}{% else %}set_id={{ set.id }}{% endif %}&page=' + page.toString(), function(data) { + jQuery.get('/solutions_table?{% if task %}task_id={{ task.id }}{% else %}set_id={{ set.id }}{% endif %}&teacher=true&page=' + page.toString(), function(data) { var e = document.getElementById('solutions'); if (e.innerHTML !== data) e.innerHTML = data; diff --git a/templates/task.html b/templates/task.html index 9ad811c..c99512a 100644 --- a/templates/task.html +++ b/templates/task.html @@ -26,7 +26,7 @@ page = number; } function doPoll() { - jQuery.get('/solutions_table?task_id={{ task.id }}&only_my=true&page=' + page.toString(), function(data) { + jQuery.get('/solutions_table?{% if in_set %}setTask={{ setTask.id }}{% else %}task_id={{ task.id }}{% endif %}&page=' + page.toString(), function(data) { var e = document.getElementById('solutions'); if (e.innerHTML !== data) e.innerHTML = data;