This commit is contained in:
Egor Matveev
2021-11-20 23:15:11 +03:00
parent 9a20711820
commit 68245ffa43
89 changed files with 139 additions and 2283 deletions

View File

@@ -1,13 +1,49 @@
import telebot
from django.contrib.auth.models import User
from django.core.management.base import BaseCommand
from telebot.types import Message
from Main.models import UserInfo
bot = telebot.TeleBot("1994460106:AAGrGsCZjF6DVG_T-zycELuVfxnWw8x7UyU")
@bot.message_handler(commands=["start"])
def do_action(message: Message):
bot.send_message(message.chat.id, "Привет! Я тут чтобы помогать!\n/register - зарегистрироваться в сервисе\nБольше команд нет:(")
@bot.message_handler(commands=["register"])
def register(message: Message):
username = message.from_user.username
if username == "":
bot.send_message(message.chat.id, "Добавть имя пользователя к своему телеграм аккаунту")
return
ui = UserInfo.objects.filter(telegram_chat_id=message.chat.id).first()
if ui:
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Для начала отправь мне свою фамилию')
@bot.message_handler(content_types=["text"])
def do_action(message):
bot.send_message(chat_id=message.chat.id, text=f"ID чата: {message.chat.id}")
def do_action(message: Message):
user = User.objects.filter(userinfo__telegram_chat_id=message.chat.id).first()
if not user:
bot.send_message(message.chat.id, "Зарегистрируйся в сервисе, чтобы взаимодействовать со мной")
return
if user.userinfo.surname is None:
user.userinfo.surname = message.text
user.userinfo.save()
bot.send_message(message.chat.id, "Отлично! Теперь отправь мне свое имя")
elif user.userinfo.name is None:
user.userinfo.name = message.text
user.userinfo.save()
bot.send_message(message.chat.id, f"Регистрация завершена! Теперь можешь ты можешь войти в сервис под именем пользователя: {user.username}")
else:
bot.send_message(message.chat.id, "Я пока больше ничего не умею")
class Command(BaseCommand):

View File

@@ -1,215 +0,0 @@
# Generated by Django 3.0.2 on 2020-06-25 20:11
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
initial = True
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
]
operations = [
migrations.CreateModel(
name="Block",
fields=[
(
"id",
models.AutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
("name", models.TextField()),
("time_start", models.DateTimeField()),
("time_end", models.DateTimeField()),
("opened", models.IntegerField()),
],
),
migrations.CreateModel(
name="Course",
fields=[
(
"id",
models.AutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
("name", models.TextField()),
],
),
migrations.CreateModel(
name="UserInfo",
fields=[
(
"id",
models.AutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
("surname", models.TextField()),
("name", models.TextField()),
("middle_name", models.TextField()),
("group_name", models.TextField()),
(
"user",
models.OneToOneField(
null=True,
on_delete=django.db.models.deletion.CASCADE,
to=settings.AUTH_USER_MODEL,
),
),
],
),
migrations.CreateModel(
name="Task",
fields=[
(
"id",
models.AutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
("name", models.TextField()),
("legend", models.TextField()),
("input", models.TextField()),
("output", models.TextField()),
("specifications", models.TextField()),
("time_limit", models.IntegerField()),
(
"block",
models.ForeignKey(
on_delete=django.db.models.deletion.CASCADE, to="Main.Block"
),
),
],
),
migrations.CreateModel(
name="Subscribe",
fields=[
(
"id",
models.AutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
("is_assistant", models.IntegerField()),
(
"course",
models.ForeignKey(
on_delete=django.db.models.deletion.CASCADE, to="Main.Course"
),
),
(
"user",
models.ForeignKey(
on_delete=django.db.models.deletion.CASCADE,
to=settings.AUTH_USER_MODEL,
),
),
],
),
migrations.CreateModel(
name="Solution",
fields=[
(
"id",
models.AutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
("result", models.TextField()),
(
"task",
models.ForeignKey(
on_delete=django.db.models.deletion.CASCADE, to="Main.Task"
),
),
(
"user",
models.ForeignKey(
on_delete=django.db.models.deletion.CASCADE,
to=settings.AUTH_USER_MODEL,
),
),
],
),
migrations.CreateModel(
name="Restore",
fields=[
(
"id",
models.AutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
("code", models.TextField()),
(
"user",
models.ForeignKey(
on_delete=django.db.models.deletion.CASCADE,
to=settings.AUTH_USER_MODEL,
),
),
],
),
migrations.CreateModel(
name="Mark",
fields=[
(
"id",
models.AutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
("mark", models.IntegerField()),
(
"block",
models.ForeignKey(
on_delete=django.db.models.deletion.CASCADE, to="Main.Block"
),
),
(
"user",
models.ForeignKey(
on_delete=django.db.models.deletion.CASCADE,
to=settings.AUTH_USER_MODEL,
),
),
],
),
migrations.AddField(
model_name="block",
name="course",
field=models.ForeignKey(
on_delete=django.db.models.deletion.CASCADE, to="Main.Course"
),
),
]

View File

@@ -1,18 +0,0 @@
# Generated by Django 3.0.2 on 2020-06-26 09:46
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
("Main", "0001_initial"),
]
operations = [
migrations.RenameField(
model_name="userinfo",
old_name="group_name",
new_name="group",
),
]

View File

@@ -1,18 +0,0 @@
# Generated by Django 3.0.2 on 2020-06-27 19:59
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("Main", "0002_auto_20200626_0946"),
]
operations = [
migrations.AlterField(
model_name="subscribe",
name="is_assistant",
field=models.IntegerField(default=0),
),
]

View File

@@ -1,38 +0,0 @@
# Generated by Django 3.0.2 on 2020-06-28 09:17
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("Main", "0003_auto_20200627_1959"),
]
operations = [
migrations.AlterField(
model_name="task",
name="input",
field=models.TextField(default=""),
),
migrations.AlterField(
model_name="task",
name="legend",
field=models.TextField(default=""),
),
migrations.AlterField(
model_name="task",
name="output",
field=models.TextField(default=""),
),
migrations.AlterField(
model_name="task",
name="specifications",
field=models.TextField(default=""),
),
migrations.AlterField(
model_name="task",
name="time_limit",
field=models.IntegerField(default=10000),
),
]

View File

@@ -1,18 +0,0 @@
# Generated by Django 3.0.2 on 2020-06-28 10:28
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("Main", "0004_auto_20200628_0917"),
]
operations = [
migrations.AddField(
model_name="solution",
name="time_sent",
field=models.DateTimeField(null=True),
),
]

View File

@@ -1,21 +0,0 @@
# Generated by Django 3.0.2 on 2020-06-28 13:15
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
("Main", "0005_solution_time_sent"),
]
operations = [
migrations.AlterField(
model_name="solution",
name="user",
field=models.ForeignKey(
on_delete=django.db.models.deletion.CASCADE, to="Main.UserInfo"
),
),
]

View File

@@ -1,23 +0,0 @@
# Generated by Django 3.0.2 on 2020-06-29 08:33
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
("Main", "0006_auto_20200628_1315"),
]
operations = [
migrations.AlterField(
model_name="solution",
name="user",
field=models.ForeignKey(
on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL
),
),
]

View File

@@ -1,23 +0,0 @@
# Generated by Django 3.0.2 on 2020-07-02 18:40
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("Main", "0007_auto_20200629_0833"),
]
operations = [
migrations.AddField(
model_name="userinfo",
name="mark_notification",
field=models.IntegerField(default=0),
),
migrations.AddField(
model_name="userinfo",
name="new_block_notification",
field=models.IntegerField(default=0),
),
]

View File

@@ -1,23 +0,0 @@
# Generated by Django 3.0.2 on 2020-07-04 14:03
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("Main", "0008_auto_20200702_2140"),
]
operations = [
migrations.AddField(
model_name="solution",
name="comment",
field=models.TextField(default=""),
),
migrations.AddField(
model_name="solution",
name="mark",
field=models.IntegerField(null=True),
),
]

