Add clean db setup
This commit is contained in:
parent
6ef0e7adfe
commit
eb514c0ce2
|
|
@ -193,18 +193,23 @@ def update_flags():
|
||||||
query.save()
|
query.save()
|
||||||
|
|
||||||
|
|
||||||
def migrate_city_map_situation():
|
def migrate_city_map_situation(get_exists_cities=False):
|
||||||
queryset = transfer_models.Cities.objects.raw("""SELECT cities.id, cities.map1, cities.map2, cities.map_ref, cities.situation
|
if get_exists_cities:
|
||||||
FROM cities WHERE
|
ids = City.objects.values_list('mysql_id', flat=True)
|
||||||
region_code IS NOT NULL AND
|
queryset = transfer_models.Cities.objects.filter(id__in=list(ids))
|
||||||
region_code != "" AND
|
queryset = list(queryset.values())
|
||||||
country_code_2 IS NOT NULL AND
|
else:
|
||||||
country_code_2 != ""
|
queryset = transfer_models.Cities.objects.raw("""SELECT cities.id, cities.map1, cities.map2, cities.map_ref, cities.situation
|
||||||
""")
|
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]
|
queryset = [vars(query) for query in queryset]
|
||||||
|
|
||||||
serialized_data = location_serializers.CityMapSerializer(data=queryset, many=True)
|
serialized_data = location_serializers.CityMapCorrectSerializer(data=queryset, many=True)
|
||||||
if serialized_data.is_valid():
|
if serialized_data.is_valid():
|
||||||
serialized_data.save()
|
serialized_data.save()
|
||||||
else:
|
else:
|
||||||
|
|
@ -699,12 +704,36 @@ def add_fake_country():
|
||||||
region.save()
|
region.save()
|
||||||
|
|
||||||
|
|
||||||
|
@atomic
|
||||||
|
def setup_clean_db():
|
||||||
|
try:
|
||||||
|
ruby_data_file = open(f"{settings.PROJECT_ROOT}/apps/location/ruby_data.py", "r")
|
||||||
|
ruby_data = json.loads(ruby_data_file.read())
|
||||||
|
except FileNotFoundError:
|
||||||
|
ruby_data = get_ruby_data()
|
||||||
|
|
||||||
|
print('add_correct_location_models')
|
||||||
|
add_correct_location_models(ruby_data)
|
||||||
|
|
||||||
|
print('add_fake_country')
|
||||||
|
add_fake_country()
|
||||||
|
|
||||||
|
print('migrate_city_map_situation')
|
||||||
|
migrate_city_map_situation(True)
|
||||||
|
|
||||||
|
print('update_flags')
|
||||||
|
update_flags()
|
||||||
|
|
||||||
|
print('transfer_city_gallery')
|
||||||
|
transfer_city_gallery()
|
||||||
|
|
||||||
|
|
||||||
data_types = {
|
data_types = {
|
||||||
"dictionaries": [
|
"dictionaries": [
|
||||||
transfer_countries,
|
# transfer_countries,
|
||||||
transfer_regions,
|
# transfer_regions,
|
||||||
transfer_cities,
|
# transfer_cities,
|
||||||
transfer_addresses,
|
# transfer_addresses,
|
||||||
transfer_wine_region,
|
transfer_wine_region,
|
||||||
transfer_wine_sub_region,
|
transfer_wine_sub_region,
|
||||||
transfer_wine_village,
|
transfer_wine_village,
|
||||||
|
|
@ -730,4 +759,6 @@ data_types = {
|
||||||
"add_fake_country": [
|
"add_fake_country": [
|
||||||
add_fake_country
|
add_fake_country
|
||||||
],
|
],
|
||||||
|
|
||||||
|
"setup_clean_db": [setup_clean_db],
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -53,7 +53,8 @@ class Command(BaseCommand):
|
||||||
'migrate_city_gallery',
|
'migrate_city_gallery',
|
||||||
'fix_location',
|
'fix_location',
|
||||||
'remove_old_locations',
|
'remove_old_locations',
|
||||||
'add_fake_country'
|
'add_fake_country',
|
||||||
|
'setup_clean_db'
|
||||||
]
|
]
|
||||||
|
|
||||||
def handle(self, *args, **options):
|
def handle(self, *args, **options):
|
||||||
|
|
|
||||||
|
|
@ -405,6 +405,27 @@ class CityMapSerializer(serializers.ModelSerializer):
|
||||||
return data
|
return data
|
||||||
|
|
||||||
|
|
||||||
|
class CityMapCorrectSerializer(CityMapSerializer):
|
||||||
|
def set_city(self, data):
|
||||||
|
try:
|
||||||
|
city = models.City.objects.get(mysql_id=data['old_id'])
|
||||||
|
except models.City.DoesNotExist as e:
|
||||||
|
raise ValueError(f"Cannot find city with id = {data['old_id']}: {e}")
|
||||||
|
except MultipleObjectsReturned as e:
|
||||||
|
raise ValueError(f"Find multiple cities with id = {data['old_id']}: {e}")
|
||||||
|
|
||||||
|
data['city'] = city
|
||||||
|
return data
|
||||||
|
|
||||||
|
def create(self, validated_data):
|
||||||
|
city = validated_data.pop('city')
|
||||||
|
city.map1=validated_data['map1'],
|
||||||
|
city.map2=validated_data['map2'],
|
||||||
|
city.map_ref=validated_data['map_ref'],
|
||||||
|
city.situation=validated_data['situation']
|
||||||
|
city.save()
|
||||||
|
|
||||||
|
|
||||||
class CityGallerySerializer(serializers.ModelSerializer):
|
class CityGallerySerializer(serializers.ModelSerializer):
|
||||||
id = serializers.IntegerField()
|
id = serializers.IntegerField()
|
||||||
city_id = serializers.IntegerField()
|
city_id = serializers.IntegerField()
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user