mod: minor: валидатор форм, парсера и моделей (28) миграции и переименование поля s_offer_skip32 в s_offer_code в модели TbOffer
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
# Generated by Django 6.0.5 on 2026-07-15 14:00
|
||||
|
||||
import django.db.models.deletion
|
||||
import django.utils.timezone
|
||||
import filer.fields.image
|
||||
import frontend.models
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('frontend', '0003_remove_tbimagemetadata_f_img_confidence_score_and_more'),
|
||||
migrations.swappable_dependency(settings.FILER_IMAGE_MODEL),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='tbarticle',
|
||||
name='k_article_to_image',
|
||||
field=filer.fields.image.FilerImageField(blank=True, help_text='Обложка или иллюстрация статьи из файлового хранилища (django_filer). Метаданные: image.metadata.i_img_sort и image.metadata.j_img_metadata.<br/><b>ВАЖНО</b>: Так как статья призывается к исполнителям, лейблам, продавцам, музыкальным стилям, её можно использовать как логотип-пкитограмму или баннер этих сущностей. В этом случае рекомендуется использовать изображение с прозрачным фоном (движок поддерживает SVG, WebP и PNG).', null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='image_to_article', to=settings.FILER_IMAGE_MODEL, verbose_name='Изображение для статьи'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='tbimagemetadata',
|
||||
name='j_img_metadata',
|
||||
field=models.JSONField(blank=True, default=frontend.models.get_image_metadata_default, help_text='JSON с дополнительными данными: тип (реальное/абстрактное), источник (парсер/админка), URL источника и заметки. Предзаполнено структурой для удобства.', verbose_name='Метаданные'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='tboffer',
|
||||
name='d_offer_date_release',
|
||||
field=models.DateField(blank=True, db_index=True, default=None, help_text='Дата релиза (например, дата выпуска переиздания) или выхода по предзаказу, если она известна', null=True, verbose_name='Дата релиза'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='tboffer',
|
||||
name='i_offer_discount_to_daily_sale',
|
||||
field=models.IntegerField(blank=True, db_index=True, default=0, help_text='Процент возможной скидки, если участвует в "ежедневной распродаже" или акции. Если указано <tt>0</tt> то данное предложение не может участвовать в распродажах, спецпредложениях и акциях', verbose_name='Возможна cкидка (%)'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='tboffer',
|
||||
name='j_offer_metadata',
|
||||
field=models.JSONField(default=frontend.models.get_offer_metadata_default, help_text='Дополнительные данные о предложении в виде JSON-словаря. Например:<pre style="background-color:#80808080;border:1px solid #ccc; padding:1ex;max-width: calc(75% - 13em);">{\n "OFR_NT": "Уценка: замят угол конверта, повреждены наклейки.",\n "OFR_MF": {\n "lp": 2,\n "cd": 1\n }\n}</pre>Ключи:<ul> <li>"OFR_NT" — Примечание к офферу</li> <li>"OFR_MF" — Какие носители входят в коммерческое предложение.<br/> Допустимые значения: "lp" — Vinyl Long-Play (12"), "ep" — Vinyl Extended-Play (12", 10", 7"), "45" — Vinyl 7" (45 rpm), "cd" — Compact Disc, "ld" — LaserDisc, "md" — MiniDisc Record, "ms" — Used MiniDisc (для записи), "cs" — Cassette Record, "uc" — Used Cassette (для записи), "tp" — Tape Reel Record, "ur" — Used Tape Reel (для записи), "??" — Other</li></ul>', null=True, verbose_name='Дополнительные данные'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='tboffer',
|
||||
name='k_offer_to_label',
|
||||
field=models.ForeignKey(blank=True, default=None, help_text='Лейбл, на котором был выпущен релиз (если известен), или производитель для аудиио-кассет и MD под запись, технику или аксессуар.', null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='label_to_offer', to='frontend.tblabel', verbose_name='Лейбл/Производитель'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='tboffer',
|
||||
name='l_offer_to_format',
|
||||
field=models.CharField(choices=[('lp', 'Vinyl Long-Play (12")'), ('ep', 'Vinyl Extended-Play (12", 10", 7")'), ('45', 'Vinyl 7" (45 rpm)'), ('cd', 'Compact Disc'), ('ld', 'LaserDisc'), ('md', 'MiniDisc Record'), ('ms', 'Used MiniDisc (для записи)'), ('cs', 'Cassette Record'), ('uc', 'Used Cassette (для записи)'), ('tp', 'Tape Reel Record'), ('ur', 'Used Tape Reel (для записи)'), ('??', 'Other')], db_index=True, default='??', help_text='Форматы основного носителей (пластинка, CD, кассета и т.п.). Если несколько носителей (и разных), то это указывать в "Дополнительных данных" в JSON-формате. Например: <tt>{"OFR_MF": {"lp": 2, "cd": 1},}</tt>', max_length=2, verbose_name='Формат'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='tboffer',
|
||||
name='s_offer_code',
|
||||
field=models.CharField(help_text='Уникальный код товара для идентификации в корзине и при заказе (чтобы не светить id). Например: "4gfFCJ". Формируется автоматически через Hashids на основе ID оффера. <b>Не редактировать вручную!</b>', max_length=12, unique=True, verbose_name='Код товара'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='tbofferhistory',
|
||||
name='t_history_created',
|
||||
field=models.DateTimeField(db_index=True, default=django.utils.timezone.now, help_text='Дата создания записи истории. Автоматически устанавливается на текущее время при создании, но может быть отредактирована для загрузки исторических данных из Excel-файлов.', verbose_name='Дата создания'),
|
||||
),
|
||||
]
|
||||
Reference in New Issue
Block a user