diff --git a/Main/management/commands/bot.py b/Main/management/commands/bot.py index de6f2eb..0ea40e8 100644 --- a/Main/management/commands/bot.py +++ b/Main/management/commands/bot.py @@ -24,8 +24,17 @@ def register(message: Message): bot.send_message(message.chat.id, "Ты уже зарегистрировался") return user = User.objects.create(username=username) - UserInfo.objects.create(user=user, telegram_chat_id=message.chat.id) - bot.send_message(message.chat.id, 'Приветствую в Sprint! Сейчас я помогу тебе создать аккаунт.\nДля начала отправь мне свою фамилию') + ui = UserInfo.objects.create(user=user, telegram_chat_id=message.chat.id) + name = message.from_user.first_name + surname = message.from_user.last_name + if surname is None or surname == '' or name is None or name == '': + bot.send_message(message.chat.id, 'Приветствую в Sprint! Сейчас я помогу тебе создать аккаунт.\nДля начала отправь мне свою фамилию') + else: + ui.surname = surname + ui.name = name + ui.verified = True + ui.save() + bot.send_message(message.chat.id, f"Регистрация завершена! Теперь можешь ты можешь войти в сервис под именем пользователя: {user.username}") @bot.message_handler(content_types=["text"]) diff --git a/Main/migrations/0003_auto_20211121_2327.py b/Main/migrations/0003_auto_20211121_2327.py new file mode 100644 index 0000000..9ba33d9 --- /dev/null +++ b/Main/migrations/0003_auto_20211121_2327.py @@ -0,0 +1,21 @@ +# Generated by Django 3.2.4 on 2021-11-21 20:27 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('Main', '0002_auto_20211120_2009'), + ] + + operations = [ + migrations.AddField( + model_name='userinfo', + name='verified', + field=models.BooleanField(default=False), + ), + migrations.DeleteModel( + name='File', + ), + ] diff --git a/Main/models/set.py b/Main/models/set.py index a22569a..026f195 100644 --- a/Main/models/set.py +++ b/Main/models/set.py @@ -2,6 +2,8 @@ from django.contrib.auth.models import User from django.db import models from django.utils import timezone +from Main.models.task import Task + class Set(models.Model): name = models.TextField() @@ -18,3 +20,7 @@ class Set(models.Model): and (self.start_time is None or timezone.now() >= self.start_time) and (self.end_time is None or timezone.now() <= self.end_time) ) + + @property + def tasks(self): + return Task.objects.filter(settasks__set=self).order_by('settasks__name') diff --git a/Main/models/settask.py b/Main/models/settask.py index 31bbf95..9226691 100644 --- a/Main/models/settask.py +++ b/Main/models/settask.py @@ -5,6 +5,6 @@ from Main.models.set import Set class SetTask(models.Model): - set = models.ForeignKey(Set, on_delete=models.CASCADE) + set = models.ForeignKey(Set, on_delete=models.CASCADE, related_name="settasks") task = models.ForeignKey(Task, on_delete=models.CASCADE, related_name="settasks") name = models.CharField(max_length=2) diff --git a/Main/models/userinfo.py b/Main/models/userinfo.py index faeae75..0c43d6e 100644 --- a/Main/models/userinfo.py +++ b/Main/models/userinfo.py @@ -1,8 +1,8 @@ from django.contrib.auth.models import User from django.db import models -from django.db.models import Q from django.utils import timezone +from Main.models.set import Set from Main.models.group import Group from Main.models.settask import SetTask from Main.models.subscription import Subscription @@ -55,6 +55,10 @@ class UserInfo(models.Model): self._append_task(task, tasks) return sorted(tasks, key=lambda x: x.time_estimation) + @property + def available_sets(self): + return Set.objects.all() + @property def place(self): return len(UserInfo.objects.filter(rating__gt=self.rating)) + 1 diff --git a/Main/views/RatingView.py b/Main/views/RatingView.py index d569a8d..7b3f8e2 100644 --- a/Main/views/RatingView.py +++ b/Main/views/RatingView.py @@ -9,5 +9,5 @@ class RatingView(BaseView): def get(self): self.context["users"] = User.objects.filter(userinfo__verified=True).order_by( - "-userinfo__rating", "date_joined" + "-userinfo__rating", "-date_joined" ) diff --git a/Main/views/SetSettingsView.py b/Main/views/SetSettingsView.py new file mode 100644 index 0000000..f8c582f --- /dev/null +++ b/Main/views/SetSettingsView.py @@ -0,0 +1,6 @@ +from SprintLib.BaseView import BaseView + + +class SetSettingsView(BaseView): + required_login = True + view_file = 'set_settings.html' diff --git a/Main/views/SetsView.py b/Main/views/SetsView.py index a5ddf5d..39d90c1 100644 --- a/Main/views/SetsView.py +++ b/Main/views/SetsView.py @@ -7,6 +7,6 @@ class SetsView(BaseView): required_login = True def post(self): - task_name = self.request.POST["name"] - task = Set.objects.create(name=task_name, creator=self.request.user) - return f"/admin/task?task_id={task.id}" + set_name = self.request.POST["name"] + set = Set.objects.create(name=set_name, creator=self.request.user) + return f"/admin/set?set_id={set.id}" diff --git a/Main/views/TaskView.py b/Main/views/TaskView.py index dd70dff..ceb6dbe 100644 --- a/Main/views/TaskView.py +++ b/Main/views/TaskView.py @@ -3,7 +3,6 @@ from zipfile import ZipFile from Main.models import Solution, Progress, SolutionFile from SprintLib.BaseView import BaseView -from SprintLib.language import languages from SprintLib.queue import send_testing from SprintLib.utils import write_bytes diff --git a/Main/views/__init__.py b/Main/views/__init__.py index 56db9a6..f4e2f68 100644 --- a/Main/views/__init__.py +++ b/Main/views/__init__.py @@ -12,3 +12,4 @@ from Main.views.TaskRuntimeView import TaskRuntimeView from Main.views.SolutionView import SolutionView from Main.views.ImageView import ImageView from Main.views.SendCodeView import SendCodeView +from Main.views.SetSettingsView import SetSettingsView diff --git a/Sprint/urls.py b/Sprint/urls.py index d2d6e93..beb472d 100644 --- a/Sprint/urls.py +++ b/Sprint/urls.py @@ -10,6 +10,7 @@ urlpatterns = [ path("account", AccountView.as_view()), path("exit", ExitView.as_view()), path("admin/task", TaskSettingsView.as_view()), + path("admin/set", SetSettingsView.as_view()), path("sets", SetsView.as_view()), path("task", TaskView.as_view()), path("solution", SolutionView.as_view()), diff --git a/SprintLib/BaseView.py b/SprintLib/BaseView.py index da5153b..bd05a40 100644 --- a/SprintLib/BaseView.py +++ b/SprintLib/BaseView.py @@ -21,8 +21,8 @@ class BaseView: view_file: Optional[str] = None @classmethod - @transaction.atomic def as_view(cls): + @transaction.atomic def execute(request): if request.user.is_authenticated: user_info = request.user.userinfo diff --git a/templates/account.html b/templates/account.html index 46fb790..2f12c8c 100644 --- a/templates/account.html +++ b/templates/account.html @@ -24,8 +24,8 @@