View File

@@ -1,29 +0,0 @@
# Generated by Django 3.0.2 on 2020-07-24 10:08
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("Main", "0009_auto_20200704_1703"),
]
operations = [
migrations.CreateModel(
name="System",
fields=[
(
"id",
models.AutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
("key", models.TextField()),
("value", models.TextField()),
],
),
]

View File

@@ -1,31 +0,0 @@
# Generated by Django 3.0.2 on 2020-08-14 17:35
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("Main", "0010_system"),
]
operations = [
migrations.CreateModel(
name="ThreadSafe",
fields=[
(
"id",
models.AutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
("key", models.CharField(max_length=80, unique=True)),
],
),
migrations.DeleteModel(
name="Mark",
),
]

View File

@@ -1,40 +0,0 @@
# Generated by Django 3.1 on 2020-09-01 08:54
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
("Main", "0011_auto_20200814_2035"),
]
operations = [
migrations.AddField(
model_name="task",
name="weight",
field=models.FloatField(default=1.0),
),
migrations.CreateModel(
name="ExtraFile",
fields=[
(
"id",
models.AutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
("file", models.FileField(upload_to="")),
(
"task",
models.ForeignKey(
on_delete=django.db.models.deletion.CASCADE, to="Main.task"
),
),
],
),
]

View File

@@ -1,16 +0,0 @@
# Generated by Django 3.1 on 2020-09-01 09:11
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
("Main", "0012_auto_20200901_1154"),
]
operations = [
migrations.DeleteModel(
name="ExtraFile",
),
]

View File

@@ -1,36 +0,0 @@
# Generated by Django 3.1 on 2020-09-01 09:12
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
("Main", "0013_delete_extrafile"),
]
operations = [
migrations.CreateModel(
name="ExtraFile",
fields=[
(
"id",
models.AutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
("file", models.FileField(upload_to="")),
("filename", models.TextField()),
(
"task",
models.ForeignKey(
on_delete=django.db.models.deletion.CASCADE, to="Main.task"
),
),
],
),
]

View File

@@ -1,23 +0,0 @@
# Generated by Django 3.1 on 2020-09-02 12:55
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("Main", "0014_extrafile"),
]
operations = [
migrations.AddField(
model_name="task",
name="max_mark",
field=models.IntegerField(default=10),
),
migrations.AlterField(
model_name="extrafile",
name="file",
field=models.FileField(upload_to="data\\extra_files"),
),
]

