set settings

This commit is contained in:
Egor Matveev
2022-01-20 03:12:17 +03:00
parent a12a97b9aa
commit aee08c937a
8 changed files with 83 additions and 90 deletions

View File

@@ -1,3 +1,5 @@
from functools import cached_property
from django.contrib.auth.models import User
from django.db import models
from django.utils import timezone
@@ -21,6 +23,6 @@ class Set(models.Model):
and (self.end_time is None or timezone.now() <= self.end_time)
)
@property
@cached_property
def tasks(self):
return Task.objects.filter(settasks__set=self).order_by("settasks__name")

View File

@@ -1,3 +1,6 @@
from django.db.models import Q
from Main.models import SetTask, Task
from SprintLib.BaseView import BaseView
@@ -5,3 +8,29 @@ class SetSettingsView(BaseView):
required_login = True
view_file = "set_settings.html"
endpoint = "admin/set"
def get(self):
self.context['settasks'] = SetTask.objects.filter(set=self.entities.set).order_by('name')
self.context['tasks'] = Task.objects.filter(Q(public=True) | Q(creator=self.request.user) | Q(editors__in=self.request.user.username)).order_by('name')
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.entities.set.name = self.request.POST['name']
self.entities.set.save()
return '/admin/set?set_id=' + str(self.entities.set.id)
def post_edit(self):
current_tasks = self.entities.set.tasks
task_ids = [task.id for task in current_tasks]
for key, value in self.request.POST.items():
if key.startswith('task_'):
i = int(key.split('_')[1])
if i not in task_ids:
SetTask.objects.create(set=self.entities.set, task_id=i)
to_delete = [i for i in task_ids if 'task_' + str(i) not in self.request.POST]
SetTask.objects.filter(task_id__in=to_delete).delete()
return '/admin/set?set_id=' + str(self.entities.set.id)