This commit is contained in:
Administrator
2022-04-18 06:52:24 +00:00
parent 28f29fa610
commit 01c592100d
474 changed files with 48732 additions and 1609 deletions

View File

@@ -1,7 +0,0 @@
from SprintLib.BaseView import BaseView
class ChatsView(BaseView):
view_file = "chats.html"
required_login = True
endpoint = "chats"

View File

@@ -5,7 +5,7 @@ from SprintLib.BaseView import BaseView
class ExitView(BaseView):
required_login = True
endpoint = "exit"
endpoint = "logout"
def get(self):
logout(self.request)

View File

@@ -31,7 +31,7 @@ class MainView(BaseView):
if len(self.context['top_tasks_today']) < 5:
self.context['top_tasks_today'] = Task.objects.filter(public=True).order_by('name')[:5]
for task in self.context['top_tasks_today']:
setattr(task, 'solution', Solution.objects.filter(user=self.request.user, task=task).last())
setattr(task, 'solution', Solution.objects.filter(user=self.request.user, task=task, set=None).last())
self.context['top_users'] = UserInfo.objects.filter(verified=True).order_by('-rating')[:5]
all_tasks = Task.objects.filter(solution__user=self.request.user).distinct()
ok_tasks = all_tasks.filter(solution__result="OK").distinct()

View File

@@ -38,15 +38,18 @@ class SetSettingsView(BaseView):
)
self.context['languages'] = languages
def post(self):
self.set.name = self.request.POST["name"]
self.set.description = self.request.POST['description']
self.set.save()
return "/admin/set?set_id=" + str(self.set.id)
def post_save(self):
for key, value in self.request.POST.items():
if key.startswith("settask_"):
st = SetTask.objects.get(id=key.split("_")[1])
st.name = value
st.save()
self.set.name = self.request.POST["name"]
self.set.description = self.request.POST['description']
self.set.save()
return "/admin/set?set_id=" + str(self.set.id)
def post_edit(self):

View File

@@ -59,4 +59,5 @@ class SolutionsTableView(BaseView):
limit = self.page_size
self.context["solutions"] = queryset.order_by("-id")[offset:offset + limit]
self.context["count_pages"] = range(1, (len(queryset) - 1) // self.page_size + 2)
self.context["need_pagination"] = len(self.context["count_pages"]) > 1
self.context['pages'] = len(self.context['count_pages'])
self.context["need_pagination"] = self.context['pages'] > 1

View File

@@ -3,6 +3,7 @@ import json
from zipfile import ZipFile
from django.db import transaction
from django.db.models import Q, Count
from Main.models import Task, ExtraFile
from SprintLib.BaseView import BaseView
@@ -14,6 +15,18 @@ class TasksView(BaseView):
required_login = True
endpoint = "tasks"
def get(self):
fltr = self.request.GET.get('filter')
self.context['tasks'] = self.request.user.userinfo.available_tasks
if fltr == 'my':
self.context['tasks'] = self.context['tasks'].filter(
Q(editors__contains=[self.request.user.username]) | Q(creator=self.request.user))
if fltr == 'new':
self.context['tasks'] = self.context['tasks'].annotate(sol_count=Count('solution', filter=Q(solution__user=self.request.user))).filter(sol_count=0)
if fltr == 'unsolved':
self.context['tasks'] = self.context['tasks'].annotate(ok_count=Count('solution', filter=Q(solution__user=self.request.user, solution__result='OK'))).annotate(sol_count=Count('solution', filter=Q(solution__user=self.request.user))).filter(ok_count=0, sol_count__gt=0)
self.context['tasks'] = self.context['tasks'].order_by('name')
def post(self):
task_name = self.request.POST["name"]
task = Task.objects.create(name=task_name, creator=self.request.user)

View File

@@ -17,6 +17,5 @@ from Main.views.SolutionsView import SolutionsView
from Main.views.SetView import SetView
from Main.views.GroupView import GroupView
from Main.views.CheckersView import CheckersView
from Main.views.ChatsView import ChatsView
from Main.views.DownloadFileView import DownloadFileView
from Main.views.social import *