View File

@@ -1,18 +0,0 @@
# Generated by Django 3.1 on 2020-09-02 13:13
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("Main", "0015_auto_20200902_1555"),
]
operations = [
migrations.AddField(
model_name="task",
name="max_solutions_count",
field=models.IntegerField(default=10),
),
]

View File

@@ -1,18 +0,0 @@
# Generated by Django 3.1 on 2020-09-05 12:45
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("Main", "0016_task_max_solutions_count"),
]
operations = [
migrations.AddField(
model_name="solution",
name="details",
field=models.TextField(default=""),
),
]

View File

@@ -1,17 +0,0 @@
# Generated by Django 3.1 on 2020-09-17 08:45
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
("Main", "0017_solution_details"),
]
operations = [
migrations.RemoveField(
model_name="extrafile",
name="file",
),
]

View File

@@ -1,18 +0,0 @@
# Generated by Django 3.1 on 2020-09-17 09:43
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("Main", "0018_remove_extrafile_file"),
]
operations = [
migrations.AddField(
model_name="task",
name="show_details",
field=models.IntegerField(default=1),
),
]

View File

@@ -1,18 +0,0 @@
# Generated by Django 3.1 on 2020-10-08 08:57
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("Main", "0019_task_show_details"),
]
operations = [
migrations.AddField(
model_name="task",
name="solution_type",
field=models.TextField(default="Solution"),
),
]

View File

@@ -1,17 +0,0 @@
# Generated by Django 3.1 on 2020-10-08 10:20
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
("Main", "0020_task_solution_type"),
]
operations = [
migrations.RemoveField(
model_name="task",
name="solution_type",
),
]

View File

@@ -1,18 +0,0 @@
# Generated by Django 3.1 on 2020-10-22 14:28
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("Main", "0021_remove_task_solution_type"),
]
operations = [
migrations.AddField(
model_name="task",
name="full_solution",
field=models.IntegerField(default=0),
),
]

View File

@@ -1,18 +0,0 @@
# Generated by Django 3.1 on 2020-11-01 19:37
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("Main", "0022_task_full_solution"),
]
operations = [
migrations.AddField(
model_name="extrafile",
name="for_compilation",
field=models.IntegerField(default=0),
),
]

View File

@@ -1,18 +0,0 @@
# Generated by Django 3.1 on 2020-11-06 08:36
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("Main", "0023_extrafile_for_compilation"),
]
operations = [
migrations.AddField(
model_name="extrafile",
name="sample",
field=models.IntegerField(default=0),
),
]

View File

@@ -1,51 +0,0 @@
# Generated by Django 3.1 on 2020-11-06 15:48
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("Main", "0024_extrafile_sample"),
]
operations = [
migrations.RemoveField(
model_name="userinfo",
name="mark_notification",
),
migrations.RemoveField(
model_name="userinfo",
name="new_block_notification",
),
migrations.AlterField(
model_name="block",
name="opened",
field=models.BooleanField(default=False),
),
migrations.AlterField(
model_name="extrafile",
name="for_compilation",
field=models.BooleanField(default=False),
),
migrations.AlterField(
model_name="extrafile",
name="sample",
field=models.BooleanField(default=False),
),
migrations.AlterField(
model_name="subscribe",
name="is_assistant",
field=models.BooleanField(default=False),
),
migrations.AlterField(
model_name="task",
name="full_solution",
field=models.BooleanField(default=False),
),
migrations.AlterField(
model_name="task",
name="show_details",
field=models.BooleanField(default=False),
),
]

View File

@@ -1,18 +0,0 @@
# Generated by Django 3.1.3 on 2020-12-01 08:29
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("Main", "0025_auto_20201106_1848"),
]
operations = [
migrations.AddField(
model_name="block",
name="show_rating",
field=models.BooleanField(default=True),
),
]

View File

@@ -1,18 +0,0 @@
# Generated by Django 3.1.3 on 2020-12-26 13:21
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("Main", "0026_block_show_rating"),
]
operations = [
migrations.AddField(
model_name="task",
name="mark_formula",
field=models.TextField(default="None"),
),
]

View File

@@ -1,18 +0,0 @@
# Generated by Django 3.1.3 on 2021-01-01 09:15
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("Main", "0027_task_mark_formula"),
]
operations = [
migrations.AddField(
model_name="task",
name="show_result",
field=models.BooleanField(default=True),
),
]

View File

@@ -1,23 +0,0 @@
# Generated by Django 3.1.3 on 2021-01-30 16:50
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("Main", "0028_task_show_result"),
]
operations = [
migrations.AddField(
model_name="block",
name="priority",
field=models.IntegerField(default=5),
),
migrations.AddField(
model_name="task",
name="priority",
field=models.IntegerField(default=5),
),
]

View File

