Skip to content
Extraits de code Groupes Projets
Valider 613379ad rédigé par luxcem's avatar luxcem
Parcourir les fichiers

fixes sql truncates

parent 17f672c3
Branches
Étiquettes
Aucune requête de fusion associée trouvée
......@@ -25,9 +25,9 @@ from django.conf import settings
from urllib2 import urlopen
import ijson
from representatives.models import Representative
from representatives.utils import import_a_representative
class Command(BaseCommand):
def handle(self, *args, **options):
compotista_server = getattr(settings,
......@@ -36,6 +36,7 @@ class Command(BaseCommand):
url = compotista_server + '/export/latest/'
print('Import representatives from %s' % url)
resource = urlopen(url)
resource = urlopen(url)
Representative.objects.all().delete()
for representative in ijson.items(resource, 'item'):
import_a_representative(representative)
......@@ -22,7 +22,6 @@ import representatives.models as models
from rest_framework import serializers
from django.db import transaction
from django.db import connection
class CountrySerializer(serializers.ModelSerializer):
......@@ -108,7 +107,6 @@ class RepresentativeMandateSerializer(MandateSerializer):
fields = [elem for elem in MandateSerializer.Meta.fields if elem != 'representative']
class RepresentativeSerializer(serializers.ModelSerializer):
class Meta:
model = models.Representative
......@@ -131,7 +129,7 @@ class RepresentativeHyperLinkedSerializer(RepresentativeSerializer):
class Meta(RepresentativeSerializer.Meta):
fields = RepresentativeSerializer.Meta.fields + ('url',)
class RepresentativeDetailSerializer(RepresentativeSerializer):
contacts = ContactField()
mandates = RepresentativeMandateSerializer(many=True)
......@@ -152,29 +150,20 @@ class RepresentativeDetailSerializer(RepresentativeSerializer):
def create(self, validated_data):
contacts_data = validated_data.pop('contacts')
mandates_data = validated_data.pop('mandates')
representative, _ = models.Representative.objects.get_or_create(**validated_data)
representative, _ = models.Representative.objects.create(**validated_data)
self._create_mandates(mandates_data, representative)
self._create_contacts(contacts_data, representative)
return representative
def _truncate_model(self, model):
cursor = connection.cursor()
cursor.execute('TRUNCATE TABLE "{0}"'.format(model._meta.db_table))
def _create_contacts(self, contacts_data, representative):
self._truncate_model(models.Email)
for contact_data in contacts_data['emails']:
contact_data['representative'] = representative
contact = models.Email.objects.create(**contact_data)
self._truncate_model(models.WebSite)
for contact_data in contacts_data['websites']:
contact_data['representative'] = representative
contact = models.WebSite.objects.create(**contact_data)
self._truncate_model(models.Address)
self._truncate_model(models.Phone)
for contact_data in contacts_data['address']:
country, _ = models.Country.objects.get_or_create(
**contact_data.pop('country')
......@@ -191,9 +180,6 @@ class RepresentativeDetailSerializer(RepresentativeSerializer):
def _create_mandates(self, mandates_data, representative):
self._truncate_model(models.Mandate)
self._truncate_model(models.Constituency)
self._truncate_model(models.Group)
for mandate_data in mandates_data:
constituency, _ = models.Constituency.objects.get_or_create(
**mandate_data.pop('constituency')
......
......@@ -19,6 +19,7 @@
# Copyright (C) 2013 Laurent Peuch <cortex@worlddomination.be>
# Copyright (C) 2015 Arnaud Fabre <af@laquadrature.net>
from representatives.models import Representative
from representatives.serializers import RepresentativeDetailSerializer
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter