migrate inquiries grid
This commit is contained in:
parent
7106249d1e
commit
d5799ca768
18
apps/review/migrations/0011_auto_20191111_1439.py
Normal file
18
apps/review/migrations/0011_auto_20191111_1439.py
Normal 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',
|
||||||
|
),
|
||||||
|
]
|
||||||
18
apps/review/migrations/0012_griditems_old_id.py
Normal file
18
apps/review/migrations/0012_griditems_old_id.py
Normal 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'),
|
||||||
|
),
|
||||||
|
]
|
||||||
|
|
@ -116,11 +116,12 @@ class Inquiries(ProjectBaseMixin):
|
||||||
|
|
||||||
|
|
||||||
class GridItems(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')
|
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)
|
sub_name = models.CharField(_('sub name'), max_length=255, blank=True, null=True)
|
||||||
name = models.CharField(_('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)
|
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)
|
dish_title = models.CharField(_('dish title'), max_length=255, blank=True, null=True)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,14 @@
|
||||||
|
import json
|
||||||
|
from pprint import pprint
|
||||||
|
|
||||||
from django.db.models import Q
|
from django.db.models import Q
|
||||||
|
|
||||||
from account.transfer_data import STOP_LIST
|
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.inquiries import InquiriesSerializer
|
||||||
from transfer.serializers.reviews import LanguageSerializer, ReviewSerializer, Establishment
|
from transfer.serializers.reviews import LanguageSerializer, ReviewSerializer, Establishment
|
||||||
from pprint import pprint
|
|
||||||
import json
|
|
||||||
|
|
||||||
|
|
||||||
def transfer_languages():
|
def transfer_languages():
|
||||||
|
|
@ -98,23 +101,11 @@ def transfer_reviews():
|
||||||
|
|
||||||
|
|
||||||
def transfer_inquiries():
|
def transfer_inquiries():
|
||||||
# отфильтровать по review, account, establishment
|
reviews = Review.objects.all().values_list('old_id', flat=True)
|
||||||
# TODO: нужно ли переносить данные у которых нет привязки к аккаунту? .filter(account__isnull=False)
|
|
||||||
inquiries = Inquiries.objects.exclude(
|
inquiries = Inquiries.objects.exclude(
|
||||||
Q(review__reviewer_id__lte=0) | # +
|
Q(account__confirmed_at__isnull=True) |
|
||||||
Q(review__reviewer_id__isnull=True) | # +
|
Q(account__email__in=STOP_LIST)
|
||||||
Q(review__mark__isnull=True) | # +
|
).filter(review_id__in=list(reviews))
|
||||||
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))
|
|
||||||
)
|
|
||||||
|
|
||||||
serialized_data = InquiriesSerializer(data=list(inquiries.values()), many=True)
|
serialized_data = InquiriesSerializer(data=list(inquiries.values()), many=True)
|
||||||
if serialized_data.is_valid():
|
if serialized_data.is_valid():
|
||||||
|
|
@ -123,10 +114,24 @@ def transfer_inquiries():
|
||||||
pprint(f"Inquiries serializer errors: {serialized_data.errors}")
|
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 = {
|
data_types = {
|
||||||
"overlook": [
|
"overlook": [
|
||||||
transfer_languages,
|
transfer_languages,
|
||||||
transfer_reviews
|
transfer_reviews
|
||||||
],
|
],
|
||||||
'inquiries': [transfer_inquiries]
|
'inquiries': [
|
||||||
|
transfer_inquiries,
|
||||||
|
transfer_grid,
|
||||||
|
]
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -32,7 +32,6 @@ class Command(BaseCommand):
|
||||||
'inquiries', # №6 - перенос запросов оценок
|
'inquiries', # №6 - перенос запросов оценок
|
||||||
'wine_characteristics',
|
'wine_characteristics',
|
||||||
'product',
|
'product',
|
||||||
'comment',
|
|
||||||
]
|
]
|
||||||
|
|
||||||
def handle(self, *args, **options):
|
def handle(self, *args, **options):
|
||||||
|
|
|
||||||
|
|
@ -1123,7 +1123,7 @@ class GridItems(MigrateMixin):
|
||||||
sub_item_name = models.CharField(max_length=255, blank=True, null=True)
|
sub_item_name = models.CharField(max_length=255, blank=True, null=True)
|
||||||
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)
|
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)
|
dish_title = models.CharField(max_length=255, blank=True, null=True)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
|
|
|
||||||
38
apps/transfer/serializers/grid.py
Normal file
38
apps/transfer/serializers/grid.py
Normal 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
|
||||||
|
|
@ -12,7 +12,6 @@ services:
|
||||||
MYSQL_PASSWORD: octosecret123
|
MYSQL_PASSWORD: octosecret123
|
||||||
MYSQL_ROOT_PASSWORD: rootPassword
|
MYSQL_ROOT_PASSWORD: rootPassword
|
||||||
volumes:
|
volumes:
|
||||||
- .:/code
|
|
||||||
- gm-mysql_db:/var/lib/mysql
|
- gm-mysql_db:/var/lib/mysql
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user