@@ -1,54 +0,0 @@
# Generated by Django 3.1.3 on 2021-02-06 21:17
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
("Main", "0029_auto_20210130_1950"),
]
operations = [
migrations.CreateModel(
name="Message",
fields=[
(
"id",
models.AutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
("for_all", models.BooleanField()),
("text", models.TextField()),
(
"reply_to",
models.ForeignKey(
null=True,
on_delete=django.db.models.deletion.CASCADE,
to="Main.message",
),
),
(
"sender",
models.ForeignKey(
null=True,
on_delete=django.db.models.deletion.CASCADE,
to=settings.AUTH_USER_MODEL,
),
),
(
"task",
models.ForeignKey(
on_delete=django.db.models.deletion.CASCADE, to="Main.task"
),
),
],
),
]

View File

@@ -1,18 +0,0 @@
# Generated by Django 3.1.3 on 2021-03-13 08:06
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("Main", "0030_message"),
]
operations = [
migrations.AddField(
model_name="block",
name="cheating_checking",
field=models.BooleanField(default=False),
),
]

View File

@@ -1,18 +0,0 @@
# Generated by Django 3.1.3 on 2021-03-14 12:38
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("Main", "0031_block_cheating_checking"),
]
operations = [
migrations.AddField(
model_name="block",
name="cheating_data",
field=models.TextField(default="[]"),
),
]

View File

@@ -1,17 +0,0 @@
# Generated by Django 3.1.3 on 2021-03-14 13:15
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
("Main", "0032_block_cheating_data"),
]
operations = [
migrations.RemoveField(
model_name="block",
name="cheating_data",
),
]

View File

@@ -1,152 +0,0 @@
# Generated by Django 3.2.5 on 2021-07-25 15:48
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("Main", "0033_remove_block_cheating_data"),
]
operations = [
migrations.CreateModel(
name="Set",
fields=[
(
"id",
models.AutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
("name", models.TextField()),
],
),
migrations.RenameModel(
old_name="Course",
new_name="Group",
),
migrations.RemoveField(
model_name="block",
name="course",
),
migrations.RemoveField(
model_name="extrafile",
name="task",
),
migrations.RemoveField(
model_name="message",
name="reply_to",
),
migrations.RemoveField(
model_name="message",
name="sender",
),
migrations.RemoveField(
model_name="message",
name="task",
),
migrations.RemoveField(
model_name="restore",
name="user",
),
migrations.RemoveField(
model_name="solution",
name="task",
),
migrations.RemoveField(
model_name="solution",
name="user",
),
migrations.RemoveField(
model_name="subscribe",
name="course",
),
migrations.RemoveField(
model_name="subscribe",
name="user",
),
migrations.DeleteModel(
name="System",
),
migrations.DeleteModel(
name="ThreadSafe",
),
migrations.RemoveField(
model_name="task",
name="block",
),
migrations.RemoveField(
model_name="task",
name="full_solution",
),
migrations.RemoveField(
model_name="task",
name="input",
),
migrations.RemoveField(
model_name="task",
name="legend",
),
migrations.RemoveField(
model_name="task",
name="mark_formula",
),
migrations.RemoveField(
model_name="task",
name="max_mark",
),
migrations.RemoveField(
model_name="task",
name="max_solutions_count",
),
migrations.RemoveField(
model_name="task",
name="output",
),
migrations.RemoveField(
model_name="task",
name="priority",
),
migrations.RemoveField(
model_name="task",
name="show_details",
),
migrations.RemoveField(
model_name="task",
name="show_result",
),
migrations.RemoveField(
model_name="task",
name="specifications",
),
migrations.RemoveField(
model_name="task",
name="time_limit",
),
migrations.RemoveField(
model_name="task",
name="weight",
),
migrations.DeleteModel(
name="Block",
),
migrations.DeleteModel(
name="ExtraFile",
),
migrations.DeleteModel(
name="Message",
),
migrations.DeleteModel(
name="Restore",
),
migrations.DeleteModel(
name="Solution",
),
migrations.DeleteModel(
name="Subscribe",
),
]

View File

@@ -1,20 +0,0 @@
# Generated by Django 3.2.5 on 2021-07-25 16:10
from django.conf import settings
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
("Main", "0034_auto_20210725_1848"),
]
operations = [
migrations.AddField(
model_name="group",
name="users",
field=models.ManyToManyField(to=settings.AUTH_USER_MODEL),
),
]

View File

@@ -1,43 +0,0 @@
# Generated by Django 3.2.5 on 2021-07-25 16:22
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("Main", "0035_group_users"),
]
operations = [
migrations.AddField(
model_name="set",
name="tasks",
field=models.ManyToManyField(to="Main.Task"),
),
migrations.AddField(
model_name="task",
name="input_format",
field=models.TextField(default=""),
),
migrations.AddField(
model_name="task",
name="legend",
field=models.TextField(default=""),
),
migrations.AddField(
model_name="task",
name="output_format",
field=models.TextField(default=""),
),
migrations.AddField(
model_name="task",
name="public",
field=models.BooleanField(default=False),
),
migrations.AddField(
model_name="task",
name="specifications",
field=models.TextField(default=""),
),
]

