diff --git a/account/migrations/0003_alter_siteuser_email_alter_siteuser_is_staff_and_more.py b/account/migrations/0003_alter_siteuser_email_alter_siteuser_is_staff_and_more.py new file mode 100644 index 0000000..1338ff7 --- /dev/null +++ b/account/migrations/0003_alter_siteuser_email_alter_siteuser_is_staff_and_more.py @@ -0,0 +1,38 @@ +# Generated by Django 4.1.1 on 2022-09-16 23:12 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('account', '0002_siteuser_is_staff'), + ] + + operations = [ + migrations.AlterField( + model_name='siteuser', + name='email', + field=models.EmailField(max_length=254, unique=True, verbose_name='Email'), + ), + migrations.AlterField( + model_name='siteuser', + name='is_staff', + field=models.BooleanField(default=False, verbose_name='Разрешение на вход в админку'), + ), + migrations.AlterField( + model_name='siteuser', + name='name', + field=models.CharField(max_length=60, verbose_name='Имя'), + ), + migrations.AlterField( + model_name='siteuser', + name='phone', + field=models.CharField(max_length=16, unique=True, verbose_name='Телефон'), + ), + migrations.AlterField( + model_name='siteuser', + name='surname', + field=models.CharField(max_length=60, verbose_name='Фамилия'), + ), + ] diff --git a/account/migrations/0004_alter_siteuser_phone.py b/account/migrations/0004_alter_siteuser_phone.py new file mode 100644 index 0000000..0cc276f --- /dev/null +++ b/account/migrations/0004_alter_siteuser_phone.py @@ -0,0 +1,19 @@ +# Generated by Django 4.1.1 on 2022-09-18 19:41 + +import django.core.validators +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('account', '0003_alter_siteuser_email_alter_siteuser_is_staff_and_more'), + ] + + operations = [ + migrations.AlterField( + model_name='siteuser', + name='phone', + field=models.CharField(max_length=16, unique=True, validators=[django.core.validators.RegexValidator(regex='?[+][0-9]*'), django.core.validators.MaxLengthValidator(limit_value=16), django.core.validators.MinLengthValidator(limit_value=6)], verbose_name='Телефон'), + ), + ] diff --git a/account/migrations/0005_alter_siteuser_phone.py b/account/migrations/0005_alter_siteuser_phone.py new file mode 100644 index 0000000..bda4a77 --- /dev/null +++ b/account/migrations/0005_alter_siteuser_phone.py @@ -0,0 +1,19 @@ +# Generated by Django 4.1.1 on 2022-09-18 19:44 + +import django.core.validators +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('account', '0004_alter_siteuser_phone'), + ] + + operations = [ + migrations.AlterField( + model_name='siteuser', + name='phone', + field=models.CharField(max_length=16, unique=True, validators=[django.core.validators.RegexValidator(regex='^\\+?[0-9]*$'), django.core.validators.MaxLengthValidator(limit_value=16), django.core.validators.MinLengthValidator(limit_value=6)], verbose_name='Телефон'), + ), + ] diff --git a/account/migrations/0006_siteuser_is_phone_verified_alter_siteuser_phone.py b/account/migrations/0006_siteuser_is_phone_verified_alter_siteuser_phone.py new file mode 100644 index 0000000..9d0d929 --- /dev/null +++ b/account/migrations/0006_siteuser_is_phone_verified_alter_siteuser_phone.py @@ -0,0 +1,24 @@ +# Generated by Django 4.1.1 on 2022-09-24 12:03 + +import django.core.validators +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('account', '0005_alter_siteuser_phone'), + ] + + operations = [ + migrations.AddField( + model_name='siteuser', + name='is_phone_verified', + field=models.BooleanField(default=False, verbose_name='Телефон верифицирован'), + ), + migrations.AlterField( + model_name='siteuser', + name='phone', + field=models.CharField(max_length=16, unique=True, validators=[django.core.validators.RegexValidator(regex='^\\+7[0-9]*$'), django.core.validators.MaxLengthValidator(limit_value=12), django.core.validators.MinLengthValidator(limit_value=12)], verbose_name='Телефон'), + ), + ] diff --git a/account/migrations/0007_alter_siteuser_phone.py b/account/migrations/0007_alter_siteuser_phone.py new file mode 100644 index 0000000..d6a11e3 --- /dev/null +++ b/account/migrations/0007_alter_siteuser_phone.py @@ -0,0 +1,19 @@ +# Generated by Django 4.1.1 on 2022-09-25 08:10 + +import django.core.validators +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('account', '0006_siteuser_is_phone_verified_alter_siteuser_phone'), + ] + + operations = [ + migrations.AlterField( + model_name='siteuser', + name='phone', + field=models.CharField(max_length=16, unique=True, validators=[django.core.validators.RegexValidator(regex='^\\+7[0-9]{10}$')], verbose_name='Телефон'), + ), + ] diff --git a/account/migrations/0008_siteuser_register_datetime.py b/account/migrations/0008_siteuser_register_datetime.py new file mode 100644 index 0000000..d0dfb1b --- /dev/null +++ b/account/migrations/0008_siteuser_register_datetime.py @@ -0,0 +1,19 @@ +# Generated by Django 4.1.1 on 2022-09-26 18:59 + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('account', '0007_alter_siteuser_phone'), + ] + + operations = [ + migrations.AddField( + model_name='siteuser', + name='register_datetime', + field=models.DateTimeField(default=datetime.datetime.now, editable=False), + ), + ] diff --git a/api/migrations/0001_initial.py b/api/migrations/0001_initial.py new file mode 100644 index 0000000..7cec1b2 --- /dev/null +++ b/api/migrations/0001_initial.py @@ -0,0 +1,27 @@ +# Generated by Django 4.1.1 on 2022-09-16 23:12 + +import datetime +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='UserToken', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('access_token', models.CharField(editable=False, max_length=128, unique=True)), + ('creation_time', models.DateTimeField(default=datetime.datetime.now)), + ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), + ], + ), + ] diff --git a/api/migrations/__init__.py b/api/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/order/migrations/0001_initial.py b/order/migrations/0001_initial.py new file mode 100644 index 0000000..1ee0c3d --- /dev/null +++ b/order/migrations/0001_initial.py @@ -0,0 +1,35 @@ +# Generated by Django 4.1.1 on 2022-09-26 18:12 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ] + + operations = [ + migrations.CreateModel( + name='Order', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=200)), + ('description', models.TextField(blank=True)), + ('square', models.DecimalField(decimal_places=2, max_digits=5)), + ('type_of_renovation', models.CharField(blank=True, choices=[('', 'Не указан'), ('overhaul', 'Капитальный'), ('partial', 'Частичный'), ('redecor', 'Косметический'), ('premium', 'Премиальный'), ('design', 'Дизайнерский')], default='', max_length=10)), + ('type_of_house', models.CharField(blank=True, choices=[('block', 'Блочный'), ('brick', 'Кирпичный'), ('monolith', 'Монолит'), ('panel', 'Панельный')], max_length=10)), + ('type_of_room', models.CharField(blank=True, choices=[('primary', 'Первичка'), ('secondary', 'Вторичка')], max_length=10)), + ('is_require_design', models.BooleanField(blank=True, choices=[(None, ''), (True, 'Да'), (False, 'Нет')], default=None, null=True)), + ('purchase_of_material', models.CharField(blank=True, choices=[('executor', 'Исполнитель'), ('customer', 'Заказчик')], max_length=10)), + ('type_of_executor', models.CharField(blank=True, choices=[('primary', 'Первичка'), ('secondary', 'Вторичка')], max_length=10)), + ('is_with_warranty', models.BooleanField(default=True, verbose_name='С гарантией')), + ('is_with_contract', models.BooleanField(default=False, verbose_name='Работа по договору')), + ('is_with_trade', models.BooleanField(default=False, verbose_name='Возможен торг')), + ('is_with_cleaning', models.BooleanField(default=False, verbose_name='С уборкой')), + ('is_with_garbage_removal', models.BooleanField(default=False, verbose_name='С вывозом мусора')), + ('approximate_price', models.DecimalField(decimal_places=2, max_digits=9)), + ], + ), + ] diff --git a/order/migrations/0002_order_work_time.py b/order/migrations/0002_order_work_time.py new file mode 100644 index 0000000..c723e65 --- /dev/null +++ b/order/migrations/0002_order_work_time.py @@ -0,0 +1,18 @@ +# Generated by Django 4.1.1 on 2022-09-26 18:59 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('order', '0001_initial'), + ] + + operations = [ + migrations.AddField( + model_name='order', + name='work_time', + field=models.CharField(blank=True, max_length=100), + ), + ] diff --git a/order/migrations/0003_city_order_address_text_order_owner_and_more.py b/order/migrations/0003_city_order_address_text_order_owner_and_more.py new file mode 100644 index 0000000..5be116b --- /dev/null +++ b/order/migrations/0003_city_order_address_text_order_owner_and_more.py @@ -0,0 +1,38 @@ +# Generated by Django 4.1.1 on 2022-09-27 11:54 + +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), + ('order', '0002_order_work_time'), + ] + + operations = [ + migrations.CreateModel( + name='City', + fields=[ + ('code', models.CharField(max_length=20, primary_key=True, serialize=False, verbose_name='Код города')), + ('name', models.CharField(max_length=50, unique=True, verbose_name='Название города')), + ], + ), + migrations.AddField( + model_name='order', + name='address_text', + field=models.CharField(blank=True, max_length=70), + ), + migrations.AddField( + model_name='order', + name='owner', + field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='owner', to=settings.AUTH_USER_MODEL), + ), + migrations.AlterField( + model_name='order', + name='type_of_executor', + field=models.CharField(blank=True, choices=[('individual', 'Самозанятый/бригада'), ('company', 'Компания')], max_length=10), + ), + ] diff --git a/order/migrations/0004_alter_order_purchase_of_material_and_more.py b/order/migrations/0004_alter_order_purchase_of_material_and_more.py new file mode 100644 index 0000000..29121ec --- /dev/null +++ b/order/migrations/0004_alter_order_purchase_of_material_and_more.py @@ -0,0 +1,38 @@ +# Generated by Django 4.1.1 on 2022-09-27 12:19 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('order', '0003_city_order_address_text_order_owner_and_more'), + ] + + operations = [ + migrations.AlterField( + model_name='order', + name='purchase_of_material', + field=models.CharField(choices=[('', 'Не указано'), ('executor', 'Исполнитель'), ('customer', 'Заказчик')], max_length=10), + ), + migrations.AlterField( + model_name='order', + name='type_of_executor', + field=models.CharField(choices=[('', 'Не указан'), ('individual', 'Самозанятый/бригада'), ('company', 'Компания')], max_length=10), + ), + migrations.AlterField( + model_name='order', + name='type_of_house', + field=models.CharField(choices=[('', 'Не указан'), ('block', 'Блочный'), ('brick', 'Кирпичный'), ('monolith', 'Монолит'), ('panel', 'Панельный')], max_length=10), + ), + migrations.AlterField( + model_name='order', + name='type_of_renovation', + field=models.CharField(choices=[('', 'Не указан'), ('overhaul', 'Капитальный'), ('partial', 'Частичный'), ('redecor', 'Косметический'), ('premium', 'Премиальный'), ('design', 'Дизайнерский')], default='', max_length=10), + ), + migrations.AlterField( + model_name='order', + name='type_of_room', + field=models.CharField(choices=[('', 'Не указан'), ('primary', 'Первичка'), ('secondary', 'Вторичка')], max_length=10), + ), + ] diff --git a/order/migrations/0005_order_address_city_alter_order_address_text_and_more.py b/order/migrations/0005_order_address_city_alter_order_address_text_and_more.py new file mode 100644 index 0000000..6774451 --- /dev/null +++ b/order/migrations/0005_order_address_city_alter_order_address_text_and_more.py @@ -0,0 +1,67 @@ +# Generated by Django 4.1.1 on 2022-09-27 14:14 + +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), + ('order', '0004_alter_order_purchase_of_material_and_more'), + ] + + operations = [ + migrations.AddField( + model_name='order', + name='address_city', + field=models.ForeignKey(default='Moscow', on_delete=django.db.models.deletion.CASCADE, related_name='address_city', to='order.city'), + preserve_default=False, + ), + migrations.AlterField( + model_name='order', + name='address_text', + field=models.CharField(blank=True, max_length=70, verbose_name='Улица, дом'), + ), + migrations.AlterField( + model_name='order', + name='approximate_price', + field=models.DecimalField(decimal_places=2, max_digits=9, verbose_name='Цена'), + ), + migrations.AlterField( + model_name='order', + name='is_require_design', + field=models.BooleanField(blank=True, choices=[(True, 'Да'), (False, 'Нет')], default=None, null=True), + ), + migrations.AlterField( + model_name='order', + name='owner', + field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='owner', to=settings.AUTH_USER_MODEL, verbose_name='Владелец'), + ), + migrations.AlterField( + model_name='order', + name='purchase_of_material', + field=models.CharField(blank=True, choices=[('executor', 'Исполнитель'), ('customer', 'Заказчик')], default='', max_length=10), + ), + migrations.AlterField( + model_name='order', + name='type_of_executor', + field=models.CharField(blank=True, choices=[('individual', 'Самозанятый/бригада'), ('company', 'Компания')], default='', max_length=10), + ), + migrations.AlterField( + model_name='order', + name='type_of_house', + field=models.CharField(blank=True, choices=[('block', 'Блочный'), ('brick', 'Кирпичный'), ('monolith', 'Монолит'), ('panel', 'Панельный')], default='', max_length=10), + ), + migrations.AlterField( + model_name='order', + name='type_of_renovation', + field=models.CharField(choices=[('overhaul', 'Капитальный'), ('partial', 'Частичный'), ('redecor', 'Косметический'), ('premium', 'Премиальный'), ('design', 'Дизайнерский')], default='', max_length=10), + ), + migrations.AlterField( + model_name='order', + name='type_of_room', + field=models.CharField(blank=True, choices=[('primary', 'Первичка'), ('secondary', 'Вторичка')], default='', max_length=10), + ), + ] diff --git a/order/migrations/0006_alter_city_code_alter_order_description_and_more.py b/order/migrations/0006_alter_city_code_alter_order_description_and_more.py new file mode 100644 index 0000000..459ee77 --- /dev/null +++ b/order/migrations/0006_alter_city_code_alter_order_description_and_more.py @@ -0,0 +1,39 @@ +# Generated by Django 4.1.1 on 2022-09-27 14:31 + +import django.core.validators +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('order', '0005_order_address_city_alter_order_address_text_and_more'), + ] + + operations = [ + migrations.AlterField( + model_name='city', + name='code', + field=models.CharField(max_length=20, primary_key=True, serialize=False, validators=[django.core.validators.RegexValidator(regex='^[0-9a-zA-Z_]*$')], verbose_name='Код города'), + ), + migrations.AlterField( + model_name='order', + name='description', + field=models.TextField(blank=True, verbose_name=''), + ), + migrations.AlterField( + model_name='order', + name='name', + field=models.CharField(max_length=200, verbose_name=''), + ), + migrations.AlterField( + model_name='order', + name='square', + field=models.DecimalField(decimal_places=2, max_digits=5, verbose_name=''), + ), + migrations.AlterField( + model_name='order', + name='work_time', + field=models.CharField(blank=True, max_length=100, verbose_name=''), + ), + ] diff --git a/order/migrations/0007_alter_order_address_city_alter_order_description_and_more.py b/order/migrations/0007_alter_order_address_city_alter_order_description_and_more.py new file mode 100644 index 0000000..940787f --- /dev/null +++ b/order/migrations/0007_alter_order_address_city_alter_order_description_and_more.py @@ -0,0 +1,69 @@ +# Generated by Django 4.1.1 on 2022-09-27 14:34 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('order', '0006_alter_city_code_alter_order_description_and_more'), + ] + + operations = [ + migrations.AlterField( + model_name='order', + name='address_city', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='address_city', to='order.city', verbose_name='Город'), + ), + migrations.AlterField( + model_name='order', + name='description', + field=models.TextField(blank=True, verbose_name='Описание'), + ), + migrations.AlterField( + model_name='order', + name='is_require_design', + field=models.BooleanField(blank=True, choices=[(True, 'Да'), (False, 'Нет')], default=None, null=True, verbose_name='Требуется дизайн проект'), + ), + migrations.AlterField( + model_name='order', + name='name', + field=models.CharField(max_length=200, verbose_name='Название заказа'), + ), + migrations.AlterField( + model_name='order', + name='purchase_of_material', + field=models.CharField(blank=True, choices=[('executor', 'Исполнитель'), ('customer', 'Заказчик')], default='', max_length=10, verbose_name='Закуп материала'), + ), + migrations.AlterField( + model_name='order', + name='square', + field=models.DecimalField(decimal_places=2, max_digits=5, verbose_name='Площадь в м²'), + ), + migrations.AlterField( + model_name='order', + name='type_of_executor', + field=models.CharField(blank=True, choices=[('individual', 'Самозанятый/бригада'), ('company', 'Компания')], default='', max_length=10, verbose_name='Тип исполнителя'), + ), + migrations.AlterField( + model_name='order', + name='type_of_house', + field=models.CharField(blank=True, choices=[('block', 'Блочный'), ('brick', 'Кирпичный'), ('monolith', 'Монолит'), ('panel', 'Панельный')], default='', max_length=10, verbose_name='Тип дома'), + ), + migrations.AlterField( + model_name='order', + name='type_of_renovation', + field=models.CharField(choices=[('overhaul', 'Капитальный'), ('partial', 'Частичный'), ('redecor', 'Косметический'), ('premium', 'Премиальный'), ('design', 'Дизайнерский')], default='', max_length=10, verbose_name='Тип ремонта'), + ), + migrations.AlterField( + model_name='order', + name='type_of_room', + field=models.CharField(blank=True, choices=[('primary', 'Первичка'), ('secondary', 'Вторичка')], default='', max_length=10, verbose_name='Тип квартиры'), + ), + migrations.AlterField( + model_name='order', + name='work_time', + field=models.CharField(blank=True, max_length=100, verbose_name='Рабочее время'), + ), + ] diff --git a/order/migrations/0008_alter_order_approximate_price_alter_order_square_and_more.py b/order/migrations/0008_alter_order_approximate_price_alter_order_square_and_more.py new file mode 100644 index 0000000..7846161 --- /dev/null +++ b/order/migrations/0008_alter_order_approximate_price_alter_order_square_and_more.py @@ -0,0 +1,28 @@ +# Generated by Django 4.1.1 on 2022-09-27 15:18 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('order', '0007_alter_order_address_city_alter_order_description_and_more'), + ] + + operations = [ + migrations.AlterField( + model_name='order', + name='approximate_price', + field=models.DecimalField(decimal_places=2, max_digits=12, verbose_name='Цена'), + ), + migrations.AlterField( + model_name='order', + name='square', + field=models.DecimalField(decimal_places=2, max_digits=7, verbose_name='Площадь в м²'), + ), + migrations.AlterField( + model_name='order', + name='type_of_renovation', + field=models.CharField(blank=True, choices=[('overhaul', 'Капитальный'), ('partial', 'Частичный'), ('redecor', 'Косметический'), ('premium', 'Премиальный'), ('design', 'Дизайнерский')], default='', max_length=10, verbose_name='Тип ремонта'), + ), + ] diff --git a/static/images/arc.png b/static/images/arc.png new file mode 100644 index 0000000..2623b59 Binary files /dev/null and b/static/images/arc.png differ diff --git a/static/images/cube.png b/static/images/cube.png new file mode 100644 index 0000000..bd17dd2 Binary files /dev/null and b/static/images/cube.png differ diff --git a/static/images/test1.jpg b/static/images/test1.jpg new file mode 100644 index 0000000..91f04f9 Binary files /dev/null and b/static/images/test1.jpg differ diff --git a/static/images/test2.jpg b/static/images/test2.jpg new file mode 100644 index 0000000..f6c177e Binary files /dev/null and b/static/images/test2.jpg differ diff --git a/static/images/test3.jpg b/static/images/test3.jpg new file mode 100644 index 0000000..fcdc6cc Binary files /dev/null and b/static/images/test3.jpg differ diff --git a/templates/orders/order-create.html b/templates/orders/order-create.html index a2d0c35..5c6c145 100644 --- a/templates/orders/order-create.html +++ b/templates/orders/order-create.html @@ -1,6 +1,14 @@ {% extends 'base.html' %} {% block title %} Аккаунт | вход {% endblock %} +{% block styles %} + +{% endblock %} + {% block content %}