checkers
This commit is contained in:
parent
d6d5931661
commit
e29028e55d
@ -1,5 +1,3 @@
|
|||||||
from django.db.models import QuerySet
|
|
||||||
|
|
||||||
from Main.models import Solution
|
from Main.models import Solution
|
||||||
from SprintLib.BaseView import BaseView, AccessError
|
from SprintLib.BaseView import BaseView, AccessError
|
||||||
|
|
||||||
@ -13,32 +11,26 @@ class SolutionsTableView(BaseView):
|
|||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
super().__init__(*args, **kwargs)
|
super().__init__(*args, **kwargs)
|
||||||
self.filters = [
|
|
||||||
self.filter_set,
|
|
||||||
self.filter_task,
|
|
||||||
]
|
|
||||||
self.queryset = Solution.objects.all()
|
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):
|
def pre_handle(self):
|
||||||
if 'page' not in self.request.GET:
|
if 'page' not in self.request.GET:
|
||||||
raise AccessError()
|
raise AccessError()
|
||||||
self.page = int(self.request.GET['page'])
|
self.page = int(self.request.GET['page'])
|
||||||
|
|
||||||
def get(self):
|
def get(self):
|
||||||
if 'only_my' in self.request.GET:
|
if 'teacher' in self.request.GET.keys():
|
||||||
self.queryset = self.queryset.filter(user=self.request.user)
|
if 'set_id' in self.request.GET.keys():
|
||||||
for fltr in self.filters:
|
self.queryset = self.queryset.filter(set_id=self.request.GET['set_id'])
|
||||||
self.queryset = fltr(self.queryset)
|
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)
|
offset = self.page_size * (self.page - 1)
|
||||||
limit = self.page_size
|
limit = self.page_size
|
||||||
self.context["solutions"] = self.queryset.order_by("-id")[offset:offset + limit]
|
self.context["solutions"] = self.queryset.order_by("-id")[offset:offset + limit]
|
||||||
|
@ -5,8 +5,3 @@ class SolutionsView(BaseView):
|
|||||||
required_login = True
|
required_login = True
|
||||||
endpoint = "solutions"
|
endpoint = "solutions"
|
||||||
view_file = "solutions.html"
|
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']
|
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
page = number;
|
page = number;
|
||||||
}
|
}
|
||||||
function doPoll() {
|
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');
|
var e = document.getElementById('solutions');
|
||||||
if (e.innerHTML !== data)
|
if (e.innerHTML !== data)
|
||||||
e.innerHTML = data;
|
e.innerHTML = data;
|
||||||
|
@ -26,7 +26,7 @@
|
|||||||
page = number;
|
page = number;
|
||||||
}
|
}
|
||||||
function doPoll() {
|
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');
|
var e = document.getElementById('solutions');
|
||||||
if (e.innerHTML !== data)
|
if (e.innerHTML !== data)
|
||||||
e.innerHTML = data;
|
e.innerHTML = data;
|
||||||
|
Loading…
Reference in New Issue
Block a user