View File

@@ -1,17 +0,0 @@
# Generated by Django 3.2.5 on 2021-07-25 18:02
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
("Main", "0036_auto_20210725_1922"),
]
operations = [
migrations.RemoveField(
model_name="userinfo",
name="group",
),
]

View File

@@ -1,25 +0,0 @@
# Generated by Django 3.2.5 on 2021-07-25 18:05
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
("Main", "0037_remove_userinfo_group"),
]
operations = [
migrations.AddField(
model_name="task",
name="creator",
field=models.ForeignKey(
null=True,
on_delete=django.db.models.deletion.SET_NULL,
to=settings.AUTH_USER_MODEL,
),
),
]

View File

@@ -1,46 +0,0 @@
# Generated by Django 3.2.5 on 2021-07-31 15:50
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("Main", "0038_task_creator"),
]
operations = [
migrations.AddField(
model_name="task",
name="time_limit",
field=models.IntegerField(default=10000),
),
migrations.AlterField(
model_name="group",
name="id",
field=models.BigAutoField(
auto_created=True, primary_key=True, serialize=False, verbose_name="ID"
),
),
migrations.AlterField(
model_name="set",
name="id",
field=models.BigAutoField(
auto_created=True, primary_key=True, serialize=False, verbose_name="ID"
),
),
migrations.AlterField(
model_name="task",
name="id",
field=models.BigAutoField(
auto_created=True, primary_key=True, serialize=False, verbose_name="ID"
),
),
migrations.AlterField(
model_name="userinfo",
name="id",
field=models.BigAutoField(
auto_created=True, primary_key=True, serialize=False, verbose_name="ID"
),
),
]

View File

@@ -1,41 +0,0 @@
# Generated by Django 3.2.5 on 2021-08-03 09:24
from django.db import migrations, models
import django.db.models.deletion
import django.utils.timezone
class Migration(migrations.Migration):
dependencies = [
("Main", "0039_auto_20210731_1850"),
]
operations = [
migrations.AddField(
model_name="userinfo",
name="last_request",
field=models.DateTimeField(default=django.utils.timezone.now),
),
migrations.CreateModel(
name="File",
fields=[
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
("name", models.TextField()),
(
"task",
models.ForeignKey(
on_delete=django.db.models.deletion.CASCADE, to="Main.task"
),
),
],
),
]

View File

@@ -1,18 +0,0 @@
# Generated by Django 3.2.5 on 2021-08-03 11:09
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("Main", "0040_auto_20210803_1224"),
]
operations = [
migrations.AddField(
model_name="userinfo",
name="profile_picture",
field=models.ImageField(null=True, upload_to="profile_pictures"),
),
]

View File

@@ -1,18 +0,0 @@
# Generated by Django 3.2.5 on 2021-08-03 11:34
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("Main", "0041_userinfo_profile_picture"),
]
operations = [
migrations.AddField(
model_name="userinfo",
name="rating",
field=models.IntegerField(default=0),
),
]

View File

@@ -1,44 +0,0 @@
# Generated by Django 3.2.5 on 2021-08-03 13:51
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
("Main", "0042_userinfo_rating"),
]
operations = [
migrations.CreateModel(
name="Subscription",
fields=[
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
("role", models.IntegerField()),
(
"group",
models.ForeignKey(
on_delete=django.db.models.deletion.CASCADE, to="Main.group"
),
),
(
"user",
models.ForeignKey(
on_delete=django.db.models.deletion.CASCADE,
to=settings.AUTH_USER_MODEL,
),
),
],
),
]

View File

@@ -1,41 +0,0 @@
# Generated by Django 3.2.5 on 2021-08-03 13:55
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
("Main", "0043_subscription"),
]
operations = [
migrations.CreateModel(
name="SetTask",
fields=[
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
("name", models.CharField(max_length=2)),
(
"set",
models.ForeignKey(
on_delete=django.db.models.deletion.CASCADE, to="Main.set"
),
),
(
"task",
models.ForeignKey(
on_delete=django.db.models.deletion.CASCADE, to="Main.task"
),
),
],
),
]

View File

@@ -1,41 +0,0 @@
# Generated by Django 3.2.5 on 2021-08-03 15:01
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
("Main", "0044_settask"),
]
operations = [
migrations.RemoveField(
model_name="group",
name="users",
),
migrations.RemoveField(
model_name="set",
name="tasks",
),
migrations.AddField(
model_name="group",
name="sets",
field=models.ManyToManyField(to="Main.Set"),
),
migrations.AddField(
model_name="set",
name="public",
field=models.BooleanField(default=False),
),
migrations.AlterField(
model_name="settask",
name="task",
field=models.ForeignKey(
on_delete=django.db.models.deletion.CASCADE,
related_name="settasks",
to="Main.task",
),
),
]

View File

@@ -1,23 +0,0 @@
# Generated by Django 3.2.5 on 2021-08-03 15:07
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
("Main", "0045_auto_20210803_1801"),
]
operations = [
migrations.AlterField(
model_name="subscription",
name="group",
field=models.ForeignKey(
on_delete=django.db.models.deletion.CASCADE,
related_name="subscriptions",
to="Main.group",
),
),
]

