This commit is contained in:
Egor Matveev 2021-11-22 15:33:26 +03:00
parent 8bf25ef4f0
commit d8946dc267
14 changed files with 70 additions and 12 deletions

View File

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

View File

@ -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',
),
]

View File

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

View File

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

View File

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

View File

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

View File

@ -0,0 +1,6 @@
from SprintLib.BaseView import BaseView
class SetSettingsView(BaseView):
required_login = True
view_file = 'set_settings.html'

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -24,8 +24,8 @@
<h3>
{{ account.userinfo.surname }} {{ account.userinfo.name }}
<span style="margin-left: 15px;" class="badge badge-{% if account.userinfo.activity_status == online_status %}success{% else %}secondary{% endif %}">{{ account.userinfo.activity_status }}</span>
{% if user.is_superuser %}
<a style="margin-left: 15px;" href="/admin/" class="badge badge-secondary"> Админ</a>
{% if user.is_superuser and owner %}
<a style="margin-left: 15px;" href="/admin/" class="badge badge-secondary">Админ</a>
{% endif %}
</h3>
<table>

View File

@ -0,0 +1,11 @@
{% extends 'base_main.html' %}
{% block title %}{{ set.name }}{% endblock %}
{% block main %}
<h2>{{ set.name }}</h2>
<h4>Таски</h4>
{% for settask in set.settasks.all %}
<input name="settask_{{ settask.id }}" value="{{ settask.name }}"> {{ settask.task.name }}<br>
{% endfor %}
{% endblock %}