# Generated by Django 4.1.3 on 2022-11-05 23:11

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='Apartment_Type',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('sNameApartment', models.CharField(help_text='Название, наименование (отображается на кнопке в интерфейсе)', max_length=128, verbose_name='Обозначение')),
                ('sURL2IMG_Apartment', models.ImageField(default='null.gif', help_text='URL на картинку с планировкой ', max_length=128, upload_to='img_apart/', verbose_name='Изображение')),
                ('iSort', models.IntegerField(db_index=True, default=0, help_text='Число для сортировки и порядка вывода в списке', null=True, verbose_name='Сортировка')),
                ('sAreaXY', models.CharField(blank=True, default='', help_text='строка AREA для описания MAP (для будущего использования)', max_length=256, null=True, verbose_name='MAP AREA')),
                ('bApartmentCheck', models.BooleanField(default=False, help_text='Данные добавлены админом, или проверены и подтверждены из нескольких источников', verbose_name='Проверено')),
                ('dApartmentCreate', models.DateTimeField(auto_now_add=True, verbose_name='Создано')),
                ('dApartmentModify', models.DateTimeField(auto_now=True, verbose_name='Отредактировано')),
            ],
            options={
                'verbose_name': 'Здание: тип квартиры',
                'verbose_name_plural': 'Здания: типы квартир',
                'ordering': ['-iSort', '-kSeria_id', 'id', 'sNameApartment'],
            },
        ),
        migrations.CreateModel(
            name='BlogPosts',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('sPostHeader', models.CharField(help_text='Заголовок поста или карточки каталога', max_length=256, verbose_name='Заголовок')),
                ('sPostContent', models.TextField(help_text='Содержание (допустим HTML)', verbose_name='Содержание')),
                ('sImgForBlogSocial', models.ImageField(blank=True, default='', help_text='Способ загрузить картинку через админку Картинка-тизер для публикаций в соц.сетях. URL к картинке будет «<b>/media/img_for_blog/…</b>» и этот URL можно использовать в HTML-тексте блога. Если нужно загрузить несколько картинок, то после сохранения промежуточной записи, откройте ее на редактирование еще раз и добавте новую картинку. Предыдущая картинка (и её URL) продолжат быть доступны.<br><b>ВАЖНО: ПРИ ПУБЛИКАЦИИ В СОЦ.СЕТЯХ БУДЕТ ОТОБРАЖАТЬЯ КАРТИНКА ЗАГРУЖЕННАЯ ПОСЛЕДНЕЙ.<br>ВАЖНО: ЕСЛИ ЗАГРУЖАЕМАЯ КАРТИНКА УЖЕ ИМЕЕТ ДУБЛИКАТ В СИСТЕМЕ, ЕЕ ИМЯ (И URL) БУДУТ ИЗМЕНЕНЫ. БУДЬТЕ ВНИМТЕЛЬНЫ!', max_length=128, upload_to='img_for_blog/', verbose_name='IMG')),
                ('bPublished', models.BooleanField(db_index=True, default=True, help_text='Если отмечено, то пост доступен на сайте. Иначе ведет себя как удаленный и не «отзывается».', verbose_name='Паблик')),
                ('bArchive', models.BooleanField(db_index=True, default=False, help_text='Если отмечено,  в архиве. Он не будет повляться в списке, но доступен через URL, поиск и пр.', verbose_name='Архив')),
                ('dPostDataBegin', models.DateTimeField(db_index=True, default=datetime.datetime(2022, 11, 6, 2, 11, 22, 171941), help_text='Если установить будущую дату, то в назначеное время пост появится автоматически.', verbose_name='Опубликован от')),
                ('bCatalog', models.BooleanField(db_index=True, default=False, help_text='Это публикация для каталога (в блогах все равно будет доступно через URL, поиск и пр.)', verbose_name='Каталог')),
                ('iCatalogSort', models.PositiveIntegerField(db_index=True, default=1, help_text='Число для сортировки и порядка вывода в каталогах (чем меьше, тем выше в списке)<br>Магические значения:<br /> ■&nbsp;5 — запись используется как рекламный тизер;<br /> ■&nbsp;1 — запись используется как обычный тизер.</ul>', null=True, verbose_name='Сортер')),
                ('dPostDataModify', models.DateTimeField(auto_now=True, verbose_name='Отредактированно')),
                ('dPostDataCreate', models.DateTimeField(auto_now_add=True, verbose_name='Создано')),
            ],
            options={
                'verbose_name': 'Запись в блоге каталоге',
                'verbose_name_plural': 'Записи в блогах или каталогах',
                'ordering': ['-dPostDataCreate', 'iCatalogSort'],
            },
        ),
        migrations.CreateModel(
            name='Building_Info',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('sAddress', models.CharField(db_index=True, help_text='Адрес дома', max_length=128, unique=True, verbose_name='Адрес')),
                ('fGeoCode_Latitude', models.DecimalField(decimal_places=8, default=0.0, help_text='Географическая щирота', max_digits=12, null=True, verbose_name='Широта')),
                ('fGeoCode_Longitude', models.DecimalField(decimal_places=8, default=0.0, help_text='Географическая долгота', max_digits=12, null=True, verbose_name='Долготоа')),
                ('sSerias_Project', models.CharField(default='N/A', help_text='Серия, типовой проект здания (то как это записано в базе reformagkh.ru).', max_length=128, null=True, verbose_name='Серия1')),
                ('sType', models.CharField(default='N/A', help_text='Тип жилого дома.', max_length=32, null=True, verbose_name='Тип дома')),
                ('iCommissioning_year', models.CharField(default='N/A', help_text='Год ввода в эксплуатацию.', max_length=10, null=True, verbose_name='Год')),
                ('sWall', models.CharField(default='N/A', help_text='Материал стен.', max_length=32, null=True, verbose_name='Стены')),
                ('sOverlap', models.CharField(default='N/A', help_text='Тип перекрытий.', max_length=32, null=True, verbose_name='Перекрытия')),
                ('iStoreys', models.SmallIntegerField(default=-1, help_text='Число этажей.', null=True, verbose_name='Этажей')),
                ('iEntrances_Porchs', models.SmallIntegerField(default=-1, help_text='Число подъездов.', null=True, verbose_name='Подъездов')),
                ('iElevators', models.SmallIntegerField(default=-1, help_text='Число лифтов.', null=True, verbose_name='Лифтов')),
                ('sEnergy_Efficiency', models.CharField(default='N/A', help_text='Класс энергоэффективности.', max_length=4, null=True, verbose_name='Энергоэффективность')),
                ('dEnergy_Audit', models.DateField(default=datetime.date(2038, 1, 19), help_text='Дата проведения энергелического аудита.', null=True, verbose_name='Дата аудита')),
                ('fTotal_Area', models.DecimalField(decimal_places=2, default=-1.0, help_text='Общаяя площадь помещений, м².', max_digits=8, null=True, verbose_name='Площадь м²')),
                ('fResidential_Area', models.DecimalField(decimal_places=2, default=-1.0, help_text='Площадь жилых помещений, м².', max_digits=8, null=True, verbose_name='Жилых м²')),
                ('fUninhabited_Area', models.DecimalField(decimal_places=2, default=-1.0, help_text='Площадь нежилых помещений, м².', max_digits=8, null=True, verbose_name='Нежилых м²')),
                ('fCommon_Area', models.DecimalField(decimal_places=2, default=-1.0, help_text='Площадь помещений общего пользования (лестничные пролеты, подсобки и пр.), м².', max_digits=8, null=True, verbose_name='Обществ. м²')),
                ('fPrivate_Area', models.DecimalField(decimal_places=2, default=-1.0, help_text='Площадь частных помещений (приватизированных), м².', max_digits=8, null=True, verbose_name='Частные м²')),
                ('fMunicipal_Area', models.DecimalField(decimal_places=2, default=-1.0, help_text='Площадь мунициальных помещений (магазины, офисы и пр.), м².', max_digits=8, null=True, verbose_name='Муницип. м²')),
                ('fGovernment_Area', models.DecimalField(decimal_places=2, default=-1.0, help_text='Площадь государственных помещений(не приватизированных), м².', max_digits=8, null=True, verbose_name='Гос., м²')),
                ('fLand_Area', models.DecimalField(decimal_places=2, default=-1.0, help_text='Площадь участка, м².', max_digits=8, null=True, verbose_name='Участок м²')),
                ('fLocal_Area', models.DecimalField(decimal_places=2, default=-1.0, help_text='Площадь придомовой территории, м².', max_digits=8, null=True, verbose_name='Придомовые м²')),
                ('iNum_Apartments', models.SmallIntegerField(default=-1, help_text='Число квартир.', null=True, verbose_name='Квартир')),
                ('iNum_Residents', models.SmallIntegerField(default=-1, help_text='Число жителей.', null=True, verbose_name='Жителей')),
                ('iNum_Accounts', models.SmallIntegerField(default=-1, help_text='Число счетов.', null=True, verbose_name='Счетов')),
                ('fCondition_House', models.DecimalField(decimal_places=2, default=-1.0, help_text='Общая степень износа, %', max_digits=5, null=True, verbose_name='Износ')),
                ('fCondition_Foundation', models.DecimalField(decimal_places=2, default=-1.0, help_text='Степень износа фундамента, %', max_digits=5, null=True, verbose_name='Износ_Ф')),
                ('fCondition_Walls', models.DecimalField(decimal_places=2, default=-1.0, help_text='Степень износа несущих стен, %', max_digits=5, null=True, verbose_name='Износ_С')),
                ('fCondition_Overlap', models.DecimalField(decimal_places=2, default=-1.0, help_text='Степень износа перекрытий, %', max_digits=5, null=True, verbose_name='Износ_П')),
                ('sCadastre_Num', models.CharField(default='N/A', help_text='Кадастровый номер', max_length=16, null=True, verbose_name='№ кадастр')),
                ('sCadastre_Num_Area', models.CharField(default='N/A', help_text='Кадастровый номер участка', max_length=16, null=True, verbose_name='№ участка')),
                ('sInventory_Num', models.CharField(default='N/A', help_text='Инвентарный номер', max_length=16, null=True, verbose_name='№ инвентар')),
                ('sManagement_Co', models.CharField(default='N/A', help_text='Управляющая компани(ЖКХ)', max_length=256, null=True, verbose_name='УК ЖКХ')),
                ('dStart_Privatization', models.DateField(default=datetime.date(2038, 1, 19), editable=False, help_text='Дата начала приватизации.', null=True, verbose_name='Дата приватизации')),
                ('sURL', models.CharField(editable=False, help_text='URL для проверки и парсинга информации на http://www.reformagkh.ru/', max_length=128, null=True, verbose_name='URL проверки')),
                ('sAddressPostIndex', models.CharField(blank=True, default='XXXXXX', help_text='Почтовый индекс', max_length=8, null=True, verbose_name='Индекс')),
                ('dBuildingInfoCreate', models.DateTimeField(auto_now_add=True, verbose_name='Создано')),
                ('dBuildingInfoModify', models.DateTimeField(auto_now=True, verbose_name='Отредактировано')),
            ],
            options={
                'verbose_name': 'Здание: адрес и описание дома',
                'verbose_name_plural': 'Здания: адреса и описания домов',
                'ordering': ['sAddress'],
            },
        ),
        migrations.CreateModel(
            name='Glazing',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('sGlazingName', models.CharField(help_text='Краткое название или фирменное обозначение стеклопакета.', max_length=128, unique=True, verbose_name='Название')),
                ('iGlazingCamerasN', models.PositiveSmallIntegerField(default=1, help_text='Число камер', verbose_name='Камер')),
                ('iGlazingThickness', models.PositiveSmallIntegerField(default=0, help_text='Толщина стеклопакета (мм).', verbose_name='Толщина')),
                ('sGlazingBriefDescription', models.CharField(help_text='Краткая характеристика стеклопакета.', max_length=256, verbose_name='Краткая характеристика')),
                ('sGlazingMark', models.CharField(blank=True, default='—', help_text='Схема, марка, маркировка, модель стеклопакета', max_length=128, null=True, verbose_name='Марка')),
                ('sGlazingManufacturer', models.CharField(blank=True, default='—', help_text='Завод (компания) производитель', max_length=128, null=True, verbose_name='Производитель')),
                ('fGlazingHeatTransfer', models.DecimalField(db_index=True, decimal_places=2, default=0, help_text='Сопротивление теплопередаче Ro (м²×°C/Вт)', max_digits=5, verbose_name='Тепл.Сопр.')),
                ('fGlazingSoundproofing', models.DecimalField(db_index=True, decimal_places=2, default=0, help_text='Коэффициент звукоизоляции (дБ)', max_digits=5, verbose_name='Звукоизоляция')),
                ('fGlazingLightTransmission', models.DecimalField(db_index=True, decimal_places=2, default=0, help_text='Коэффициент светопропускания (%)', max_digits=5, verbose_name='Светопропускание')),
                ('sGlazingLightReflectance', models.CharField(db_index=True, default='—/—', help_text='Коэффициент светоотражения, внешний/внутренний (%)', max_length=7, verbose_name='Светоотражение')),
                ('fGlazingPassingSun', models.DecimalField(db_index=True, decimal_places=2, default=0, help_text='Коэффициент солнцепропускания (%)', max_digits=5, verbose_name='Солнцепропускание')),
                ('sGlazingReflectionAndAbsorptionOfHeat', models.CharField(db_index=True, default='—/—', help_text='Коэффициент теплоотражения/теплопоглощения (%)', max_length=7, verbose_name='Теплоотражение и теплопоглощение')),
                ('fGlazingRating', models.FloatField(db_index=True, default=0.0, help_text='Рейтинг (-1 … +1).', verbose_name='Рейтинг')),
                ('sGlazingDescription', models.TextField(default='', help_text='Детальное описание стеклопакета (JSON)', null=True, verbose_name='Описание')),
                ('sGlazingToning', models.CharField(blank=True, default='Нет', help_text='Тонирование стеклопакета (цвет)', max_length=32, null=True, verbose_name='Тонирование')),
                ('dGlazingCreate', models.DateTimeField(auto_now_add=True, verbose_name='Создано')),
                ('dGlazingModify', models.DateTimeField(auto_now=True, verbose_name='Отредактировано')),
            ],
            options={
                'verbose_name': 'Окно: стеклопакет',
                'verbose_name_plural': 'Окна: стеклопакеты',
                'ordering': ['sGlazingName'],
            },
        ),
        migrations.CreateModel(
            name='LogVisitPriceReport',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('dLogVisitTime', models.DateTimeField(auto_now=True, db_index=True, help_text='Дата и время визита', verbose_name='Дата/время')),
                ('sLogAddress', models.CharField(help_text='Адрес дома (на русском)', max_length=128, verbose_name='Адрес')),
                ('sLogNameApartment', models.CharField(help_text='Название, наименование (отображается на кнопке в интерфейсе)', max_length=128, verbose_name='Обозначение')),
                ('sLogURL', models.CharField(db_index=True, help_text='URL', max_length=250, verbose_name='URL')),
            ],
            options={
                'verbose_name': 'ЛОГ: Просмотры ценовой выдачи',
                'verbose_name_plural': 'ЛОГ: Просмотры ценовой выдачи',
                'ordering': ['dLogVisitTime'],
            },
        ),
        migrations.CreateModel(
            name='MerchantBrand',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('sMerchantName', models.CharField(help_text='Название головной компании (бренд).  Например: «МОЁ ОКНО»', max_length=128, unique=True, verbose_name='Название:')),
                ('sMerchantDescription', models.TextField(blank=True, help_text='Введите описание компании. Допускается HTML-разметка.', null=True, verbose_name='Описание')),
                ('pMerchantLogo', models.ImageField(blank=True, default='', help_text='Путь до картинки с логотипом', max_length=255, null=True, upload_to='logos_img/', verbose_name='Логотип')),
                ('sMerchantMainURL', models.URLField(help_text='URL сайта компании', verbose_name='URL')),
            ],
            options={
                'verbose_name': 'Поставщик: бренд',
                'verbose_name_plural': 'Поставщики: бренды',
                'ordering': ['sMerchantName'],
            },
        ),
        migrations.CreateModel(
            name='MerchantOffice',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('sOfficeName', models.CharField(db_index=True, help_text='Название компании и/или офиса. Например: «МОЁ ОКНО (головной оффис)»', max_length=128, unique=True, verbose_name='Название офиса')),
                ('sOfficeStatus', models.SmallIntegerField(blank=True, choices=[(1, 'Головной офис'), (2, 'Региональный офис'), (3, 'Офис продаж'), (4, 'Представительство'), (5, 'Диллер'), (6, 'Франшиза'), (7, 'Агент')], default=None, help_text='Укажите статус офиса', null=True, verbose_name='Статаус офиса')),
                ('sOfficePhones', models.CharField(blank=True, default='', help_text='Телефона офиса. Без пробелов, начинаются с +7. Например: «+7(495)123-12-34». Несколько телефонов записываются через запятую.', max_length=128, null=True, verbose_name='Тел.')),
                ('sOfficeEmails', models.CharField(blank=True, default='', help_text='e-mail офиса. Несколько e-mail записываются через запятую.', max_length=128, null=True, verbose_name='e-mail')),
                ('sOfficeAddress', models.CharField(default='', help_text='Адрес офиса', max_length=255, verbose_name='Адрес офиса')),
                ('fOfficeGeoCode_Latitude', models.DecimalField(decimal_places=8, default=0.0, help_text='Географическая щирота', max_digits=12, null=True, verbose_name='Широта')),
                ('fOfficeGeoCode_Longitude', models.DecimalField(decimal_places=8, default=0.0, help_text='Географическая долгота', max_digits=12, null=True, verbose_name='Долгота')),
                ('sOfficeDescription', models.TextField(blank=True, default=None, help_text='Краткое описание компании (офиса, подразделения). Максимум 4096 символов включая пробелы. HTML запрещен.', max_length=4096, null=True, verbose_name='Описание')),
                ('sOfficeDiscountMetaFormula', models.CharField(blank=True, default=None, help_text='Формула предоставления скидок на мета-языке формул.', max_length=255, null=True, verbose_name='Формула скидки')),
                ('dOfficeDataCreate', models.DateTimeField(auto_now_add=True, verbose_name='Создано')),
                ('dOfficeDataModify', models.DateTimeField(auto_now=True, verbose_name='Отредактировано')),
                ('kMerchantName', models.ForeignKey(blank=True, default=None, help_text='Маркой, бенд или франшиза под которой рабоатет офис.', null=True, on_delete=django.db.models.deletion.SET_NULL, to='oknardia.merchantbrand', verbose_name='Бренд')),
                ('kMerchantOfficeParent', models.ForeignKey(blank=True, default=None, help_text='Укажите офис у которого настоящий офис находится в подчинении.', null=True, on_delete=django.db.models.deletion.SET_NULL, to='oknardia.merchantoffice', verbose_name='Подчинен')),
            ],
            options={
                'verbose_name': 'Поставщик: офис',
                'verbose_name_plural': 'Поставщики: офисы',
                'ordering': ['sOfficeName'],
            },
        ),
        migrations.CreateModel(
            name='MountDim2Apartment',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('iQuantity', models.PositiveSmallIntegerField(default=1, help_text='Количество окон/дверей данных габаритов в квартире', verbose_name='Количество')),
                ('kApartment', models.ForeignKey(help_text='Квартира', on_delete=django.db.models.deletion.DO_NOTHING, to='oknardia.apartment_type', verbose_name='Квартира')),
            ],
            options={
                'verbose_name': 'Связка «проемы↔квартиры»',
                'verbose_name_plural': 'Связки «проемы↔квартиры»',
                'ordering': ['-kApartment_id', '-kMountDim_id'],
            },
        ),
        migrations.CreateModel(
            name='OurUser',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('sUserPhone', models.CharField(blank=True, default='', help_text='Номер телефона пользователя', max_length=32, null=True, verbose_name='Телефон')),
                ('sUserStatus', models.SmallIntegerField(blank=True, choices=[(1, 'Клиент, заказчик'), (10, 'Представитель компании (офиса)'), (50, 'Администратор бренда'), (100, 'Администратор Окнардии')], default=9, help_text='Статус пользователя.', null=True, verbose_name='Статаус')),
                ('sUserJobTitle', models.CharField(blank=True, default=None, help_text='Должность, в случае если данный логин является представителем компании.', max_length=64, null=True, verbose_name='Должность')),
                ('sUserAvatarImg', models.ImageField(default='null.gif', help_text='URL на картинку с аватаркой ', max_length=128, upload_to='img_avatar/', verbose_name='Avatar')),
                ('bUserSubscribe', models.BooleanField(default=True, help_text='Паользователь подписан на регулярную.', verbose_name='Подписка')),
                ('bUserWaitOffers', models.BooleanField(default=True, help_text='Пользователь ждет коммерческих предложений.', verbose_name='Ждет предложений')),
                ('sSocial', models.TextField(blank=True, default=None, help_text='Как это будет работать пока не ясно.', max_length=1024, null=True, verbose_name='Социальные ссылки')),
                ('dUserDataModify', models.DateTimeField(auto_now=True, verbose_name='Отредактировано')),
                ('kDjangoUser', models.ForeignKey(help_text='Базовый пользователь', on_delete=django.db.models.deletion.DO_NOTHING, to=settings.AUTH_USER_MODEL, verbose_name='User')),
                ('kMerchantOffice', models.ForeignKey(blank=True, default=None, help_text='Сотрудника какого офиса предтавляет этот логин.', null=True, on_delete=django.db.models.deletion.SET_NULL, to='oknardia.merchantoffice', verbose_name='Представитель')),
            ],
            options={
                'verbose_name': 'Наш Пользователь',
                'verbose_name_plural': 'Наши Пользователи',
                'ordering': ['kDjangoUser'],
            },
        ),
        migrations.CreateModel(
            name='PVCprofiles',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('sProfileName', models.CharField(db_index=True, help_text='Название профиля.', max_length=64, unique=True, verbose_name='Профиль')),
                ('sProfileBriefDescription', models.CharField(db_index=True, help_text='Краткая характеристика профиля.', max_length=255, unique=True, verbose_name='Краткое описание')),
                ('sProfileManufacturer', models.CharField(db_index=True, default='—//—', help_text='Завод (компания) производитель', max_length=128, verbose_name='Производитель')),
                ('iProfileCameras', models.CharField(blank=True, default='—/—', help_text='Число камер рамка/створка.', max_length=5, null=True, verbose_name='Камер')),
                ('iProfileThickness', models.PositiveSmallIntegerField(default=0, help_text='Монтажная ширина профиля (мм).', verbose_name='W')),
                ('fProfileHeatTransf', models.DecimalField(decimal_places=2, default=0, help_text='Сопротивление теплопередаче Ro (м²×°C/Вт)', max_digits=5, verbose_name='Ro')),
                ('fProfileSoundproofing', models.DecimalField(decimal_places=2, default=0, help_text='Коэффициент звукоизоляции (дБ). 1-й класс — 25-29дБ;  2-й класс — 30-24дБ; 3-й класс — 35-39дБ; 4-й класс — 40-44дБ; 5-й класс — 45-49дБ; 6-й класс — свыше 50 дБ; ', max_digits=5, verbose_name='дБ')),
                ('iProfileGlazingThickness', models.PositiveSmallIntegerField(default=0, help_text='Максимальная толщина стеклопакета (мм).', verbose_name='W-cтеклопак')),
                ('sProfileReinforcement', models.CharField(blank=True, help_text='Армирование профиля. Описание кратко.', max_length=255, verbose_name='Армирование')),
                ('fProfileSeals', models.PositiveSmallIntegerField(blank=True, default=0, help_text='Число контуров уплотнения.', null=True, verbose_name='Контуров уплотнения')),
                ('sProfileSealDescription', models.CharField(blank=True, default='', help_text='Характеристики или цвет уплотнителя.', max_length=128, null=True, verbose_name='Уплотнитель')),
                ('sProfileFillet', models.CharField(blank=True, default='', help_text='Штапик. Описание кратко.', max_length=255, verbose_name='Штапик')),
                ('iProfileHeight', models.PositiveSmallIntegerField(default=0, help_text='Высота в световом проеме (рама+створка), мм.', verbose_name='Высота')),
                ('iProfileRabbet', models.PositiveSmallIntegerField(default=0, help_text='Размер зазора между рамой и створкой (высота фальца), мм.', verbose_name='Фальц')),
                ('sProfileColor', models.CharField(blank=True, default='белый', help_text='Цвет профиля', max_length=128, verbose_name='Цвет')),
                ('sProfileOther', models.CharField(blank=True, default='', help_text='Прочие характеристики в формате: Характеристика: Значение; Характеристика: Значение;', max_length=255, verbose_name='Прочее')),
                ('fProfileRating', models.FloatField(db_index=True, default=0.0, help_text='Рейтинг (0… +5).', verbose_name='Рейтинг')),
                ('sProfileDescription', models.TextField(default='', help_text='Описание профиля (JSON)', null=True, verbose_name='Описание')),
                ('dProfileCreate', models.DateTimeField(auto_now_add=True, verbose_name='Создано')),
                ('dProfileModify', models.DateTimeField(auto_now=True, verbose_name='Когда отредактировано')),
                ('kProfile2User', models.ForeignKey(help_text='Данный профиль добавил пользователь.', on_delete=django.db.models.deletion.DO_NOTHING, to='oknardia.ouruser', verbose_name='User')),
            ],
            options={
                'verbose_name': 'Окно: профиль',
                'verbose_name_plural': 'Окна: профили',
                'ordering': ['sProfileName'],
            },
        ),
        migrations.CreateModel(
            name='Win_MountDim',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('iWinWidth', models.DecimalField(decimal_places=1, help_text='Ширина, см.', max_digits=5, verbose_name='Ширина')),
                ('iWinHight', models.DecimalField(decimal_places=1, help_text='Высота, см.', max_digits=5, verbose_name='Высота')),
                ('iWinDepth', models.DecimalField(decimal_places=1, help_text='Глубина, см.', max_digits=3, verbose_name='Глубина')),
                ('sFlapConfig', models.CharField(help_text='Рекомендуемая гор.архитектурой конфигурации открывания (МЕТАЯЗЫК)', max_length=32, verbose_name='Открывание')),
                ('sDescripion', models.CharField(blank=True, help_text='Описание для простоты последующего поиска и SEO', max_length=64, null=True, verbose_name='Описание')),
                ('bIsDoor', models.BooleanField(default=False, help_text='Это Дверь', verbose_name='Дверь')),
                ('bIsNearDoor', models.BooleanField(default=False, help_text='Это окно рядом с дверью (может быть глухим)', verbose_name='Глухое')),
                ('iWinLimit', models.DecimalField(decimal_places=1, default=5.0, help_text='Точность, допуск, предельные отклонения ширины и высоты, ±см.', max_digits=2, null=True, verbose_name='Допуск±')),
                ('dMountXYZDataCreate', models.DateTimeField(auto_now_add=True, verbose_name='Создано')),
                ('dMountXYZModify', models.DateTimeField(auto_now=True, verbose_name='Отредактировано')),
                ('kApartment', models.ManyToManyField(help_text='Принадлежность проема к типовой квартире', through='oknardia.MountDim2Apartment', to='oknardia.apartment_type', verbose_name='Квартира')),
            ],
            options={
                'verbose_name': 'Окно: проём и его конфигурация',
                'verbose_name_plural': 'Окна: проемы и их конфигурация',
                'ordering': ['id', 'iWinWidth', 'iWinHight'],
            },
        ),
        migrations.CreateModel(
            name='SetKit',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('sSetName', models.CharField(help_text='Марка, краткое название или фирменное обозначение набора.', max_length=128, unique=True, verbose_name='Название')),
                ('sSetDescription', models.TextField(blank=True, help_text='Детальное описание стеклопакета (допустим HTML)', verbose_name='Описание')),
                ('sSetClimateControl', models.CharField(blank=True, default='', help_text='Система климат-контроля: марка, краткое название или фирменное обозначение.', max_length=128, verbose_name='Климат-контроль')),
                ('sSetSill', models.CharField(blank=True, help_text='Подоконник: марка, краткое название или фирменное обозначение.', max_length=128, verbose_name='Подоконник')),
                ('sSetImplementAll', models.CharField(help_text='Фурнитура: марка, краткое название или фирменное обозначение.', max_length=128, verbose_name='Фурнитура')),
                ('sSetImplementHandles', models.CharField(blank=True, help_text='Фурнитура ручки: марка, краткое название или фирменное обозначение.', max_length=128, verbose_name='Ручки')),
                ('sSetImplementHinges', models.CharField(blank=True, help_text='Фурнитура петли: марка, краткое название или фирменное обозначение.', max_length=128, verbose_name='Петли')),
                ('sSetImplementLatch', models.CharField(blank=True, help_text='Фурнитура механизма запирания: марка, краткое название или фирменное обозначение.', max_length=128, verbose_name='Запоры')),
                ('sSetImplementLimiter', models.CharField(blank=True, help_text='Фурнитура ограничителя: марка, краткое название или фирменное обозначение.', max_length=128, verbose_name='Ограничитель')),
                ('sSetImplementCatch', models.CharField(blank=True, help_text='Фурнитура фиксаторов открывания: марка, краткое название или фирменное обозначение.', max_length=128, verbose_name='Фиксаторы открывания')),
                ('sSetPanes', models.CharField(blank=True, help_text='Водоотлив: марка, краткое название или фирменное обозначение.', max_length=128, verbose_name='Водоотлив')),
                ('sSetSlope', models.CharField(blank=True, help_text='Откос: марка, краткое название или фирменное обозначение.', max_length=128, verbose_name='Откос')),
                ('sSetDelivery', models.CharField(blank=True, default='Включена в стоимость', help_text='Доставка: опишите условия, регион, способ расчета стоимости и т.п.', max_length=64, verbose_name='Доставка')),
                ('bSetDelivery', models.BooleanField(default=True, help_text='Отмечено, если доставка включена в стоимость', verbose_name='Доставка(б)')),
                ('sSetUninstallInstall', models.CharField(blank=True, default='Включен в стоимость', help_text='Доставка: опишите условия, регион, способ расчета стоимости…', max_length=64, verbose_name='Монтаж')),
                ('bSetUninstallInstall', models.BooleanField(default=True, help_text='Отмечено, если Демонтаж/Монтаж включен в стоимость', verbose_name='Монтаж(б)')),
                ('sSetOtherConditions', models.CharField(blank=True, default='', help_text='Прочие условия: монтаж, демонтаж, вывоз мусора, предоставление пленки для укрытия мебели и т.п.', max_length=512, verbose_name='Прочие условия')),
                ('fSetRating', models.FloatField(db_index=True, default=0.0, help_text='Рейтинг (0.0 … 5.0). Если рейтинг 0.1 то выводится полупрозрачным и с меткой что поставщик бяка', verbose_name='Рейтинг')),
                ('iSetNumEval', models.PositiveIntegerField(default=0, help_text='Количество оценок.', verbose_name='N оценок')),
                ('iSetImpressions', models.PositiveIntegerField(default=0, help_text='Число показов.', verbose_name='Показы')),
                ('iSetViews', models.PositiveIntegerField(default=0, help_text='Число просмотров.', verbose_name='Просмотры')),
                ('sSetActive', models.BooleanField(default=True, help_text='Отображать предложение (если "вкл") или нет (если "выкл").', verbose_name='Активно')),
                ('dSetCommercialUntil', models.DateTimeField(blank=True, default=datetime.datetime(2018, 3, 25, 12, 0), help_text='Дата до которой набор считается размещенным на коммерческой основе.', verbose_name='Коммерческий до')),
                ('dSetCreate', models.DateTimeField(auto_now_add=True, verbose_name='Создано')),
                ('dSetModify', models.DateTimeField(auto_now=True, db_index=True, verbose_name='Отредактировано')),
                ('kSet2Glazing', models.ForeignKey(help_text='Стеклопакет используемый в данном наборе.', on_delete=django.db.models.deletion.DO_NOTHING, to='oknardia.glazing', verbose_name='Стеклопакет')),
                ('kSet2PVCprofiles', models.ForeignKey(help_text='Профиль используемый в данном наборе.', on_delete=django.db.models.deletion.DO_NOTHING, to='oknardia.pvcprofiles', verbose_name='Профиль')),
                ('kSet2User', models.ForeignKey(help_text='Пользователь, который определил данный набор.', on_delete=django.db.models.deletion.DO_NOTHING, to='oknardia.ouruser', verbose_name='User')),
            ],
            options={
                'verbose_name': 'Окно: набор',
                'verbose_name_plural': 'Окна: наборы',
                'ordering': ['id', 'sSetName'],
            },
        ),
        migrations.CreateModel(
            name='Seria_Info',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('sName', models.CharField(help_text='Наименование серии дома.', max_length=128, unique=True, verbose_name='Серия дома')),
                ('sURL2IMG', models.ImageField(default='null.gif', help_text='Способ загрузить картинку через адмрн6ку Картинка-тизер для публикаций в соц.сетях. URL к картинке будет «<b>/media/img_seria/…</b>» и этот URL можно использовать в HTML-тексте блога. Если нужно загрузить несколько картинок, то после сохранения промежуточной записи, откройте ее на редактирование еще раз и добавте новую картинку. Предыдущая картинка (и её URL) продолжат быть доступны.<br><b>ВАЖНО: ПРИ ПУБЛИКАЦИИ В СОЦ.СЕТЯХ БУДЕТ ОТОБРАЖАТЬЯ КАРТИНКА ЗАГРУЖЕННАЯ ПОСЛЕДНЕЙ.<br>ВАЖНО: ЕСЛИ ЗАГРУЖАЕМАЯ КАРТИНКА УЖЕ ИМЕЕТ ДУБЛИКАТ В СИСТЕМЕ, ЕЕ ИМЯ (И URL) БУДУТ ИЗМЕНЕНЫ. БУДЬТЕ ВНИМТЕЛЬНЫ!', max_length=128, upload_to='img_seria/', verbose_name='Изображение')),
                ('sSeriaDescription', models.TextField(blank=True, default='', help_text='Тематическая статья, о настоящей серии дома', null=True, verbose_name='Текст')),
                ('dSeriaInfoCreate', models.DateTimeField(auto_now_add=True, verbose_name='Создано')),
                ('dSeriaInfoModify', models.DateTimeField(auto_now=True, verbose_name='Отредактировано')),
                ('kParent', models.ForeignKey(blank=True, default=None, help_text='Серия дома, которая является родительской для текущей.', null=True, on_delete=django.db.models.deletion.SET_NULL, to='oknardia.seria_info', verbose_name='Родительская серия')),
                ('kRoot', models.ForeignKey(blank=True, default=None, help_text='Серия дома, которая является корневой для текущей.', null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='kRootID', to='oknardia.seria_info', verbose_name='Корневая серия')),
            ],
            options={
                'verbose_name': 'Здание: серия дома',
                'verbose_name_plural': 'Здания: серии домов',
                'ordering': ['id', 'kParent_id', 'sName'],
            },
        ),
        migrations.CreateModel(
            name='PriceOffer',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('sOfferFlapConfig', models.CharField(help_text='Предлагаемая схема открывания (МЕТАЯЗЫК)', max_length=32, verbose_name='Открывание')),
                ('fOfferPrice', models.DecimalField(decimal_places=2, default=0.0, help_text='Цена установки окна, руб.', max_digits=10, verbose_name='Цена, ₽')),
                ('fOfferRating', models.FloatField(db_index=True, default=0.0, help_text='Поправка рейтинга (-0.5 … 0.5). Вычисляется исходя из соответствия предлагаемой схемы открывания', verbose_name='Рейтинг')),
                ('iOfferImpressions', models.PositiveIntegerField(default=0, help_text='Число показов.', verbose_name='Показы')),
                ('iOfferViews', models.PositiveIntegerField(default=0, help_text='Число просмотров.', verbose_name='Просмотры')),
                ('sOfferActive', models.BooleanField(default=True, help_text='Отображать предложение (если "вкл") или нет (если "выкл").', verbose_name='Активно')),
                ('dOfferCreate', models.DateTimeField(auto_now_add=True, verbose_name='Создано')),
                ('dOfferModify', models.DateTimeField(auto_now=True, db_index=True, verbose_name='Отредактировано')),
                ('kOffer2MountDim', models.ForeignKey(help_text='Проём для которого установлена цена.', on_delete=django.db.models.deletion.DO_NOTHING, to='oknardia.win_mountdim', verbose_name='Проём')),
                ('kOffer2SetKit', models.ForeignKey(default=1, help_text='Набор', on_delete=django.db.models.deletion.DO_NOTHING, to='oknardia.setkit', verbose_name='Набор')),
                ('kOfferFromUser', models.ForeignKey(help_text='Пользователь, который установил эту цену.', on_delete=django.db.models.deletion.DO_NOTHING, to='oknardia.ouruser', verbose_name='User')),
            ],
            options={
                'verbose_name': 'Окно: цена',
                'verbose_name_plural': 'Окна: цены',
                'ordering': ['-id'],
            },
        ),
        migrations.AddField(
            model_name='mountdim2apartment',
            name='kMountDim',
            field=models.ForeignKey(help_text='Параметры оконного/верного проема', on_delete=django.db.models.deletion.DO_NOTHING, to='oknardia.win_mountdim', verbose_name='Оконный проём'),
        ),
        migrations.CreateModel(
            name='LogMeasure',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('dMeasureCreate', models.DateTimeField(auto_now_add=True, db_index=True, verbose_name='Обращение')),
                ('kMeasureApartment', models.ForeignKey(default=0, help_text='Для какой типовой квартиры сделали замер.', on_delete=django.db.models.deletion.DO_NOTHING, to='oknardia.apartment_type', verbose_name='Квартира')),
                ('kMeasureBuilding', models.ForeignKey(db_index=False, default=0, help_text='По какому адресу был произведен замер.', on_delete=django.db.models.deletion.DO_NOTHING, to='oknardia.building_info', verbose_name='Адрес')),
                ('kMeasureByUser', models.ForeignKey(default=0, help_text='Кто произвел замер и прислал данные', on_delete=django.db.models.deletion.DO_NOTHING, to='oknardia.ouruser', verbose_name='От кого')),
            ],
            options={
                'verbose_name': 'Лог: замеры пользователей',
                'verbose_name_plural': 'Лог: замеры пользователей',
                'ordering': ['dMeasureCreate'],
            },
        ),
        migrations.CreateModel(
            name='LogDemand',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('dDemandCreate', models.DateTimeField(auto_now_add=True, db_index=True, verbose_name='Обращение')),
                ('kDemandApartment', models.ForeignKey(default=0, help_text='Цены на окна в какую типовую квартиру запросили.', on_delete=django.db.models.deletion.DO_NOTHING, to='oknardia.apartment_type', verbose_name='Квартира')),
                ('kDemandBuilding', models.ForeignKey(db_index=False, default=0, help_text='Какой адрес был запрошен.', on_delete=django.db.models.deletion.DO_NOTHING, to='oknardia.building_info', verbose_name='Адрес')),
                ('kDemandByUser', models.ForeignKey(default=0, help_text='Кто сделал запрос в систему', on_delete=django.db.models.deletion.DO_NOTHING, to='oknardia.ouruser', verbose_name='Кто спросил')),
            ],
            options={
                'verbose_name': 'Лог: запрос в систему с главной',
                'verbose_name_plural': 'Лог: запросы в систему с главной',
                'ordering': ['dDemandCreate'],
            },
        ),
        migrations.AddField(
            model_name='glazing',
            name='kGlazing2User',
            field=models.ForeignKey(help_text='Описание стекопакета добавлено пользователем.', on_delete=django.db.models.deletion.DO_NOTHING, to='oknardia.ouruser', verbose_name='User'),
        ),
        migrations.CreateModel(
            name='Catalog2Profile',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('sCatalogCardType', models.SmallIntegerField(choices=[(1, 'Профиль (карточка каталога)'), (100, 'Бренд (описание производителя профиля)')], db_index=True, default=1, help_text='Тип карточки каталога: описание для <b>профиля</b> или для <b>бренда</b>.', verbose_name='Тип')),
                ('kBlogCatalog', models.ForeignKey(blank=True, db_constraint=False, default=None, help_text='Запись в каталог-блоге относящаяся к данному профилю.', null=True, on_delete=django.db.models.deletion.SET_NULL, to='oknardia.blogposts', verbose_name='Каталог-блог')),
                ('kProfile', models.ForeignKey(blank=True, db_constraint=False, default=None, help_text='Профиль, к которому относится карточка каталога.', null=True, on_delete=django.db.models.deletion.SET_NULL, to='oknardia.pvcprofiles', verbose_name='Профиль')),
            ],
            options={
                'verbose_name': 'Связка-каталог «профили↔блог»',
                'verbose_name_plural': 'Связки-каталог «профили↔блог»',
            },
        ),
        migrations.AddField(
            model_name='building_info',
            name='kSeria_Link',
            field=models.ForeignKey(blank=True, default=None, help_text='Серия, типовой проект здания в нашей базе', null=True, on_delete=django.db.models.deletion.SET_NULL, to='oknardia.seria_info', verbose_name='Серия2'),
        ),
        migrations.AddField(
            model_name='blogposts',
            name='kBlogAuthorUser',
            field=models.ForeignKey(default=1, help_text='Автора поста в блог или записи в каталог.', on_delete=django.db.models.deletion.DO_NOTHING, to='oknardia.ouruser', verbose_name='Автор'),
        ),
        migrations.AddField(
            model_name='apartment_type',
            name='kBuild',
            field=models.ForeignKey(blank=True, default=None, editable=False, help_text='Данный тип квартириы находится непоследственно к адресу (для индивидуальных проектов)', null=True, on_delete=django.db.models.deletion.SET_NULL, to='oknardia.building_info', verbose_name='Адрес'),
        ),
        migrations.AddField(
            model_name='apartment_type',
            name='kSeria',
            field=models.ForeignKey(blank=True, default=None, help_text='Данный тип квартиры принадлежит к серии дома', null=True, on_delete=django.db.models.deletion.SET_NULL, to='oknardia.seria_info', verbose_name='В доме серии'),
        ),
    ]