View File

@@ -1,25 +0,0 @@
# Generated by Django 3.2.5 on 2021-08-06 09:34
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
("Main", "0046_alter_subscription_group"),
]
operations = [
migrations.AddField(
model_name="set",
name="creator",
field=models.ForeignKey(
null=True,
on_delete=django.db.models.deletion.SET_NULL,
to=settings.AUTH_USER_MODEL,
),
),
]

View File

@@ -1,27 +0,0 @@
# Generated by Django 3.2.5 on 2021-08-08 19:19
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
import django.utils.timezone
class Migration(migrations.Migration):
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
('Main', '0047_set_creator'),
]
operations = [
migrations.CreateModel(
name='Solution',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('time_sent', models.DateTimeField(default=django.utils.timezone.now)),
('result', models.TextField(default='In queue')),
('task', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='Main.task')),
('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
],
),
]

View File

@@ -1,20 +0,0 @@
# Generated by Django 3.2.5 on 2021-08-08 19:27
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('Main', '0048_solution'),
]
operations = [
migrations.CreateModel(
name='Language',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.TextField()),
],
),
]

View File

@@ -1,19 +0,0 @@
# Generated by Django 3.2.5 on 2021-08-08 19:29
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('Main', '0049_language'),
]
operations = [
migrations.AddField(
model_name='solution',
name='language',
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to='Main.language'),
),
]

View File

@@ -1,18 +0,0 @@
# Generated by Django 3.2.5 on 2021-08-08 20:53
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('Main', '0050_solution_language'),
]
operations = [
migrations.AddField(
model_name='language',
name='file_type',
field=models.TextField(null=True),
),
]

View File

@@ -1,18 +0,0 @@
# Generated by Django 3.2.5 on 2021-08-08 21:00
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('Main', '0051_language_file_type'),
]
operations = [
migrations.AddField(
model_name='language',
name='logo',
field=models.ImageField(null=True, upload_to=''),
),
]

View File

@@ -1,23 +0,0 @@
# Generated by Django 3.2.5 on 2021-08-08 21:32
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('Main', '0052_language_logo'),
]
operations = [
migrations.AddField(
model_name='language',
name='opened',
field=models.BooleanField(default=False),
),
migrations.AlterField(
model_name='language',
name='logo',
field=models.ImageField(null=True, upload_to='logos'),
),
]

View File

@@ -1,24 +0,0 @@
# Generated by Django 3.2.5 on 2021-08-08 22:17
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('Main', '0053_auto_20210809_0032'),
]
operations = [
migrations.CreateModel(
name='ExtraFile',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('filename', models.TextField()),
('is_test', models.BooleanField()),
('file', models.FileField(upload_to='files')),
('task', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='Main.task')),
],
),
]

View File

@@ -1,18 +0,0 @@
# Generated by Django 3.2.5 on 2021-08-08 22:22
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('Main', '0054_extrafile'),
]
operations = [
migrations.AddField(
model_name='extrafile',
name='readable',
field=models.BooleanField(null=True),
),
]

View File

@@ -1,17 +0,0 @@
# Generated by Django 3.2.5 on 2021-08-09 07:08
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('Main', '0055_extrafile_readable'),
]
operations = [
migrations.RemoveField(
model_name='extrafile',
name='file',
),
]

View File

@@ -1,18 +0,0 @@
# Generated by Django 3.2.5 on 2021-08-13 12:42
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('Main', '0056_remove_extrafile_file'),
]
operations = [
migrations.AlterField(
model_name='extrafile',
name='is_test',
field=models.BooleanField(null=True),
),
]

View File

@@ -1,18 +0,0 @@
# Generated by Django 3.2.5 on 2021-08-13 12:49
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('Main', '0057_alter_extrafile_is_test'),
]
operations = [
migrations.AddField(
model_name='extrafile',
name='test_number',
field=models.IntegerField(null=True),
),
]

View File

@@ -1,18 +0,0 @@
# Generated by Django 3.2.5 on 2021-08-16 14:05
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('Main', '0058_extrafile_test_number'),
]
operations = [
migrations.AddField(
model_name='language',
name='image',
field=models.TextField(default='ubuntu'),
),
]

View File

@@ -1,18 +0,0 @@
# Generated by Django 3.2.5 on 2021-08-17 07:38
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('Main', '0059_language_image'),
]
operations = [
migrations.AddField(
model_name='language',
name='work_name',
field=models.TextField(default=''),
),
]

View File

@@ -1,18 +0,0 @@
# Generated by Django 3.2.4 on 2021-09-01 08:25
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('Main', '0060_language_work_name'),
]
operations = [
migrations.AddField(
model_name='extrafile',
name='is_sample',
field=models.BooleanField(null=True),
),
]

View File

@@ -1,27 +0,0 @@
# Generated by Django 3.2.4 on 2021-09-01 09:25
import datetime
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
('Main', '0061_extrafile_is_sample'),
]
operations = [
migrations.CreateModel(
name='Progress',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('start_time', models.DateTimeField(default=datetime.datetime.now)),
('finished_time', models.DateTimeField(null=True)),
('task', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='Main.task')),
('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
],
),
]

