migrate inquiries grid

This commit is contained in:
alex 2019-11-11 17:45:34 +03:00
parent 7106249d1e
commit d5799ca768
8 changed files with 102 additions and 24 deletions

View File

@ -0,0 +1,18 @@
# Generated by Django 2.2.4 on 2019-11-11 14:39
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('review', '0010_inquiries_published'),
]
operations = [
migrations.RenameField(
model_name='griditems',
old_name='decs',
new_name='desc',
),
]

View File

@ -0,0 +1,18 @@
# Generated by Django 2.2.4 on 2019-11-11 14:42
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('review', '0011_auto_20191111_1439'),
]
operations = [
migrations.AddField(
model_name='griditems',
name='old_id',
field=models.PositiveIntegerField(blank=True, default=None, null=True, verbose_name='old id'),
),
]

View File

@ -116,11 +116,12 @@ class Inquiries(ProjectBaseMixin):
class GridItems(ProjectBaseMixin):
old_id = models.PositiveIntegerField(_('old id'), blank=True, null=True, default=None)
inquiry = models.ForeignKey(Inquiries, verbose_name=_('inquiry'), on_delete=models.CASCADE, related_name='grids')
sub_name = models.CharField(_('sub name'), max_length=255, blank=True, null=True)
name = models.CharField(_('name'), max_length=255, blank=True, null=True)
value = models.FloatField(_('value'), blank=True, null=True)
decs = models.TextField(_('description'), blank=True, null=True)
desc = models.TextField(_('description'), blank=True, null=True)
dish_title = models.CharField(_('dish title'), max_length=255, blank=True, null=True)
class Meta:

View File

@ -1,11 +1,14 @@
import json
from pprint import pprint
from django.db.models import Q
from account.transfer_data import STOP_LIST
from transfer.models import Reviews, ReviewTexts, Inquiries
from review.models import Inquiries as NewInquiries, Review
from transfer.models import Reviews, ReviewTexts, Inquiries, GridItems
from transfer.serializers.grid import GridItemsSerializer
from transfer.serializers.inquiries import InquiriesSerializer
from transfer.serializers.reviews import LanguageSerializer, ReviewSerializer, Establishment
from pprint import pprint
import json
def transfer_languages():
@ -98,23 +101,11 @@ def transfer_reviews():
def transfer_inquiries():
# отфильтровать по review, account, establishment
# TODO: нужно ли переносить данные у которых нет привязки к аккаунту? .filter(account__isnull=False)
reviews = Review.objects.all().values_list('old_id', flat=True)
inquiries = Inquiries.objects.exclude(
Q(review__reviewer_id__lte=0) | # +
Q(review__reviewer_id__isnull=True) | # +
Q(review__mark__isnull=True) | # +
Q(review__reviewtexts__text__isnull=True) | # +
Q(review__reviewtexts__locale__isnull=True) | # +
Q(review__establishment__type__isnull=True) | # +
Q(review__establishment__type='Wineyard') | # +
Q(review__establishment__location__timezone__isnull=True) | # +
Q(review__establishment__location__isnull=True) | # +
Q(account__confirmed_at__isnull=True) | # +
Q(account__email__in=STOP_LIST) | # +
Q(review_id__in=(
47558, 43703, 89320, 92150, 90162, 113639, 92084, 96145, 92492, 92489, 92497, 116790, 116930, 114799))
)
Q(account__confirmed_at__isnull=True) |
Q(account__email__in=STOP_LIST)
).filter(review_id__in=list(reviews))
serialized_data = InquiriesSerializer(data=list(inquiries.values()), many=True)
if serialized_data.is_valid():
@ -123,10 +114,24 @@ def transfer_inquiries():
pprint(f"Inquiries serializer errors: {serialized_data.errors}")
def transfer_grid():
inquiries = NewInquiries.objects.all().values_list('old_id', flat=True)
grids = GridItems.objects.filter(inquiry_id__in=list(inquiries))
serialized_data = GridItemsSerializer(data=list(grids.values()), many=True)
if serialized_data.is_valid():
serialized_data.save()
else:
pprint(f"GridItems serializer errors: {serialized_data.errors}")
data_types = {
"overlook": [
transfer_languages,
transfer_reviews
],
'inquiries': [transfer_inquiries]
'inquiries': [
transfer_inquiries,
transfer_grid,
]
}

View File

@ -32,7 +32,6 @@ class Command(BaseCommand):
'inquiries', # №6 - перенос запросов оценок
'wine_characteristics',
'product',
'comment',
]
def handle(self, *args, **options):

View File

@ -1123,7 +1123,7 @@ class GridItems(MigrateMixin):
sub_item_name = models.CharField(max_length=255, blank=True, null=True)
item_name = models.CharField(max_length=255, blank=True, null=True)
value = models.FloatField(blank=True, null=True)
decs = models.TextField(blank=True, null=True)
desc = models.TextField(blank=True, null=True)
dish_title = models.CharField(max_length=255, blank=True, null=True)
class Meta:

View File

@ -0,0 +1,38 @@
from rest_framework import serializers
from review.models import Inquiries, GridItems
class GridItemsSerializer(serializers.Serializer):
id = serializers.IntegerField()
created_at = serializers.DateTimeField(format='%m-%d-%Y %H:%M:%S')
inquiry_id = serializers.IntegerField()
sub_item_name = serializers.CharField(allow_null=True, allow_blank=True)
item_name = serializers.CharField(allow_null=True, allow_blank=True)
value = serializers.FloatField(allow_null=True)
desc = serializers.CharField(allow_null=True, allow_blank=True)
dish_title = serializers.CharField(allow_null=True, allow_blank=True)
def validate(self, data):
data.update({
'old_id': data.pop('id'),
'created': data.pop('created_at'),
'sub_name': data.pop('sub_item_name'),
'name': data.pop('item_name'),
'inquiry': self.get_inquiry(data),
})
data.pop('inquiry_id')
return data
def create(self, validated_data):
try:
return GridItems.objects.create(**validated_data)
except Exception as e:
raise ValueError(f"Error creating GridItems with {validated_data}: {e}")
@staticmethod
def get_inquiry(data):
inquiry = Inquiries.objects.filter(old_id=data['inquiry_id']).first()
if not inquiry:
raise ValueError(f"Inquiries not found with old_id {data['inquiry_id']}")
return inquiry

View File

@ -12,7 +12,6 @@ services:
MYSQL_PASSWORD: octosecret123
MYSQL_ROOT_PASSWORD: rootPassword
volumes:
- .:/code
- gm-mysql_db:/var/lib/mysql