('s_article_title',models.CharField(default='',help_text='Технический заголовок статьи для внутреннего использования, например: "Album: Abbey Road" или "Bio: The Beatles".',max_length=255,unique=True,verbose_name='Технический заголовок')),
('l_article_type',models.CharField(blank=True,choices=[('artist','Artis: артист, группа или бренд'),('item','Item: Альбом, релиз или товар (кассета, hifi, аксессуар)'),('offer','Offer: конкретное предложение от продавца'),('seller','Seller: продавец или магазин'),('blog','Новость или блог'),('action','Спецпредложение, акция, распродажа и т.д.'),('to_main','Текст/Блок для главной страницы'),('adv','Реклама или баннер'),('???','Другое')],db_index=True,default='???',max_length=7,verbose_name='Тип статьи')),
('l_article_type',models.CharField(blank=True,choices=[('artist','Artis: артист, группа или бренд'),('style','Slyle: музыкальный стиль'),('item','Item: Альбом, релиз или товар (кассета, hifi, аксессуар)'),('label','Label: Лейбл, издатель или компания'),('offer','Offer: конкретное предложение от продавца'),('seller','Seller: продавец или магазин'),('blog','Новость или блог'),('action','Спецпредложение, акция, распродажа и т.д.'),('to_main','Текст/Блок для главной страницы'),('adv','Реклама или баннер'),('???','Другое')],db_index=True,default='???',max_length=7,verbose_name='Тип статьи')),
('t_article_started',models.DateTimeField(auto_now_add=True,db_index=True,verbose_name='Дата начала публикации')),
('t_article_ended',models.DateTimeField(blank=True,db_index=True,default=None,help_text='Если указано, статья будет отображаться только между датой начала и датой окончания публикации. Если не указано, статья будет отображаться всегда (или до тех пор, пока не будет удалена или снята с публикации через `b_article_published`)',null=True,verbose_name='Дата окончания публикации')),
@@ -45,41 +45,12 @@ class Migration(migrations.Migration):
('s_style_name',models.CharField(db_index=True,help_text='Основное название стиля. Например: "Rock", "Jazz", "Classical"',max_length=100,unique=True,verbose_name='Стиль (канонический)')),
('s_style_slug',models.SlugField(editable=False,help_text='Автоматически генерируется из названия. Используется в URL и API.',unique=True,verbose_name='Слаг (уникальный идентификатор)')),
('j_style_synonyms',models.JSONField(blank=True,default=list,help_text='Список вариантов названия из Discogs, MusicBrainz и т.д. для матчинга. Пример: ["rock", "Rock Music", "Rock & Roll", "Hard Rock"]',verbose_name='Синонимы из источников')),
('s_artist',models.CharField(help_text='Техническое название исполнителя для внутреннего использования, например: "The Beatles" или"David Bowie".',max_length=128,unique=True,verbose_name='Исполнитель')),
('j_artist_metadata',models.JSONField(blank=True,default=list,help_text='Включая варианты написания в источниках Список вариантов: ["The Beatles", "Beatles", "Beatles, The"]',null=True,verbose_name='Метаданные JSON')),
('j_artist_metadata',models.JSONField(blank=True,default=dict,help_text='В основном список синонимов/вариантов названия из Discogs, MusicBrainz и т.д. для матчинга. Пример: <tt>{"SYNONYM": ["The Beatles", "Beatles", "Beatles, The"]}</tt>.',null=True,verbose_name='Метаданные JSON')),
('k_artist_to_article',models.OneToOneField(blank=True,default=None,help_text='Связанная статья об исполнителе (Типографированные заголовок, тизер и текст статьи. Так же через статью может быть получена картинка, seo атрибуты, слаг (обязательно) и т.п.)<br /><b>ОБЯЗАТЕЛЬНО УКАЗЫВАТЬ</b> т.к. через статью получаем слаг для URL артиста.',null=True,on_delete=django.db.models.deletion.SET_NULL,related_name='article_to_artist',to='frontend.tbarticle',verbose_name='Связанная статья')),
@@ -96,13 +67,12 @@ class Migration(migrations.Migration):
('l_img_source',models.CharField(choices=[('parser','Загружено парсером (из Discogs, Meshok или другого сайта)'),('manual','Ручная загрузка пользователем'),('vendor','От продавца'),('other','Другое')],default='manual',help_text='Как был получен этот снимок: загружен вручную, получен парсером из внешнего источника (например, Discogs), предоставлен продавцом и т.д.',max_length=10,verbose_name='Источник')),
('l_img_reality',models.CharField(choices=[('real','Реальная фотография товара'),('abstract','Абстрактное (из внешнего источника)')],default='abstract',help_text='Реальная фотография товара или картинка из внешнего источника?',max_length=10,verbose_name='Тип снимка')),
('s_img_src_url',models.URLField(blank=True,help_text='Если изображение взято из внешнего источника (например, Discogs)',null=True,verbose_name='URL источника')),
('i_img_sort',models.IntegerField(db_index=True,default=0,help_text='Порядок отображения изображений. Чем меньше число, тем выше в списке. Можно использовать для указания обложки (0), задника (1) и т.д.',verbose_name='Cортировка')),
('f_img_confidence_score',models.FloatField(blank=True,default=None,help_text='0.0 - 1.0, насколько уверены, что это правильное изображение',null=True,verbose_name='Уверенность (для автоматических данных)')),
('s_img_src_url',models.URLField(blank=True,help_text='URL источника, если изображение взято (в том числе и парсером) из внешнего источника (например, Discogs)',null=True,verbose_name='URL')),
('i_img_sort',models.IntegerField(db_index=True,default=0,help_text='Порядок отображения изображений. Чем меньше число, тем выше в списке. Можно использовать для указания обложки (0), задника (1) и т.д.',verbose_name='Сортировка')),
('f_img_confidence_score',models.FloatField(blank=True,default=10.0,help_text='Уверенность (для автоматических данных) 0.0 - 10.0, насколько уверены, что это правильное изображение',null=True,verbose_name='Достоверность')),
('image',filer.fields.image.FilerImageField(blank=True,help_text='Файл изображения, загруженный через django_filer.',null=True,on_delete=django.db.models.deletion.SET_NULL,to=settings.FILER_IMAGE_MODEL,verbose_name='Файл изображения')),
('image',filer.fields.image.FilerImageField(help_text='Файл изображения, загруженный через django_filer.',on_delete=django.db.models.deletion.DO_NOTHING,to=settings.FILER_IMAGE_MODEL,verbose_name='Файл изображения')),
],
options={
'verbose_name':'Изображение',
@@ -115,32 +85,12 @@ class Migration(migrations.Migration):
name='k_article_to_image',
field=models.ForeignKey(blank=True,null=True,on_delete=django.db.models.deletion.SET_NULL,related_name='image_to_article',to='frontend.tbimage',verbose_name='Изображение для статьи'),
('s_item',models.CharField(help_text='Техническое название товара (альбома, релиза, аксессуара) для внутреннего использования,например: "Abbey Road (LP)" или "TDK CDing I (кассета для записи)".',max_length=128,unique=True,verbose_name='Товар')),
('s_item_date',models.CharField(blank=True,default='XXXX-XX-XX',help_text='Например: 1969-05-25, или 1969-05-XX (если день неизвестен), или 1969-XX-XX (если известен только год, или XXXX-XX-XX (если дата релиза неизвестна). Менее приоритетное поле для отображения даты релиза, чем t_release_date, так как может содержать неполную дату и/или текстовую информацию. Срабатывает только если t_release_date не указано.',max_length=10,null=True,verbose_name='Дата релиза (str)')),
('t_item_date',models.DateField(blank=True,help_text='Полная дата если известна, например: 1969-09-26. Если точно известен.',null=True,verbose_name='Дата релиза')),
('i_discogs_master_id',models.IntegerField(blank=True,default=None,help_text='Уникальный идентификатор мастер-релиза на Discogs, если он там есть. Например: <tt>306323</tt>',null=True,verbose_name='ID на мастер-релиз Discogs')),
('j_item_metadata',models.JSONField(blank=True,default=dict,help_text='Дополнительные данные и метаданные релиза (страна, жанр, количество треков и т.д.) или товавра в виде JSON-словаря. Сюда же включены варианты написания релиза в источниках',null=True,verbose_name='Дополнительные данные')),
('k_item_to_article',models.OneToOneField(blank=True,default=None,help_text='Связанная статья об альбоме/релизе/товаре (Типографированные заголовок, тизер и текст статьи. Так же через статью может быть получена картинка, seo атрибуты, слаг (обязательно) и т.п.)<br /><b>ОБЯЗАТЕЛЬНО УКАЗЫВАТЬ</b> т.к. через статью получаем слаг для URL альбома/релиза/товара.',null=True,on_delete=django.db.models.deletion.SET_NULL,related_name='article_to_item',to='frontend.tbarticle',verbose_name='Связанная статья')),
('k_item_to_artist',models.ManyToManyField(blank=True,db_index=True,help_text='Один или несколько для коллабораций',related_name='artist_to_item',to='frontend.tbartist',verbose_name='Исполнители')),
],
options={
'verbose_name':'Товар в каталоге (релиз, носитель, аксессуар)',
('s_label',models.CharField(help_text='Техническое название лейбла. Например: "Sony Records" или "Мелодия"',max_length=128,unique=True,verbose_name='Лейбл')),
('j_label_metadata',models.JSONField(blank=True,default=dict,help_text='JSON: страна лейбла, официальный сайт и т.д.',null=True,verbose_name='Метаданные')),
('s_label',models.CharField(help_text='Название лейбла. Например: "Sony Records" или "Мелодия"... Представление на самом сайте, с версткой, будет определиться через статью, связанную с лейблом (TbArticle).',max_length=128,unique=True,verbose_name='Лейбл')),
('j_label_metadata',models.JSONField(blank=True,default=dict,help_text='JSON: страна лейбла, официальный сайт и т.д. Включая список синонимов/вариантов названия для матчинга. Пример: <tt>{"SYNONYM": ["Island", "Island Records", "Vertigo France"]}</tt>.',null=True,verbose_name='Метаданные')),
('k_label_to_article',models.OneToOneField(blank=True,default=None,help_text='Связанная статья об лейбле (Типографированные заголовок, тизер и текст статьи. Так же через статью может быть получена картинка, seo атрибуты, слаг (обязательно) и т.п.)<br /><b>ОБЯЗАТЕЛЬНО УКАЗЫВАТЬ</b> т.к. через статью получаем слаг для URL лейбла.',null=True,on_delete=django.db.models.deletion.SET_NULL,related_name='article_to_label',to='frontend.tbarticle',verbose_name='Связанная статья')),
@@ -151,18 +101,52 @@ class Migration(migrations.Migration):
'ordering':('s_label',),
},
),
migrations.AddField(
model_name='tbarticle',
name='k_article_to_styles',
field=models.ManyToManyField(blank=True,db_index=True,help_text='Стили этой статьи/артиста/релиза (Rock, Jazz, Classical, ...)',related_name='style_to_article',to='frontend.tbmusicstyle',verbose_name='Музыкальные стили'),
('s_style_name',models.CharField(db_index=True,help_text='Основное название стиля. Например: "Rock", "Jazz", "Classical"',max_length=100,unique=True,verbose_name='Стиль (канонический)')),
('j_style_metadata',models.JSONField(blank=True,default=dict,help_text='В основном список синонимов/вариантов названия из Discogs, MusicBrainz и т.д. для матчинга. Пример: <tt>{"SYNONYM": ["rock", "Rock Music", "Rock & Roll", "Hard Rock"]}</tt>.',verbose_name='Метаданные')),
('k_style_to_article',models.OneToOneField(blank=True,default=None,help_text='Связанная статья о музыкальном стиле (Типографированные заголовок, тизер и текст статьи. Так же через статью может быть получена картинка, seo атрибуты, слаг (обязательно) и т.п.)<br /><b>ОБЯЗАТЕЛЬНО УКАЗЫВАТЬ</b> т.к. через статью получаем слаг для URL музыкального стиля.',null=True,on_delete=django.db.models.deletion.SET_NULL,related_name='article_to_style',to='frontend.tbarticle',verbose_name='Связанная статья')),
('s_item',models.CharField(help_text='Техническое название товара (альбома, релиза, аксессуара) для внутреннего использования,например: "Abbey Road (LP)" или "TDK CDing I (кассета для записи)".',max_length=128,unique=True,verbose_name='Товар')),
('s_item_date',models.CharField(blank=True,db_index=True,default='XXXX-XX-XX',help_text='Например: 1969-05-25, или 1969-05-XX (если день неизвестен), или 1969-XX-XX (если известен только год, или XXXX-XX-XX (если дата релиза неизвестна). Менее приоритетное поле для отображения даты релиза, чем t_release_date, так как может содержать неполную дату и/или текстовую информацию. Срабатывает только если t_release_date не указано.',max_length=10,null=True,verbose_name='Дата релиза (str)')),
('t_item_date',models.DateField(blank=True,db_index=True,help_text='Полная дата если известна, например: 1969-09-26. Если точно известен.',null=True,verbose_name='Дата релиза')),
('i_discogs_master_id',models.IntegerField(blank=True,default=None,help_text='Уникальный идентификатор мастер-релиза на Discogs, если он там есть. Например: <tt>306323</tt>',null=True,verbose_name='ID на мастер-релиз Discogs')),
('j_item_metadata',models.JSONField(blank=True,default=dict,help_text='Дополнительные данные и метаданные релиза (страна, жанр, количество треков и т.д.) или товавра в виде JSON-словаря. Сюда же включены варианты написания релиза в источниках',null=True,verbose_name='Дополнительные данные')),
('k_item_to_article',models.OneToOneField(blank=True,default=None,help_text='Связанная статья об альбоме/релизе/товаре (Типографированные заголовок, тизер и текст статьи. Так же через статью может быть получена картинка, seo атрибуты, слаг (обязательно) и т.п.)<br /><b>ОБЯЗАТЕЛЬНО УКАЗЫВАТЬ</b> т.к. через статью получаем слаг для URL альбома/релиза/товара.',null=True,on_delete=django.db.models.deletion.SET_NULL,related_name='article_to_item',to='frontend.tbarticle',verbose_name='Связанная статья')),
('k_item_to_artist',models.ManyToManyField(blank=True,db_index=True,help_text='Один или несколько для коллабораций',related_name='artist_to_item',to='frontend.tbartist',verbose_name='Исполнители')),
('k_item_to_style',models.ManyToManyField(blank=True,db_index=True,help_text='Один или несколько стилей, характеризующих альбом/товар. Например: Rock, Progressive Rock.',related_name='style_to_item',to='frontend.tbmusicstyle',verbose_name='Музыкальные стили')),
],
options={
'verbose_name':'Товар в каталоге (релиз, носитель, аксессуар)',
('s_offer',models.CharField(db_index=True,help_text='Техническое название оффера для внутреннего использования, например: "Abbey Road (LP) AnTrop NM/NM (МЗГ)" или "TDK CDing I 60 (б/у) VG/VG (Janan, 198x синяя-градиент)"',max_length=128,verbose_name='Название оффера')),
('l_offer_to_format',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>{"formats": {"lp": 2, "cd": 1},}</tt>',max_length=2,verbose_name='Формат')),
('s_offer_catalog_num',models.TextField(blank=True,default='',help_text='Например: "SD 16023" или "5099923452355"',verbose_name='Каталожный номер / Barcode')),
('d_offer_date_release',models.DateField(blank=True,default=None,help_text='Дата релиза, если она известна (например, дата выпуска переиздания)',null=True,verbose_name='Дата релиза')),
('b_offer_is_preorder',models.BooleanField(db_index=True,default=False,help_text='Если товар доступен только для предзаказа',verbose_name='Предзаказ')),
('d_offer_date_release',models.DateField(db_index=True,default=None,help_text='Дата релиза (например, дата выпуска переиздания) или выхода по предзаказу, если она известна',null=True,verbose_name='Дата релиза')),
('i_offer_discogs_id',models.IntegerField(blank=True,default=0,help_text='Уникальный идентификатор релиза на Discogs, если он там есть. Например: <tt>306323</tt>',verbose_name='ID на релиз Discogs')),
('l_offer_condition_media',models.CharField(choices=[('s','Still Sealed (новое, запечатано)'),('m','Mint (новое, распакованное)'),('nm','Near Mint (почти новое)'),('vg','Very Good (очень хорошее)'),('g','Good (хорошее)'),('f','Fair (удовлетворительное)'),('p','Poor (плохое)'),('??','Other')],default='s',help_text='Состояние носителя (пластинки, CD и т.п.) по шкале от "Still Sealed" (запечатано) до "Poor" (плохое).',max_length=2,verbose_name='Состояние носителя')),
('l_offer_condition_sleeve',models.CharField(choices=[('s','Still Sealed (новое, запечатано)'),('m','Mint (новое, распакованное)'),('nm','Near Mint (почти новое)'),('vg','Very Good (очень хорошее)'),('g','Good (хорошее)'),('f','Fair (удовлетворительное)'),('p','Poor (плохое)'),('??','Other')],default='s',help_text='Состояние обложки по шкале от "Still Sealed" (запечатано) до "Poor" (плохое).',max_length=2,verbose_name='Состояние обложки')),
@@ -176,7 +160,6 @@ class Migration(migrations.Migration):
('k_offer_to_article',models.ForeignKey(blank=True,default=None,help_text='Связанная статья об оффере (HTML-готовые заголовок, тизер и текст статьи). Так же через статью может быть получена картинка, seo атрибуты, слаг (обязательно) и т.п.)<br /><b>МОЖНО НЕ УКАЗЫВАТЬ</b> т.к. URL оффера (для корзины) формируется через id или хеш.',null=True,on_delete=django.db.models.deletion.SET_NULL,related_name='article_to_offer',to='frontend.tbarticle',verbose_name='Связанная статья')),
('k_offer_to_format',models.ManyToManyField(blank=True,db_index=True,help_text='Форматы носителей (пластинка, CD, кассета и т.п.). Можно выбрать несколько.',related_name='format_to_offer',to='frontend.tbformat',verbose_name='Форматы')),
('k_offer_to_image',models.ManyToManyField(blank=True,db_index=True,help_text='Картинки этого товара. Порядок определяется полем i_img_sort в ка��тинке.',related_name='image_to_offer',to='frontend.tbimage',verbose_name='Изображения')),
('k_offer_to_label',models.ForeignKey(default=None,help_text='Лейбл, на котором был выпущен релиз, если он известен. Например: <tt>Atlantic</tt> или <tt>Мелодия</tt>',null=True,on_delete=django.db.models.deletion.SET_NULL,related_name='label_to_offer',to='frontend.tblabel',verbose_name='Лейбл')),
@@ -208,6 +191,7 @@ class Migration(migrations.Migration):
('s_seller',models.CharField(help_text='Техническое название продавца или магазина. Например: <tt>Клюква Рекодс</tt>. Может совпадать с названием продавца, если лейбл сам реализует свои издания через сайт.',max_length=128,unique=True,verbose_name='Название продавца')),
('l_seller_currency',models.CharField(choices=[('rub','RUB: российский рубль'),('usd','USD: американский доллар'),('eur','EUR: евро'),('amd','AMD: армянских драм'),('try','TRY: турецкая лира'),('jpy','JPY: японская иена'),('gbp','GBP: британский фунт'),('cny','CNY: китайский юань'),('byn','BYN: белорусский рубль'),('ton','TON: криптовалюта TON'),('??','Other')],default='rub',help_text='В какой валюте указаны цены в этом источнике. Все офферы из этого источника будут в этой валюте.',max_length=3,verbose_name='Валюта источника')),
('j_seller_metadata',models.JSONField(blank=True,default=dict,help_text='Дополнительные данные о продавце в виде JSON-словаря. Телефон, email, адрес, ссылка на сайт и т.д.',null=True,verbose_name='Дополнительные данные')),
('l_source_currency',models.CharField(choices=[('rub','RUB: российский рубль'),('usd','USD: американский доллар'),('eur','EUR: евро'),('try','TRY: турецкая лира'),('amd','AMD: армянский драм'),('jpy','JPY: японская иена'),('gbp','GBP: британский фунт'),('cny','CNY: китайский юань'),('byn','BYN: белорусский рубль'),('ton','TON: криптовалюта TON'),('??','Other')],default='rub',help_text='В какой валюте указаны цены в этом источнике. Все офферы из этого источника будут в этой валюте.',max_length=3,verbose_name='Валюта источника')),
('s_source_name',models.CharField(blank=True,default='',help_text='Название источника данных (для удобства), например: <tt>Предзаказ на RSD-2025 от Полуэкта.</tt>',max_length=128,verbose_name='Название источника')),
('l_source_type',models.CharField(choices=[('excel','Excel-файл от продавца или издателя'),('csv','CSV-файл от продавца или издателя'),('url','URL страницы с данными (например, HTML-страница с каталогом товаров)'),('??','Другое')],default='excel',help_text='Тип источника данных, например: <tt>Excel-файл от продавца или издателя</tt>, <tt>URL страницы с данными</tt> и т.д.',max_length=5,verbose_name='Тип источника')),
('l_source_type',models.CharField(choices=[('excel','Excel-файл от продавца или издателя'),('csv','CSV-файл от продавца или издателя'),('url','URL страницы с данными (например, HTML-страница с каталогом товаров)'),('??','Другое (включая ручной ввод)')],default='excel',help_text='Тип источника данных, например: <tt>Excel-файл от продавца или издателя</tt>, <tt>URL страницы с данными</tt> и т.д.',max_length=5,verbose_name='Тип источника')),
('t_source_data',models.DateField(blank=True,default=datetime.date.today,help_text='Дата, к которой относятся данные в источнике. Например, если это исторический Excel-файл.',verbose_name='Дата данных')),
('s_source_url',models.TextField(blank=True,default='',help_text='URL страницы с данными, например, HTML-страница с каталогом товаров. Если данные в источнике представлены в виде файла, можно не указывать URL, а загрузить файл в поле выше.',max_length=255,verbose_name='URL источника')),
('j_source_metadata',models.JSONField(blank=True,default=dict,help_text='Дополнительные данные об источнике (внутреннем устройстве: вкладках и стоkбцах Excel-файла, структуре HTML-страницы и т.п.) в виде JSON-словаря',verbose_name='Дополнительные данные')),
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>{"formats": {"lp": 2, "cd": 1},}</tt>',max_length=2,verbose_name='Формат'),
),
migrations.AlterField(
model_name='tbimage',
name='f_img_confidence_score',
field=models.FloatField(blank=True,default=10.0,help_text='Уверенность (для автоматических данных) 0.0 - 10.0, насколько уверены, что это правильное изображение',null=True,verbose_name='Достоверность'),
),
migrations.AlterField(
model_name='tbimage',
name='i_img_sort',
field=models.IntegerField(db_index=True,default=0,help_text='Порядок отображения изображений. Чем меньше число, тем выше в списке. Можно использовать для указания обложки (0), задника (1) и т.д.',verbose_name='Сортировка'),
),
migrations.AlterField(
model_name='tbimage',
name='image',
field=filer.fields.image.FilerImageField(default=1,help_text='Файл изображения, загруженный через django_filer.',on_delete=django.db.models.deletion.DO_NOTHING,to=settings.FILER_IMAGE_MODEL,verbose_name='Файл изображения'),
preserve_default=False,
),
migrations.AlterField(
model_name='tbimage',
name='s_img_src_url',
field=models.URLField(blank=True,help_text='URL источника, если изображение взято (в том числе и парсером) из внешнего источника (например, Discogs)',null=True,verbose_name='URL'),
field=models.CharField(choices=[('rub','RUB: российский рубль'),('usd','USD: американский доллар'),('eur','EUR: евро'),('amd','AMD: армянских драм'),('try','TRY: турецкая лира'),('jpy','JPY: японская иена'),('gbp','GBP: британский фунт'),('cny','CNY: китайский юань'),('byn','BYN: белорусский рубль'),('ton','TON: криптовалюта TON'),('??','Other')],default='rub',help_text='В какой валюте указаны цены в этом источнике. Все офферы из этого источника будут в этой валюте.',max_length=3,verbose_name='Валюта источника'),
field=models.ManyToManyField(blank=True,db_index=True,help_text='Один или несколько стилей, характеризующих альбом/товар. Например: Rock, Progressive Rock.',related_name='style_to_item',to='frontend.tbmusicstyle',verbose_name='Музыкальные стили'),
),
migrations.AddField(
model_name='tbmusicstyle',
name='k_style_to_article',
field=models.OneToOneField(blank=True,default=None,help_text='Связанная статья о музыкальном стиле (Типографированные заголовок, тизер и текст статьи. Так же через статью может быть получена картинка, seo атрибуты, слаг (обязательно) и т.п.)<br /><b>ОБЯЗАТЕЛЬНО УКАЗЫВАТЬ</b> т.к. через статью получаем слаг для URL музыкального стиля.',null=True,on_delete=django.db.models.deletion.SET_NULL,related_name='article_to_style',to='frontend.tbarticle',verbose_name='Связанная статья'),
),
migrations.AlterField(
model_name='tbarticle',
name='l_article_type',
field=models.CharField(blank=True,choices=[('artist','Artis: артист, группа или бренд'),('style','Slyle: музыкальный стиль'),('item','Item: Альбом, релиз или товар (кассета, hifi, аксессуар)'),('offer','Offer: конкретное предложение от продавца'),('seller','Seller: продавец или магазин'),('blog','Новость или блог'),('action','Спецпредложение, акция, распродажа и т.д.'),('to_main','Текст/Блок для главной страницы'),('adv','Реклама или баннер'),('???','Другое')],db_index=True,default='???',max_length=7,verbose_name='Тип статьи'),
),
migrations.AlterField(
model_name='tbsource',
name='l_source_type',
field=models.CharField(choices=[('excel','Excel-файл от продавца или издателя'),('csv','CSV-файл от продавца или издателя'),('url','URL страницы с данными (например, HTML-страница с каталогом товаров)'),('??','Другое (включая ручной ввод)')],default='excel',help_text='Тип источника данных, например: <tt>Excel-файл от продавца или издателя</tt>, <tt>URL страницы с данными</tt> и т.д.',max_length=5,verbose_name='Тип источника'),
),
]
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.