View File

@@ -1,19 +0,0 @@
# Generated by Django 3.2.4 on 2021-09-01 09:26
from django.db import migrations, models
import django.utils.timezone
class Migration(migrations.Migration):
dependencies = [
('Main', '0062_progress'),
]
operations = [
migrations.AlterField(
model_name='progress',
name='start_time',
field=models.DateTimeField(default=django.utils.timezone.now),
),
]

View File

@@ -1,22 +0,0 @@
# Generated by Django 3.2.4 on 2021-09-01 13:43
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('Main', '0063_alter_progress_start_time'),
]
operations = [
migrations.RemoveField(
model_name='userinfo',
name='rating',
),
migrations.AddField(
model_name='progress',
name='score',
field=models.IntegerField(default=0),
),
]

View File

@@ -1,23 +0,0 @@
# Generated by Django 3.2.4 on 2021-09-01 14:21
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('Main', '0064_auto_20210901_1643'),
]
operations = [
migrations.AddField(
model_name='task',
name='time_estimation',
field=models.IntegerField(default=5),
),
migrations.AddField(
model_name='userinfo',
name='rating',
field=models.IntegerField(default=0),
),
]

View File

@@ -1,18 +0,0 @@
# Generated by Django 3.2.4 on 2021-09-01 14:33
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('Main', '0065_auto_20210901_1721'),
]
operations = [
migrations.AddField(
model_name='progress',
name='finished',
field=models.BooleanField(default=False),
),
]

View File

@@ -1,18 +0,0 @@
# Generated by Django 3.2.4 on 2021-09-01 19:19
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('Main', '0066_progress_finished'),
]
operations = [
migrations.AddField(
model_name='userinfo',
name='notification_solution_result',
field=models.BooleanField(default=False),
),
]

View File

@@ -1,18 +0,0 @@
# Generated by Django 3.2.4 on 2021-09-02 06:33
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('Main', '0067_userinfo_notification_solution_result'),
]
operations = [
migrations.AddField(
model_name='userinfo',
name='telegram_chat_id',
field=models.IntegerField(null=True),
),
]

View File

@@ -1,17 +0,0 @@
# Generated by Django 3.2.4 on 2021-09-02 06:36
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('Main', '0068_userinfo_telegram_chat_id'),
]
operations = [
migrations.RemoveField(
model_name='userinfo',
name='telegram_chat_id',
),
]

View File

@@ -1,18 +0,0 @@
# Generated by Django 3.2.4 on 2021-09-02 06:37
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('Main', '0069_remove_userinfo_telegram_chat_id'),
]
operations = [
migrations.AddField(
model_name='userinfo',
name='telegram_chat_id',
field=models.TextField(default=''),
),
]

View File

@@ -1,18 +0,0 @@
# Generated by Django 3.2.4 on 2021-09-02 08:58
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('Main', '0070_userinfo_telegram_chat_id'),
]
operations = [
migrations.AddField(
model_name='language',
name='highlight',
field=models.TextField(default='nohighlight'),
),
]

View File

@@ -1,18 +0,0 @@
# Generated by Django 3.2.4 on 2021-09-02 09:03
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('Main', '0071_language_highlight'),
]
operations = [
migrations.AlterField(
model_name='language',
name='highlight',
field=models.TextField(default='plaintext'),
),
]

View File

@@ -1,29 +0,0 @@
# Generated by Django 3.2.4 on 2021-11-05 22:25
from django.db import migrations, models
import django.utils.timezone
class Migration(migrations.Migration):
dependencies = [
('Main', '0072_alter_language_highlight'),
]
operations = [
migrations.AddField(
model_name='set',
name='end_time',
field=models.DateTimeField(default=django.utils.timezone.now),
),
migrations.AddField(
model_name='set',
name='opened',
field=models.BooleanField(default=False),
),
migrations.AddField(
model_name='set',
name='start_time',
field=models.DateTimeField(default=django.utils.timezone.now),
),
]

View File

@@ -1,22 +0,0 @@
# Generated by Django 3.2.4 on 2021-11-06 09:15
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('Main', '0073_auto_20211106_0125'),
]
operations = [
migrations.RemoveField(
model_name='solution',
name='language',
),
migrations.AddField(
model_name='solution',
name='language_id',
field=models.IntegerField(default=0),
),
]

View File

@@ -1,31 +0,0 @@
# Generated by Django 3.2.4 on 2021-11-10 20:17
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('Main', '0074_auto_20211106_1215'),
]
operations = [
migrations.CreateModel(
name='SolutionFile',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('path', models.TextField()),
('fs_id', models.IntegerField()),
('solution', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='Main.solution')),
],
),
migrations.DeleteModel(
name='Language',
),
migrations.AddField(
model_name='extrafile',
name='fs_id',
field=models.IntegerField(null=True),
),
]

View File

