миграции

This commit is contained in:
2022-10-30 00:39:18 +03:00
parent 7197dd6922
commit 9a3888244f
2 changed files with 428 additions and 0 deletions

View File

@@ -0,0 +1,428 @@
# Generated by Django 4.1.2 on 2022-10-27 20:58
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, 10, 27, 23, 58, 1, 898637), 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', 'fOfferPrice', 'kOffer2SetKit'],
},
),
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='В доме серии'),
),
]

View File