миграции
This commit is contained in:
428
oknardia/oknardia/migrations/0001_initial.py
Normal file
428
oknardia/oknardia/migrations/0001_initial.py
Normal 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 /> ■ 5 — запись используется как рекламный тизер;<br /> ■ 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='В доме серии'),
|
||||
),
|
||||
]
|
||||
0
oknardia/oknardia/migrations/__init__.py
Normal file
0
oknardia/oknardia/migrations/__init__.py
Normal file
Reference in New Issue
Block a user