@@ -1,22 +0,0 @@
# Generated by Django 3.2.4 on 2021-11-19 17:50
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('Main', '0075_auto_20211110_2317'),
]
operations = [
migrations.RemoveField(
model_name='userinfo',
name='profile_picture',
),
migrations.AddField(
model_name='userinfo',
name='profile_picture_fs_id',
field=models.IntegerField(null=True),
),
]

17
Main/models/token.py Normal file
View File

@@ -0,0 +1,17 @@
from random import choice
from django.db.models import JSONField
from django.db import models
from django.utils import timezone
def create_token():
symbols = 'qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM1234567890'
return "".join([choice(symbols) for _ in range(30)])
class Token(models.Model):
token = models.CharField(max_length=30, default=create_token)
created_dt = models.DateTimeField(default=timezone.now)
reason = models.CharField(max_length=20)
extras = JSONField()

View File

@@ -11,9 +11,8 @@ from SprintLib.language import languages
class UserInfo(models.Model):
surname = models.TextField()
name = models.TextField()
middle_name = models.TextField()
surname = models.TextField(null=True)
name = models.TextField(null=True)
last_request = models.DateTimeField(default=timezone.now)
profile_picture_fs_id = models.IntegerField(null=True)
favourite_language_id = models.IntegerField(null=True)
@@ -21,6 +20,7 @@ class UserInfo(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE, null=True)
telegram_chat_id = models.TextField(default="")
notification_solution_result = models.BooleanField(default=False)
code = models.IntegerField(null=True)
@property
def has_favourite_language(self):
@@ -80,6 +80,3 @@ class UserInfo(models.Model):
if self.has_profile_pic:
return "/image?id=" + str(self.profile_picture_fs_id)
return "https://i2.wp.com/electrolabservice.com/wp-content/uploads/2021/01/blank-profile-picture-mystery-man-avatar-973460.jpg"
def __str__(self):
return "{} {} {}".format(self.surname, self.name, self.middle_name)

View File

@@ -1,29 +1,6 @@
from django.contrib.auth import authenticate, login
from django.contrib.auth.models import User
from django.core.exceptions import ObjectDoesNotExist
from SprintLib.BaseView import BaseView
class EnterView(BaseView):
view_file = "enter.html"
required_login = False
def get(self):
self.context["error_message"] = self.request.GET.get("error_message", "")
def post(self):
try:
user = User.objects.get(username=self.request.POST["email"])
except ObjectDoesNotExist:
try:
user = User.objects.get(email=self.request.POST["email"])
except ObjectDoesNotExist:
return "/enter?error_message=Данного пользователя не существует"
user = authenticate(
username=user.username, password=self.request.POST["password"].strip()
)
if user is not None:
login(self.request, user)
return "/"
return "/enter?error_message=Неверный пароль"

View File

@@ -1,39 +0,0 @@
from django.contrib.auth.models import User
from Main.models import UserInfo
from SprintLib.BaseView import BaseView
class RegisterView(BaseView):
view_file = "register.html"
required_login = False
def get(self):
self.context["error_message"] = self.request.GET.get("error_message", "")
def post(self):
data = self.request.POST
if len(data["password"]) < 8:
return "/register?error_message=Пароль слишком слабый"
if data["password"] != data["repeat_password"]:
return "/register?error_message=Пароли не совпадают"
if len(User.objects.filter(username=data["username"])):
return "/register?error_message=Данное имя пользователя уже занято"
if len(User.objects.filter(email=data["email"])):
return "/register?error_message=Пользователь под таким email уже зарегистрирован"
user = User.objects.create_user(
data["username"],
data["email"],
password=data["password"],
)
userinfo = UserInfo.objects.create(
surname=data["surname"],
name=data["name"],
middle_name=data["middle_name"],
user=user,
)
user.userinfo = userinfo
user.save()
# todo: реализовать подтверждение по почте
return "/enter"

View File

@@ -0,0 +1,31 @@
from django.contrib.auth import login
from Main.management.commands.bot import bot
from SprintLib.BaseView import BaseView
from django.contrib.auth.models import User
from random import randrange
class SendCodeView(BaseView):
def post_create(self):
username = self.request.POST["username"]
user = User.objects.filter(username=username).first()
if not user:
return {"success": False, "message": "Пользователя с таким именем не существует"}
code = randrange(10000, 100000)
user.userinfo.code = code
user.userinfo.save()
bot.send_message(user.userinfo.telegram_chat_id, "Код для входа в сервис: " + str(code))
return {"success": True, "message": "Код отправлен"}
def post_check(self):
username = self.request.POST["username"]
user = User.objects.filter(username=username).first()
if not user:
return {"success": False, "message": "Пользователя с таким именем не существует"}
code = int(self.request.POST["code"])
if code == user.userinfo.code:
login(self.request, user)
return {"success": True, "message": "Успешно"}
else:
return {"success": False, "message": "Код неверен"}

View File

@@ -12,3 +12,4 @@ from Main.views.SolutionsTableView import SolutionsTableView
from Main.views.TaskRuntimeView import TaskRuntimeView
from Main.views.SolutionView import SolutionView
from Main.views.ImageView import ImageView
from Main.views.SendCodeView import SendCodeView