bot
This commit is contained in:
parent
9a20711820
commit
68245ffa43
@ -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):
|
||||
|
@ -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"
|
||||
),
|
||||
),
|
||||
]
|
@ -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",
|
||||
),
|
||||
]
|
@ -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),
|
||||
),
|
||||
]
|
@ -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),
|
||||
),
|
||||
]
|
@ -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),
|
||||
),
|
||||
]
|
@ -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"
|
||||
),
|
||||
),
|
||||
]
|
@ -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
|
||||
),
|
||||
),
|
||||
]
|
@ -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),
|
||||
),
|
||||
]
|
@ -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),
|
||||
),
|
||||
]
|
@ -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()),
|
||||
],
|
||||
),
|
||||
]
|
@ -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",
|
||||
),
|
||||
]
|
@ -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"
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
]
|
@ -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",
|
||||
),
|
||||
]
|
@ -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"
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
]
|
@ -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"),
|
||||
),
|
||||
]
|
@ -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),
|
||||
),
|
||||
]
|
@ -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=""),
|
||||
),
|
||||
]
|
@ -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",
|
||||
),
|
||||
]
|
@ -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),
|
||||
),
|
||||
]
|
@ -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"),
|
||||
),
|
||||
]
|
@ -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",
|
||||
),
|
||||
]
|
@ -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),
|
||||
),
|
||||
]
|
@ -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),
|
||||
),
|
||||
]
|
@ -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),
|
||||
),
|
||||
]
|
@ -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),
|
||||
),
|
||||
]
|
@ -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),
|
||||
),
|
||||
]
|
@ -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"),
|
||||
),
|
||||
]
|
@ -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),
|
||||
),
|
||||
]
|
@ -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),
|
||||
),
|
||||
]
|
@ -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"
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
]
|
@ -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),
|
||||
),
|
||||
]
|
@ -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="[]"),
|
||||
),
|
||||
]
|
@ -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",
|
||||
),
|
||||
]
|
@ -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",
|
||||
),
|
||||
]
|
@ -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),
|
||||
),
|
||||
]
|
@ -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=""),
|
||||
),
|
||||
]
|
@ -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",
|
||||
),
|
||||
]
|
@ -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,
|
||||
),
|
||||
),
|
||||
]
|
@ -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"
|
||||
),
|
||||
),
|
||||
]
|
@ -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"
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
]
|
@ -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"),
|
||||
),
|
||||
]
|
@ -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),
|
||||
),
|
||||
]
|
@ -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,
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
]
|
@ -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"
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
]
|
@ -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",
|
||||
),
|
||||
),
|
||||
]
|
@ -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",
|
||||
),
|
||||
),
|
||||
]
|
@ -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,
|
||||
),
|
||||
),
|
||||
]
|
@ -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)),
|
||||
],
|
||||
),
|
||||
]
|
@ -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()),
|
||||
],
|
||||
),
|
||||
]
|
@ -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'),
|
||||
),
|
||||
]
|
@ -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),
|
||||
),
|
||||
]
|
@ -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=''),
|
||||
),
|
||||
]
|
@ -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'),
|
||||
),
|
||||
]
|
@ -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')),
|
||||
],
|
||||
),
|
||||
]
|
@ -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),
|
||||
),
|
||||
]
|
@ -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',
|
||||
),
|
||||
]
|
@ -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),
|
||||
),
|
||||
]
|
@ -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),
|
||||
),
|
||||
]
|
@ -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'),
|
||||
),
|
||||
]
|
@ -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=''),
|
||||
),
|
||||
]
|
@ -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),
|
||||
),
|
||||
]
|
@ -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)),
|
||||
],
|
||||
),
|
||||
]
|
@ -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),
|
||||
),
|
||||
]
|
@ -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),
|
||||
),
|
||||
]
|
@ -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),
|
||||
),
|
||||
]
|
@ -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),
|
||||
),
|
||||
]
|
@ -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),
|
||||
),
|
||||
]
|
@ -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),
|
||||
),
|
||||
]
|
@ -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',
|
||||
),
|
||||
]
|
@ -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=''),
|
||||
),
|
||||
]
|
@ -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'),
|
||||
),
|
||||
]
|
@ -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'),
|
||||
),
|
||||
]
|
@ -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),
|
||||
),
|
||||
]
|
@ -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),
|
||||
),
|
||||
]
|
@ -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),
|
||||
),
|
||||
]
|
@ -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
17
Main/models/token.py
Normal 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()
|
@ -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)
|
||||
|
@ -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=Неверный пароль"
|
||||
|
@ -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"
|
31
Main/views/SendCodeView.py
Normal file
31
Main/views/SendCodeView.py
Normal 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": "Код неверен"}
|
@ -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
|
||||
|
@ -133,11 +133,10 @@ STATIC_URL = "/static/"
|
||||
MEDIA_URL = "/media/"
|
||||
|
||||
STATIC_ROOT = os.path.join(BASE_DIR, "static")
|
||||
MEDIA_ROOT = os.path.join(BASE_DIR, "media")
|
||||
DATA_ROOT = os.path.join(BASE_DIR, "data")
|
||||
EXTRA_FILES_ROOT = os.path.join(BASE_DIR, "extra_files")
|
||||
SOLUTIONS_ROOT_EXTERNAL = os.getenv("SOLUTIONS_ROOT_EXTERNAL", os.path.join(DATA_ROOT, "solutions"))
|
||||
for root in DATA_ROOT, EXTRA_FILES_ROOT, MEDIA_ROOT:
|
||||
for root in DATA_ROOT, EXTRA_FILES_ROOT:
|
||||
if not os.path.exists(root):
|
||||
os.mkdir(root)
|
||||
|
||||
|
@ -18,6 +18,7 @@ urlpatterns = [
|
||||
path("solutions_table", SolutionsTableView.as_view()),
|
||||
path("task_runtime", TaskRuntimeView.as_view()),
|
||||
path("image", ImageView.as_view()),
|
||||
path("send_code", SendCodeView.as_view()),
|
||||
path("", MainView.as_view()),
|
||||
path("admin/", admin.site.urls),
|
||||
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
|
||||
]
|
||||
|
@ -2,7 +2,7 @@ from typing import Optional
|
||||
|
||||
from django.db import transaction
|
||||
from django.core.handlers.wsgi import WSGIRequest
|
||||
from django.http import HttpResponseRedirect
|
||||
from django.http import HttpResponseRedirect, JsonResponse
|
||||
from django.shortcuts import render
|
||||
from django.utils import timezone
|
||||
|
||||
@ -57,6 +57,8 @@ class BaseView:
|
||||
data = method()
|
||||
if type(data) == str:
|
||||
return HttpResponseRedirect(data)
|
||||
if type(data) == dict:
|
||||
return JsonResponse(data)
|
||||
if data is not None:
|
||||
return data
|
||||
context = {**context, **c.context}
|
||||
|
@ -22,7 +22,7 @@
|
||||
</div>
|
||||
<div class="col-9">
|
||||
<h3>
|
||||
{{ account.userinfo.surname }} {{ account.userinfo.name }} {{ account.userinfo.middle_name }}
|
||||
{{ 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>
|
||||
@ -38,15 +38,6 @@
|
||||
<p style="padding-top: 8px; font-size: 24px;">{{ account.username }}</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<h2><i class="fa fa-at"></i></h2>
|
||||
</td>
|
||||
<td><div style="width: 20px;"></div></td>
|
||||
<td>
|
||||
<p style="padding-top: 8px; font-size: 24px;">{{ account.email }}</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<h2><i class="fa fa-star"></i></h2>
|
||||
|
@ -2,6 +2,41 @@
|
||||
|
||||
{% block title %}Вход{% endblock %}
|
||||
|
||||
{% block scripts %}
|
||||
function send_code() {
|
||||
const p = document.getElementById('message');
|
||||
if (document.getElementById('state').value == 'code') {
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: '/send_code',
|
||||
data: {"username": document.getElementById('username').value, "csrfmiddlewaretoken": document.getElementsByName('csrfmiddlewaretoken')[0].value, "action": "create"},
|
||||
success: function(data) {
|
||||
if (data['success']) {
|
||||
document.getElementById('code').hidden = false;
|
||||
document.getElementById('enter').firstChild.data = "Вход";
|
||||
document.getElementById('state').value = "verify";
|
||||
p.innerHTML = '';
|
||||
} else {
|
||||
p.innerHTML = data['message'];
|
||||
}
|
||||
}});
|
||||
} else {
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: '/send_code',
|
||||
data: {"username": document.getElementById('username').value, "code": document.getElementById('code').value, "csrfmiddlewaretoken": document.getElementsByName('csrfmiddlewaretoken')[0].value, "action": "check"},
|
||||
success: function(data) {
|
||||
if (data['success']) {
|
||||
window.location.href = '/';
|
||||
} else {
|
||||
p.innerHTML = data['message'];
|
||||
}
|
||||
},
|
||||
});
|
||||
}
|
||||
}
|
||||
{% endblock %}
|
||||
|
||||
{% block body %}
|
||||
<div class="center">
|
||||
<center>
|
||||
@ -11,19 +46,15 @@
|
||||
</h1>
|
||||
</div>
|
||||
<div>
|
||||
<p style="color: red;">{{ error_message }}</p>
|
||||
<form method="POST">
|
||||
{% csrf_token %}
|
||||
<input type="text" class="form" name="email" placeholder="email or username"><br>
|
||||
<input type="password" class="form" name="password" placeholder="password"><br>
|
||||
<input type="submit" value="Вход" class="sub btn btn-dark form">
|
||||
</form>
|
||||
<p id="message" style="color: red;"></p>
|
||||
{% csrf_token %}
|
||||
<input type="text" class="form" name="username" id="username" placeholder="username"><br>
|
||||
<input type="password" class="form" name="code" id="code" placeholder="code" hidden><br>
|
||||
<input type="hidden" id="state" value="code">
|
||||
<button type="button" onclick="send_code()" id="enter" class="sub btn btn-dark form">Отправить код</button>
|
||||
</div>
|
||||
<div>
|
||||
<button onclick="window.location.href='/restore'" class="sub btn btn-dark form">Восстановить пароль</button>
|
||||
</div>
|
||||
<div>
|
||||
<button onclick="window.location.href='/register'" class="sub btn btn-dark form">Регистрация</button>
|
||||
<a href="https://t.me/sprint_notifications_bot" target="_blank" class="sub btn btn-dark form">Регистрация</a>
|
||||
</div>
|
||||
</center>
|
||||
</div>
|
||||
|
@ -1,73 +0,0 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
|
||||
"http://www.w3.org/TR/html4/strict.dtd">
|
||||
{% load static %}
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<title>
|
||||
Регистрация
|
||||
</title>
|
||||
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css" integrity="sha384-9aIt2nRpC12Uk9gS9baDl411NQApFmC26EwAOH8WgZl5MYYxFfc+NcPb1dKGj7Sk" crossorigin="anonymous">
|
||||
<link rel="stylesheet" type="text/css" href={% static "css/styles.css" %}>
|
||||
<script src="https://use.fontawesome.com/49b98aaeb5.js"></script>
|
||||
<script type="text/javascript" src={% static "js/scripts.js" %}></script>
|
||||
<style type="text/css">
|
||||
.center {
|
||||
height: 400px;
|
||||
width: 400px;
|
||||
|
||||
position: fixed;
|
||||
top: 40%;
|
||||
left: 50%;
|
||||
margin-top: -200px;
|
||||
margin-left: -200px;
|
||||
}
|
||||
h1 {
|
||||
font-size: 500%;
|
||||
}
|
||||
.form {
|
||||
border: none;
|
||||
border-bottom: 2px solid;
|
||||
outline: none;
|
||||
text-align: center;
|
||||
width: 300px;
|
||||
margin-top: 20px;
|
||||
}
|
||||
.sub {
|
||||
margin-top: 20px;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="center">
|
||||
<center>
|
||||
<div>
|
||||
<h1>
|
||||
<i class="fa fa-random"></i> <a style="color: black;" href="/enter">Sprint</a>
|
||||
</h1>
|
||||
</div>
|
||||
<div>
|
||||
<p style="color: red;">{{ error_message }}</p>
|
||||
<form method="POST">
|
||||
{% csrf_token %}
|
||||
<input type="text" class="form" name="surname"><br>
|
||||
Фамилия<br>
|
||||
<input type="text" class="form" name="name"><br>
|
||||
Имя<br>
|
||||
<input type="text" class="form" name="middle_name"><br>
|
||||
Отчество<br>
|
||||
<input type="text" class="form" name="username"><br>
|
||||
Имя пользователя<br>
|
||||
<input type="text" class="form" name="email"><br>
|
||||
email<br>
|
||||
<input type="password" class="form" name="password"><br>
|
||||
Пароль<br>
|
||||
<input type="password" class="form" name="repeat_password"><br>
|
||||
Повторить пароль<br>
|
||||
<input type="submit" value="Регистрация" class="sub btn btn-dark form">
|
||||
</form>
|
||||
</div>
|
||||
</center>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
Loading…
Reference in New Issue
Block a user