fix transfer location

This commit is contained in:
Anatoly 2020-01-15 16:46:03 +03:00
parent 21978639bd
commit 59c9c06d64
3 changed files with 6 additions and 78 deletions

View File

@ -10,7 +10,7 @@ from tqdm import tqdm
from account.models import Role
from collection.models import Collection
from gallery.models import Image
from location.models import Country, Region, City, Address, CityGallery
from location.models import Country, Region, City, Address
from main.models import AwardType
from news.models import News
from review.models import Review
@ -218,29 +218,6 @@ def migrate_city_map_situation(get_exists_cities=False):
pprint(f"City info serializer errors: {serialized_data.errors}")
def migrate_city_photos():
queryset = transfer_models.CityPhotos.objects.raw("""SELECT city_photos.id, city_photos.city_id, city_photos.attachment_file_name
FROM city_photos WHERE
city_photos.attachment_file_name IS NOT NULL AND
city_id IN(
SELECT cities.id
FROM cities WHERE
region_code IS NOT NULL AND
region_code != "" AND
country_code_2 IS NOT NULL AND
country_code_2 != ""
)
""")
queryset = [vars(query) for query in queryset]
serialized_data = location_serializers.CityGallerySerializer(data=queryset, many=True)
if serialized_data.is_valid():
serialized_data.save()
else:
pprint(f"Address serializer errors: {serialized_data.errors}")
# Update location models with ruby library
# Utils functions defined before transfer functions
def get_ruby_socket(params):
@ -554,7 +531,7 @@ def remove_old_records():
clean_old_region_records(Region, {"mysql_ids__isnull": True})
def transfer_city_gallery():
def transfer_city_photos():
created_counter = 0
cities_not_exists = {}
cities_has_same_image = 0
@ -757,8 +734,8 @@ def setup_clean_db():
print('update_flags')
update_flags()
print('transfer_city_gallery')
transfer_city_gallery()
print('transfer_city_photos')
transfer_city_photos()
def set_unused_regions():
@ -811,9 +788,6 @@ data_types = {
"update_city_info": [
migrate_city_map_situation
],
"migrate_city_gallery": [
migrate_city_photos
],
"fix_location": [
add_fake_country,
fix_location_models,
@ -821,8 +795,8 @@ data_types = {
"remove_old_locations": [
remove_old_records
],
"fill_city_gallery": [
transfer_city_gallery,
"migrate_city_photos": [
transfer_city_photos,
],
"add_fake_country": [
add_fake_country,

View File

@ -40,7 +40,6 @@ class Command(BaseCommand):
'product_review',
'newsletter_subscriber', # подписчики на рассылку - переносить после переноса пользователей №1
'purchased_plaques', # №6 - перенос купленных тарелок
'fill_city_gallery', # №3 - перенос галереи городов
'guides',
'guide_filters',
'guide_element_sections',
@ -51,7 +50,6 @@ class Command(BaseCommand):
'guide_element_label_photo',
'guide_complete',
'update_city_info',
'migrate_city_gallery',
'fix_location',
'remove_old_locations',
'add_fake_country',

View File

@ -431,50 +431,6 @@ class CityMapCorrectSerializer(CityMapSerializer):
city.save()
class CityGallerySerializer(serializers.ModelSerializer):
id = serializers.IntegerField()
city_id = serializers.IntegerField()
attachment_file_name = serializers.CharField()
class Meta:
model = models.CityGallery
fields = ("id", "city_id", "attachment_file_name")
def validate(self, data):
data = self.set_old_id(data)
data = self.set_gallery(data)
data = self.set_city(data)
return data
def create(self, validated_data):
return models.CityGallery.objects.create(**validated_data)
def set_old_id(self, data):
data['old_id'] = data.pop('id')
return data
def set_gallery(self, data):
link_prefix = "city_photos/00baf486523f62cdf131fa1b19c5df2bf21fc9f8/"
try:
data['image'] = Image.objects.create(
image=f"{link_prefix}{data['attachment_file_name']}"
)
except Exception as e:
raise ValueError(f"Cannot create image with {data}: {e}")
del(data['attachment_file_name'])
return data
def set_city(self, data):
try:
data['city'] = models.City.objects.get(old_id=data.pop('city_id'))
except models.City.DoesNotExist as e:
raise ValueError(f"Cannot get city with {data}: {e}")
except MultipleObjectsReturned as e:
raise ValueError(f"Multiple cities find with {data}: {e}")
return data
class CepageWineRegionSerializer(TransferSerializerMixin):
CATEGORY_LABEL = 'Cepage'