Fix and add city transfer
This commit is contained in:
parent
255b1ad5f1
commit
25d58a8bc5
|
|
@ -79,7 +79,6 @@ class City(models.Model):
|
||||||
|
|
||||||
is_island = models.BooleanField(_('is island'), default=False)
|
is_island = models.BooleanField(_('is island'), default=False)
|
||||||
old_id = models.IntegerField(null=True, blank=True, default=None)
|
old_id = models.IntegerField(null=True, blank=True, default=None)
|
||||||
|
|
||||||
objects = CityQuerySet.as_manager()
|
objects = CityQuerySet.as_manager()
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
|
|
|
||||||
|
|
@ -71,16 +71,20 @@ def transfer_regions():
|
||||||
|
|
||||||
|
|
||||||
def transfer_cities():
|
def transfer_cities():
|
||||||
queryset = Cities.objects.exclude(Q(region_code__isnull=True) |
|
queryset = Cities.objects.raw("""SELECT cities.id, cities.name, cities.country_code_2, cities.zip_code,
|
||||||
Q(country_code_2__isnull=True) |
|
cities.is_island, cities.region_code, cities.subregion_code
|
||||||
Q(region_code="") |
|
FROM cities WHERE
|
||||||
Q(country_code_2="")).only("id", "name", "region_code",
|
region_code IS NOT NULL AND
|
||||||
"country_code_2", "zip_code", "is_island").distinct()
|
region_code != "" AND
|
||||||
|
country_code_2 IS NOT NULL AND
|
||||||
|
country_code_2 != ""
|
||||||
|
""")
|
||||||
|
|
||||||
serialized_data = CitySerializer(data=list(queryset.values()), many=True)
|
queryset = [vars(query) for query in queryset]
|
||||||
|
|
||||||
|
serialized_data = CitySerializer(data=queryset, many=True)
|
||||||
if serialized_data.is_valid():
|
if serialized_data.is_valid():
|
||||||
# serialized_data.save()
|
serialized_data.save()
|
||||||
print(serialized_data.validated_data)
|
|
||||||
else:
|
else:
|
||||||
pprint(f"City serializer errors: {serialized_data.errors}")
|
pprint(f"City serializer errors: {serialized_data.errors}")
|
||||||
|
|
||||||
|
|
@ -88,9 +92,9 @@ def transfer_cities():
|
||||||
data_types = {
|
data_types = {
|
||||||
"dictionaries": [
|
"dictionaries": [
|
||||||
transfer_countries,
|
transfer_countries,
|
||||||
|
transfer_regions,
|
||||||
|
transfer_cities
|
||||||
],
|
],
|
||||||
"tmp": [
|
"tmp": [
|
||||||
transfer_regions,
|
|
||||||
# transfer_cities
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -99,8 +99,10 @@ class RegionSerializer(serializers.ModelSerializer):
|
||||||
|
|
||||||
class CitySerializer(serializers.ModelSerializer):
|
class CitySerializer(serializers.ModelSerializer):
|
||||||
country_code_2 = serializers.CharField()
|
country_code_2 = serializers.CharField()
|
||||||
zip_code = serializers.CharField()
|
region_code = serializers.CharField()
|
||||||
is_island = serializers.IntegerField()
|
subregion_code = serializers.CharField(allow_null=True, allow_blank=True)
|
||||||
|
zip_code = serializers.CharField(allow_null=True, allow_blank=True)
|
||||||
|
is_island = serializers.IntegerField(allow_null=True)
|
||||||
name = serializers.CharField()
|
name = serializers.CharField()
|
||||||
id = serializers.IntegerField()
|
id = serializers.IntegerField()
|
||||||
|
|
||||||
|
|
@ -108,6 +110,8 @@ class CitySerializer(serializers.ModelSerializer):
|
||||||
model = City
|
model = City
|
||||||
fields = (
|
fields = (
|
||||||
"country_code_2",
|
"country_code_2",
|
||||||
|
"region_code",
|
||||||
|
"subregion_code",
|
||||||
"zip_code",
|
"zip_code",
|
||||||
"is_island",
|
"is_island",
|
||||||
"name",
|
"name",
|
||||||
|
|
@ -133,27 +137,35 @@ class CitySerializer(serializers.ModelSerializer):
|
||||||
return data
|
return data
|
||||||
|
|
||||||
def set_code(self, data):
|
def set_code(self, data):
|
||||||
data['code'] = data.pop('country_code_2')
|
data['code'] = data.pop('region_code')
|
||||||
return data
|
return data
|
||||||
|
|
||||||
def set_relations(self, data):
|
def set_relations(self, data):
|
||||||
try:
|
try:
|
||||||
region = Region.objects.get(old_id=data['old_id'])
|
region = Region.objects.filter(code=data['region_code']).first()
|
||||||
except Region.DoesNotExist as e:
|
except Region.DoesNotExist as e:
|
||||||
raise ValueError(f"Region not found with {data}: {e}")
|
try:
|
||||||
|
region = Region.objects.filter(code=data['subregion_code']).first()
|
||||||
|
except Region.DoesNotExist as e:
|
||||||
|
raise ValueError(f"Region not found with {data}: {e}")
|
||||||
|
|
||||||
data['region'] = region
|
data['region'] = region
|
||||||
|
del(data['subregion_code'])
|
||||||
|
|
||||||
try:
|
try:
|
||||||
country = Country.objects.get(old_id=data['old_id'])
|
country = Country.objects.get(code=data['country_code_2'])
|
||||||
except Country.DoesNotExist as e:
|
except Country.DoesNotExist as e:
|
||||||
raise ValueError(f"Region not found with {data}: {e}")
|
raise ValueError(f"Country not found with {data}: {e}")
|
||||||
|
|
||||||
data['country'] = country
|
data['country'] = country
|
||||||
|
del(data['country_code_2'])
|
||||||
|
|
||||||
return data
|
return data
|
||||||
|
|
||||||
def set_zip_code(self, data):
|
def set_zip_code(self, data):
|
||||||
data['postal_code'] = data.pop('zip_code')
|
data['postal_code'] = data.pop('zip_code')
|
||||||
|
if data['postal_code'] is None:
|
||||||
|
data['postal_code'] = ""
|
||||||
return data
|
return data
|
||||||
|
|
||||||
def set_old_id(self, data):
|
def set_old_id(self, data):
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user