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')),
|
(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,
|
news_type = models.ForeignKey(NewsType, on_delete=models.PROTECT,
|
||||||
verbose_name=_('news type'))
|
verbose_name=_('news type'))
|
||||||
title = TJSONField(blank=True, null=True, default=None,
|
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,
|
label = TJSONField(blank=True, null=True, default=None,
|
||||||
verbose_name=_('label'),
|
verbose_name=_('label'),
|
||||||
help_text='{"en-GB":"some text"}')
|
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,
|
category = models.ForeignKey('TagCategory', on_delete=models.CASCADE,
|
||||||
null=True, related_name='tags',
|
null=True, related_name='tags',
|
||||||
verbose_name=_('Category'))
|
verbose_name=_('Category'))
|
||||||
|
|
@ -72,6 +74,16 @@ class TagCategoryQuerySet(models.QuerySet):
|
||||||
class TagCategory(TranslatedFieldsMixin, models.Model):
|
class TagCategory(TranslatedFieldsMixin, models.Model):
|
||||||
"""Tag base category 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,
|
label = TJSONField(blank=True, null=True, default=None,
|
||||||
verbose_name=_('label'),
|
verbose_name=_('label'),
|
||||||
help_text='{"en-GB":"some text"}')
|
help_text='{"en-GB":"some text"}')
|
||||||
|
|
@ -80,7 +92,10 @@ class TagCategory(TranslatedFieldsMixin, models.Model):
|
||||||
default=None)
|
default=None)
|
||||||
public = models.BooleanField(default=False)
|
public = models.BooleanField(default=False)
|
||||||
index_name = models.CharField(max_length=255, blank=True, null=True,
|
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()
|
objects = TagCategoryQuerySet.as_manager()
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -841,3 +841,57 @@ class Ads(MigrateMixin):
|
||||||
class Meta:
|
class Meta:
|
||||||
managed = False
|
managed = False
|
||||||
db_table = 'ads'
|
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()
|
state = serializers.CharField()
|
||||||
country_code = serializers.CharField(allow_null=True)
|
country_code = serializers.CharField(allow_null=True)
|
||||||
created_at = serializers.DateTimeField(source='start', format='%m-%d-%Y %H:%M:%S')
|
created_at = serializers.DateTimeField(source='start', format='%m-%d-%Y %H:%M:%S')
|
||||||
|
summary = serializers.CharField(allow_null=True, allow_blank=True)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = News
|
model = News
|
||||||
|
|
@ -29,6 +30,7 @@ class NewsSerializer(serializers.ModelSerializer):
|
||||||
'news_type',
|
'news_type',
|
||||||
'locale',
|
'locale',
|
||||||
'country_code',
|
'country_code',
|
||||||
|
'summary'
|
||||||
)
|
)
|
||||||
|
|
||||||
def validate(self, data):
|
def validate(self, data):
|
||||||
|
|
@ -38,7 +40,7 @@ class NewsSerializer(serializers.ModelSerializer):
|
||||||
'template': self.get_template(data),
|
'template': self.get_template(data),
|
||||||
'title': self.get_title(data),
|
'title': self.get_title(data),
|
||||||
'description': self.get_description(data),
|
'description': self.get_description(data),
|
||||||
'subtitle': self.get_description(data),
|
'subtitle': self.get_subtitle(data),
|
||||||
'country': self.get_country(data),
|
'country': self.get_country(data),
|
||||||
})
|
})
|
||||||
data.pop('country_code')
|
data.pop('country_code')
|
||||||
|
|
@ -82,3 +84,10 @@ class NewsSerializer(serializers.ModelSerializer):
|
||||||
if data['body']:
|
if data['body']:
|
||||||
content = parse_legacy_news_content(data['body'])
|
content = parse_legacy_news_content(data['body'])
|
||||||
return {data['locale']: content}
|
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