This commit is contained in:
Egor Matveev 2022-02-02 23:33:45 +03:00
parent 21b98735ce
commit c824e52878
4 changed files with 50 additions and 4 deletions

View File

@ -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

View File

@ -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)

View File

@ -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(

View File

@ -3,9 +3,48 @@
{% block title %}Главная{% endblock %}
{% block main %}
<h2>Мои группы</h2>
<table>
<tr>
<td>
<h2>Мои группы</h2>
</td>
{% if user.userinfo.can_create %}
<td>
<button style="margin-left: 20px;" class="btn btn-success" data-toggle="modal" data-target="#example"><i class="fa fa-plus"></i></button>
<div class="modal fade" id="example" tabindex="-1" role="dialog" aria-labelledby="exampleModalLongTitle" aria-hidden="true">
<div class="modal-dialog" role="document">
<form method="POST">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLongTitle">Создать новую группу</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<div class="container-fluid">
<div class="row">
<div class="col-12">
{% csrf_token %}
<input type="text" name="name" placeholder="Имя группы">
</div>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-danger" data-dismiss="modal"><i class="fa fa-times-circle"></i> Закрыть</button>
<button type="submit" class="btn btn-success"><i class="fa fa-plus-circle"></i> Создать</button>
</div>
</div>
</form>
</div>
</div>
</td>
{% endif %}
</tr>
</table>
{% for group in groups %}
<a href="/group?group_id={{ group.id }}">{{ group.name }}</a>
<a href="/group?group_id={{ group.id }}">{{ group.name }}</a><br>
{% endfor %}
<hr><hr>
<h2>Топ задач сегодня</h2>