Commit 59d8473c by David Guillot

[ActeurAmendement] Ajout de texte_affichable

Utile en particulier lorsqu'un amendement n'a pas d'auteur (car son auteur c'est le Gouvernement et que ce dans ce cas aucun auteur n'est renseigné)

Également, dédoublonnage entre l'auteur et le cosignataire, car il est systématiquement doublonné dans les open data
parent 1efd37ad
"""empty message
Revision ID: 0c154fdc1261
Revises: 9312f57cabaf
Create Date: 2017-04-04 16:21:03.069577
"""
from alembic import op
import sqlalchemy as sa
# revision identifiers, used by Alembic.
revision = '0c154fdc1261'
down_revision = '9312f57cabaf'
branch_labels = None
depends_on = None
def upgrade():
# ### commands auto generated by Alembic - please adjust! ###
op.add_column('amendements', sa.Column('auteur_texte_affichable', sa.Unicode(), nullable=True))
# ### end Alembic commands ###
def downgrade():
# ### commands auto generated by Alembic - please adjust! ###
op.drop_column('amendements', 'auteur_texte_affichable')
# ### end Alembic commands ###
......@@ -2,8 +2,7 @@
from .base import BaseANJob
from .utils import ijson_items
from ..models import Acteur, Amendement, ActeurAmendement,\
Document, Legislature, Organe
from ..models import Amendement, ActeurAmendement, Document, Legislature, Organe
class ImportAmendementsJob(BaseANJob):
......@@ -43,6 +42,7 @@ class ImportAmendementsJob(BaseANJob):
dv = fr['division']
co = json['corps']
lo = json['loiReference']
si = json['signataires']
data = {
'amendement_parent': None,
......@@ -71,23 +71,26 @@ class ImportAmendementsJob(BaseANJob):
'organe': self.save(Organe, id['saisine']['organeExamen']),
'sort': None,
'tri': json['triAmendement'],
'auteur_texte_affichable': si['texteAffichable'],
}
if json.get('amendementParent', None):
data['amendement_parent'] = \
self.save(Amendement, json['amendementParent'])
acteurs = []
signataires = []
auteur = json['signataires']['auteur']
if 'acteurRef' in auteur:
auteur = si['auteur']
auteur_ref = None
if 'acteurRef' in auteur and auteur['acteurRef']:
auteur_ref = auteur['acteurRef']
aa = ActeurAmendement(relation=u'auteur')
aa.acteur_id = auteur['acteurRef']
acteurs.append(aa)
aa.acteur_id = auteur_ref
signataires.append(aa)
cosignataires = json['signataires']['cosignataires']
cosignataires = si['cosignataires']
if cosignataires:
if not 'acteurRef' in cosignataires:
if 'acteurRef' not in cosignataires:
cosignataires = []
else:
cosignataires = cosignataires['acteurRef']
......@@ -96,11 +99,13 @@ class ImportAmendementsJob(BaseANJob):
cosignataires = [cosignataires]
for cosignataire in cosignataires:
if auteur_ref and cosignataire == auteur_ref:
continue
acs = ActeurAmendement(relation=u'cosignataire')
acs.acteur_id = cosignataire
acteurs.append(acs)
signataires.append(acs)
data['acteurs'] = acteurs
data['signataires'] = signataires
so = json['sort']
if so:
......
......@@ -407,6 +407,8 @@ class Amendement(db.Model):
date_depot = db.Column(db.Date)
date_distribution = db.Column(db.Date)
auteur_texte_affichable = db.Column(db.Unicode)
# TODO référence séance json['seanceDiscussion']
legislature_id = db.Column(db.Integer, db.ForeignKey('legislatures.id'))
......@@ -423,7 +425,7 @@ class Amendement(db.Model):
backref=db.backref('amendement_parent',
remote_side=[id]))
acteurs = db.relationship('ActeurAmendement', back_populates='amendement')
signataires = db.relationship('ActeurAmendement', back_populates='amendement')
search_vector = db.Column(TSVectorType('numero_long', 'corps_expose',
'corps_dispositif', 'code_loi',
......@@ -440,7 +442,7 @@ class ActeurAmendement(db.Model):
acteur = db.relationship('Acteur', back_populates='amendements')
amendement_id = db.Column(db.Unicode, db.ForeignKey('amendements.id'))
amendement = db.relationship('Amendement', back_populates='acteurs')
amendement = db.relationship('Amendement', back_populates='signataires')
class Scrutin(db.Model):
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment