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 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 import models
from django.db.models import Q from django.db.models import Q
from django.utils import timezone 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) 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['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() 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 zipfile import ZipFile
from Main.models import Solution, Progress, SolutionFile 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.queue import send_testing
from SprintLib.utils import write_bytes from SprintLib.utils import write_bytes
@ -23,6 +23,9 @@ class TaskView(BaseView):
if hasattr(self.entities, 'setTask'): if hasattr(self.entities, 'setTask'):
self.entities.add('task', self.entities.setTask.task) self.entities.add('task', self.entities.setTask.task)
self.entities.add('set', self.entities.setTask.set) 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": if self.request.method == "GET":
return return
self.solution = Solution.objects.create( self.solution = Solution.objects.create(

View File

@ -3,9 +3,48 @@
{% block title %}Главная{% endblock %} {% block title %}Главная{% endblock %}
{% block main %} {% 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 %} {% 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 %} {% endfor %}
<hr><hr> <hr><hr>
<h2>Топ задач сегодня</h2> <h2>Топ задач сегодня</h2>