create command for establishment tags
This commit is contained in:
parent
a0c52d8ef9
commit
58be2491a5
18
apps/news/migrations/0032_auto_20191030_1149.py
Normal file
18
apps/news/migrations/0032_auto_20191030_1149.py
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
# Generated by Django 2.2.4 on 2019-10-30 11:49
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('news', '0031_merge_20191029_0858'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='news',
|
||||
name='old_id',
|
||||
field=models.PositiveIntegerField(blank=True, default=None, null=True, verbose_name='old id'),
|
||||
),
|
||||
]
|
||||
|
|
@ -126,7 +126,7 @@ class News(BaseAttributes, TranslatedFieldsMixin):
|
|||
(PUBLISHED_EXCLUSIVE, _('Published exclusive')),
|
||||
)
|
||||
|
||||
old_id = models.PositiveIntegerField(_('odl id'), blank=True, null=True, default=None)
|
||||
old_id = models.PositiveIntegerField(_('old id'), blank=True, null=True, default=None)
|
||||
news_type = models.ForeignKey(NewsType, on_delete=models.PROTECT,
|
||||
verbose_name=_('news type'))
|
||||
title = TJSONField(blank=True, null=True, default=None,
|
||||
|
|
|
|||
0
apps/tag/management/__init__.py
Normal file
0
apps/tag/management/__init__.py
Normal file
0
apps/tag/management/commands/__init__.py
Normal file
0
apps/tag/management/commands/__init__.py
Normal file
62
apps/tag/management/commands/add_tags.py
Normal file
62
apps/tag/management/commands/add_tags.py
Normal file
|
|
@ -0,0 +1,62 @@
|
|||
from django.core.management.base import BaseCommand
|
||||
|
||||
from establishment.models import Establishment, EstablishmentType
|
||||
from transfer import models as legacy
|
||||
from tag.models import Tag, TagCategory
|
||||
|
||||
|
||||
class Command(BaseCommand):
|
||||
help = 'Add tags values from old db to new db'
|
||||
|
||||
def handle(self, *args, **kwargs):
|
||||
|
||||
categories = legacy.KeyValueMetadata.objects.all()
|
||||
existing_establishment = Establishment.objects.filter(old_id__isnull=False)
|
||||
for category in categories:
|
||||
ESTABLISHMENT = 1
|
||||
SHOP = 2
|
||||
RESTAURANT = 3
|
||||
WINEYARD = 4
|
||||
|
||||
MAPPER = {
|
||||
RESTAURANT: EstablishmentType.RESTAURANT,
|
||||
WINEYARD: EstablishmentType.PRODUCER,
|
||||
}
|
||||
|
||||
mapper_values_meta = legacy.KeyValueMetadatumKeyValueMetadatumEstablishments.objects.all()
|
||||
for key, value in MAPPER.items():
|
||||
values_meta_id_list = mapper_values_meta.filter(
|
||||
key_value_metadatum_establishment_id=key
|
||||
).values_list('key_value_metadatum_id')
|
||||
|
||||
est_type, _ = EstablishmentType.objects.get_or_create(index_name=value)
|
||||
|
||||
key_value_metadata = legacy.KeyValueMetadata.objects.filter(id__in=values_meta_id_list)
|
||||
|
||||
# create TagCategory
|
||||
for key_value in key_value_metadata:
|
||||
tag_category, created = TagCategory.objects.get_or_create(
|
||||
index_name=key_value.key_name,
|
||||
)
|
||||
|
||||
if created:
|
||||
tag_category.label = {'en-GB': key_value.key_name},
|
||||
tag_category.value_type = key_value.value_type
|
||||
tag_category.save()
|
||||
est_type.tag_categories.add(
|
||||
tag_category
|
||||
)
|
||||
|
||||
# create Tag
|
||||
for tag in key_value.metadata_set.filter(
|
||||
establishment__id__in=list(existing_establishment.values_list('old_id', flat=True))):
|
||||
|
||||
new_tag, _ = Tag.objects.get_or_create(
|
||||
label={'en-GB': tag.value},
|
||||
value=tag.value,
|
||||
category=tag_category,
|
||||
)
|
||||
est = existing_establishment.get(old_id=tag.establishment_id)
|
||||
est.tags.add(new_tag)
|
||||
est.save()
|
||||
|
||||
23
apps/tag/migrations/0006_auto_20191030_1151.py
Normal file
23
apps/tag/migrations/0006_auto_20191030_1151.py
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
# Generated by Django 2.2.4 on 2019-10-30 11:51
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('tag', '0005_tagcategory_name_indexing'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='tag',
|
||||
name='value',
|
||||
field=models.CharField(blank=True, default=None, max_length=255, null=True, unique=True, verbose_name='indexing name'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='tagcategory',
|
||||
name='value_type',
|
||||
field=models.CharField(choices=[('string', 'string'), ('list', 'list'), ('integer', 'integer')], default='list', max_length=255, verbose_name='value type'),
|
||||
),
|
||||
]
|
||||
18
apps/tag/migrations/0007_auto_20191030_1514.py
Normal file
18
apps/tag/migrations/0007_auto_20191030_1514.py
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
# Generated by Django 2.2.4 on 2019-10-30 15:14
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('tag', '0006_auto_20191030_1151'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='tag',
|
||||
name='value',
|
||||
field=models.CharField(blank=True, default=None, max_length=255, null=True, verbose_name='indexing name'),
|
||||
),
|
||||
]
|
||||
|
|
@ -19,6 +19,8 @@ class Tag(TranslatedFieldsMixin, models.Model):
|
|||
label = TJSONField(blank=True, null=True, default=None,
|
||||
verbose_name=_('label'),
|
||||
help_text='{"en-GB":"some text"}')
|
||||
value = models.CharField(_('indexing name'), max_length=255, blank=True,
|
||||
null=True, default=None)
|
||||
category = models.ForeignKey('TagCategory', on_delete=models.CASCADE,
|
||||
null=True, related_name='tags',
|
||||
verbose_name=_('Category'))
|
||||
|
|
@ -72,6 +74,16 @@ class TagCategoryQuerySet(models.QuerySet):
|
|||
class TagCategory(TranslatedFieldsMixin, models.Model):
|
||||
"""Tag base category model."""
|
||||
|
||||
STRING = 'string'
|
||||
LIST = 'list'
|
||||
INTEGER = 'integer'
|
||||
|
||||
VALUE_TYPE_CHOICES = (
|
||||
(STRING, _('string')),
|
||||
(LIST, _('list')),
|
||||
(INTEGER, _('integer')),
|
||||
)
|
||||
|
||||
label = TJSONField(blank=True, null=True, default=None,
|
||||
verbose_name=_('label'),
|
||||
help_text='{"en-GB":"some text"}')
|
||||
|
|
@ -80,7 +92,10 @@ class TagCategory(TranslatedFieldsMixin, models.Model):
|
|||
default=None)
|
||||
public = models.BooleanField(default=False)
|
||||
index_name = models.CharField(max_length=255, blank=True, null=True,
|
||||
verbose_name=_('indexing name'), unique=True)
|
||||
verbose_name=_('indexing name'), unique=True)
|
||||
|
||||
value_type = models.CharField(_('value type'), max_length=255,
|
||||
choices=VALUE_TYPE_CHOICES, default=LIST, )
|
||||
|
||||
objects = TagCategoryQuerySet.as_manager()
|
||||
|
||||
|
|
|
|||
|
|
@ -841,3 +841,57 @@ class Ads(MigrateMixin):
|
|||
class Meta:
|
||||
managed = False
|
||||
db_table = 'ads'
|
||||
|
||||
|
||||
class KeyValueMetadata(MigrateMixin):
|
||||
using = 'legacy'
|
||||
|
||||
key_name = models.CharField(max_length=255, blank=True, null=True)
|
||||
value_type = models.CharField(max_length=255, blank=True, null=True)
|
||||
value_list = models.TextField(blank=True, null=True)
|
||||
created_at = models.DateTimeField()
|
||||
updated_at = models.DateTimeField()
|
||||
public = models.IntegerField(blank=True, null=True)
|
||||
site_id = models.IntegerField(blank=True, null=True)
|
||||
|
||||
class Meta:
|
||||
managed = False
|
||||
db_table = 'key_value_metadata'
|
||||
|
||||
|
||||
class Metadata(MigrateMixin):
|
||||
using = 'legacy'
|
||||
|
||||
key = models.CharField(max_length=255, blank=True, null=True)
|
||||
value = models.CharField(max_length=255, blank=True, null=True)
|
||||
establishment = models.ForeignKey('transfer.Establishments', models.DO_NOTHING, blank=True, null=True)
|
||||
created_at = models.DateTimeField()
|
||||
updated_at = models.DateTimeField()
|
||||
key_value_metadatum = models.ForeignKey('transfer.KeyValueMetadata', models.DO_NOTHING, blank=True, null=True)
|
||||
|
||||
class Meta:
|
||||
managed = False
|
||||
db_table = 'metadata'
|
||||
|
||||
|
||||
class KeyValueMetadatumEstablishments(MigrateMixin):
|
||||
using = 'legacy'
|
||||
|
||||
name = models.CharField(max_length=255, blank=True, null=True)
|
||||
created_at = models.DateTimeField()
|
||||
updated_at = models.DateTimeField()
|
||||
|
||||
class Meta:
|
||||
managed = False
|
||||
db_table = 'key_value_metadatum_establishments'
|
||||
|
||||
|
||||
class KeyValueMetadatumKeyValueMetadatumEstablishments(MigrateMixin):
|
||||
using = 'legacy'
|
||||
|
||||
key_value_metadatum_id = models.IntegerField(blank=True, null=True)
|
||||
key_value_metadatum_establishment_id = models.IntegerField(blank=True, null=True)
|
||||
|
||||
class Meta:
|
||||
managed = False
|
||||
db_table = 'key_value_metadatum_key_value_metadatum_establishments'
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@ class NewsSerializer(serializers.ModelSerializer):
|
|||
state = serializers.CharField()
|
||||
country_code = serializers.CharField(allow_null=True)
|
||||
created_at = serializers.DateTimeField(source='start', format='%m-%d-%Y %H:%M:%S')
|
||||
summary = serializers.CharField(allow_null=True, allow_blank=True)
|
||||
|
||||
class Meta:
|
||||
model = News
|
||||
|
|
@ -29,6 +30,7 @@ class NewsSerializer(serializers.ModelSerializer):
|
|||
'news_type',
|
||||
'locale',
|
||||
'country_code',
|
||||
'summary'
|
||||
)
|
||||
|
||||
def validate(self, data):
|
||||
|
|
@ -38,7 +40,7 @@ class NewsSerializer(serializers.ModelSerializer):
|
|||
'template': self.get_template(data),
|
||||
'title': self.get_title(data),
|
||||
'description': self.get_description(data),
|
||||
'subtitle': self.get_description(data),
|
||||
'subtitle': self.get_subtitle(data),
|
||||
'country': self.get_country(data),
|
||||
})
|
||||
data.pop('country_code')
|
||||
|
|
@ -82,3 +84,10 @@ class NewsSerializer(serializers.ModelSerializer):
|
|||
if data['body']:
|
||||
content = parse_legacy_news_content(data['body'])
|
||||
return {data['locale']: content}
|
||||
|
||||
@staticmethod
|
||||
def get_subtitle(data):
|
||||
if 'summary' in data:
|
||||
content = data.pop('summary')
|
||||
if content:
|
||||
return {data['locale']: content}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user