diff --git a/Main/models/userinfo.py b/Main/models/userinfo.py index 5762fdc..13a3eb5 100644 --- a/Main/models/userinfo.py +++ b/Main/models/userinfo.py @@ -1,6 +1,6 @@ from functools import cached_property -from django.contrib.auth.models import User, Group +from django.contrib.auth.models import User from django.db import models from django.db.models import Q from django.utils import timezone diff --git a/Main/views/MainView.py b/Main/views/MainView.py index f3aacb6..c6e256e 100644 --- a/Main/views/MainView.py +++ b/Main/views/MainView.py @@ -30,3 +30,7 @@ class MainView(BaseView): new_tasks = set(Task.objects.filter(public=True)) - set(all_tasks) self.context['new_tasks'] = sample(new_tasks, k=min(5, len(new_tasks))) self.context['groups'] = Group.objects.filter(Q(editors__in=self.request.user.username) | Q(creator=self.request.user) | Q(users=self.request.user)).distinct() + + def post(self): + group = Group.objects.create(name=self.request.POST['name'], creator=self.request.user) + return '/group?group_id=' + str(group.id) diff --git a/Main/views/TaskView.py b/Main/views/TaskView.py index fff7a48..91cc0d6 100644 --- a/Main/views/TaskView.py +++ b/Main/views/TaskView.py @@ -2,7 +2,7 @@ import io from zipfile import ZipFile from Main.models import Solution, Progress, SolutionFile -from SprintLib.BaseView import BaseView +from SprintLib.BaseView import BaseView, AccessError from SprintLib.queue import send_testing from SprintLib.utils import write_bytes @@ -23,6 +23,9 @@ class TaskView(BaseView): if hasattr(self.entities, 'setTask'): self.entities.add('task', self.entities.setTask.task) self.entities.add('set', self.entities.setTask.set) + else: + if not self.entities.task.public and not self.entities.task.creator == self.request.user and not self.request.user.username in self.entities.task.editors: + raise AccessError() if self.request.method == "GET": return self.solution = Solution.objects.create( diff --git a/templates/main.html b/templates/main.html index cf5e281..97a23f2 100644 --- a/templates/main.html +++ b/templates/main.html @@ -3,9 +3,48 @@ {% block title %}Главная{% endblock %} {% block main %} -

Мои группы

+ + + + {% if user.userinfo.can_create %} + + {% endif %} + +
+

Мои группы

+
+ + +
{% for group in groups %} - {{ group.name }} + {{ group.name }}
{% endfor %}

Топ задач сегодня