Add clean db setup
This commit is contained in:
parent
6ef0e7adfe
commit
eb514c0ce2
|
|
@ -193,18 +193,23 @@ def update_flags():
|
|||
query.save()
|
||||
|
||||
|
||||
def migrate_city_map_situation():
|
||||
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 != ""
|
||||
""")
|
||||
def migrate_city_map_situation(get_exists_cities=False):
|
||||
if get_exists_cities:
|
||||
ids = City.objects.values_list('mysql_id', flat=True)
|
||||
queryset = transfer_models.Cities.objects.filter(id__in=list(ids))
|
||||
queryset = list(queryset.values())
|
||||
else:
|
||||
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():
|
||||
serialized_data.save()
|
||||
else:
|
||||
|
|
@ -699,12 +704,36 @@ def add_fake_country():
|
|||
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 = {
|
||||
"dictionaries": [
|
||||
transfer_countries,
|
||||
transfer_regions,
|
||||
transfer_cities,
|
||||
transfer_addresses,
|
||||
# transfer_countries,
|
||||
# transfer_regions,
|
||||
# transfer_cities,
|
||||
# transfer_addresses,
|
||||
transfer_wine_region,
|
||||
transfer_wine_sub_region,
|
||||
transfer_wine_village,
|
||||
|
|
@ -730,4 +759,6 @@ data_types = {
|
|||
"add_fake_country": [
|
||||
add_fake_country
|
||||
],
|
||||
|
||||
"setup_clean_db": [setup_clean_db],
|
||||
}
|
||||
|
|
|
|||
|
|
@ -53,7 +53,8 @@ class Command(BaseCommand):
|
|||
'migrate_city_gallery',
|
||||
'fix_location',
|
||||
'remove_old_locations',
|
||||
'add_fake_country'
|
||||
'add_fake_country',
|
||||
'setup_clean_db'
|
||||
]
|
||||
|
||||
def handle(self, *args, **options):
|
||||
|
|
|
|||
|
|
@ -405,6 +405,27 @@ class CityMapSerializer(serializers.ModelSerializer):
|
|||
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):
|
||||
id = serializers.IntegerField()
|
||||
city_id = serializers.IntegerField()
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user