diff --git a/apps/establishment/management/commands/rm_old_establishments.py b/apps/establishment/management/commands/rm_old_establishments.py new file mode 100644 index 00000000..ec9fbbaa --- /dev/null +++ b/apps/establishment/management/commands/rm_old_establishments.py @@ -0,0 +1,13 @@ +from django.core.management.base import BaseCommand + +from establishment.models import Establishment + + +class Command(BaseCommand): + help = 'Remove old establishments from new bd' + + def handle(self, *args, **kwargs): + old_establishments = Establishment.objects.exclude(old_id__isnull=True) + count = old_establishments.count() + old_establishments.delete() + self.stdout.write(self.style.WARNING(f'Deleted {count} objects.')) diff --git a/apps/establishment/transfer_data.py b/apps/establishment/transfer_data.py index 3005e6c4..9911d8f5 100644 --- a/apps/establishment/transfer_data.py +++ b/apps/establishment/transfer_data.py @@ -10,7 +10,9 @@ from transfer.serializers.plate import PlateSerializer def transfer_establishment(): result = [] - old_establishments = Establishments.objects.exclude( + old_establishments = Establishments.objects.filter( + location__city__name__icontains='paris', + ).exclude( Q(type='Wineyard') | Q(location__timezone__isnull=True) ).prefetch_related( @@ -18,6 +20,7 @@ def transfer_establishment(): 'schedules_set', 'descriptions_set', ) + for item in old_establishments: data = { 'old_id': item.id, diff --git a/apps/news/admin.py b/apps/news/admin.py index 91fb284c..fa2aca8b 100644 --- a/apps/news/admin.py +++ b/apps/news/admin.py @@ -28,6 +28,7 @@ class NewsAdmin(admin.ModelAdmin): """News admin.""" raw_id_fields = ('address',) actions = [send_email_action] + raw_id_fields = ('news_type', 'address', 'country') @admin.register(models.NewsGallery) diff --git a/apps/news/management/__init__.py b/apps/news/management/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/apps/news/management/commands/__init__.py b/apps/news/management/commands/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/apps/news/management/commands/rm_all_news.py b/apps/news/management/commands/rm_all_news.py new file mode 100644 index 00000000..6b27199e --- /dev/null +++ b/apps/news/management/commands/rm_all_news.py @@ -0,0 +1,13 @@ +from django.core.management.base import BaseCommand + +from news.models import News + + +class Command(BaseCommand): + help = 'Remove all news from new bd' + + def handle(self, *args, **kwargs): + old_news = News.objects.all() + count = old_news.count() + old_news.delete() + self.stdout.write(self.style.WARNING(f'Deleted {count} objects.')) diff --git a/apps/news/management/commands/rm_old_news.py b/apps/news/management/commands/rm_old_news.py new file mode 100644 index 00000000..cbcf0f6a --- /dev/null +++ b/apps/news/management/commands/rm_old_news.py @@ -0,0 +1,13 @@ +from django.core.management.base import BaseCommand + +from news.models import News + + +class Command(BaseCommand): + help = 'Remove old news from new bd' + + def handle(self, *args, **kwargs): + old_news = News.objects.exclude(old_id__isnull=True) + count = old_news.count() + old_news.delete() + self.stdout.write(self.style.WARNING(f'Deleted {count} objects.')) diff --git a/apps/news/migrations/0030_news_old_id.py b/apps/news/migrations/0030_news_old_id.py new file mode 100644 index 00000000..038e5e35 --- /dev/null +++ b/apps/news/migrations/0030_news_old_id.py @@ -0,0 +1,18 @@ +# Generated by Django 2.2.4 on 2019-10-29 08:35 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('news', '0029_merge_20191025_0906'), + ] + + operations = [ + migrations.AddField( + model_name='news', + name='old_id', + field=models.PositiveIntegerField(blank=True, default=None, null=True, verbose_name='odl id'), + ), + ] diff --git a/apps/news/migrations/0031_merge_20191029_0858.py b/apps/news/migrations/0031_merge_20191029_0858.py new file mode 100644 index 00000000..6f00fcf0 --- /dev/null +++ b/apps/news/migrations/0031_merge_20191029_0858.py @@ -0,0 +1,14 @@ +# Generated by Django 2.2.4 on 2019-10-29 08:58 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('news', '0030_news_old_id'), + ('news', '0030_merge_20191028_0725'), + ] + + operations = [ + ] diff --git a/apps/news/models.py b/apps/news/models.py index 306e4906..f0caa13c 100644 --- a/apps/news/models.py +++ b/apps/news/models.py @@ -126,6 +126,7 @@ class News(BaseAttributes, TranslatedFieldsMixin): (PUBLISHED_EXCLUSIVE, _('Published exclusive')), ) + old_id = models.PositiveIntegerField(_('odl 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, diff --git a/apps/news/transfer_data.py b/apps/news/transfer_data.py index d46c7613..791b54ce 100644 --- a/apps/news/transfer_data.py +++ b/apps/news/transfer_data.py @@ -12,6 +12,7 @@ def transfer_news(): queryset = PageTexts.objects.filter(page__type="News").annotate( news_type=Value(news_type.id, output_field=IntegerField()), + country_code=F('page__site__country_code_2'), ) queryset = queryset.annotate(template=F('page__template')) diff --git a/apps/transfer/models.py b/apps/transfer/models.py index e9d7b1e6..c431c504 100644 --- a/apps/transfer/models.py +++ b/apps/transfer/models.py @@ -751,7 +751,7 @@ class Pages(MigrateMixin): using = 'legacy' root_title = models.CharField(max_length=255, blank=True, null=True) - site_id = models.IntegerField() + site = models.ForeignKey(Sites, models.DO_NOTHING, blank=True, null=True) account_id = models.IntegerField(blank=True, null=True) state = models.CharField(max_length=255, blank=True, null=True) template = models.CharField(max_length=255, blank=True, null=True) diff --git a/apps/transfer/serializers/news.py b/apps/transfer/serializers/news.py index e46c5b4a..c0ed6f79 100644 --- a/apps/transfer/serializers/news.py +++ b/apps/transfer/serializers/news.py @@ -1,5 +1,6 @@ from rest_framework import serializers +from location.models import Country from news.models import News from utils.legacy_parser import parse_legacy_news_content from utils.slug_generator import generate_unique_slug @@ -12,11 +13,13 @@ class NewsSerializer(serializers.ModelSerializer): title = serializers.CharField() template = serializers.CharField() state = serializers.CharField() + country_code = serializers.CharField(allow_null=True) created_at = serializers.DateTimeField(source='start', format='%m-%d-%Y %H:%M:%S') class Meta: model = News fields = ( + 'old_id', 'created_at', 'state', 'template', @@ -25,6 +28,7 @@ class NewsSerializer(serializers.ModelSerializer): 'slug', 'news_type', 'locale', + 'country_code', ) def validate(self, data): @@ -34,7 +38,9 @@ class NewsSerializer(serializers.ModelSerializer): 'template': self.get_template(data), 'title': self.get_title(data), 'description': self.get_description(data), + 'country': self.get_country(data), }) + data.pop('country_code') data.pop('body') data.pop('locale') return data @@ -42,6 +48,10 @@ class NewsSerializer(serializers.ModelSerializer): def create(self, validated_data): return News.objects.create(**validated_data) + @staticmethod + def get_country(data): + return Country.objects.filter(code__iexact=data['country_code']).first() + @staticmethod def get_template(data): templates = {