Commit a029e7e8 by Nicolas Joyard

Ajout last modified job reunions

parent 2f6b2a7f
Showing with 79 additions and 54 deletions
......@@ -24,35 +24,48 @@ class ImportReunionsJob(BaseANJob):
def save_reunion(self, json):
self.current = u'Reunion %s' % json['uid']
reunion, _ = self.get_or_create(Reunion, id=json['uid'])
data = {
'acteurs': [],
'date_cloture': None,
'date_creation': None,
'date_debut': None,
'date_fin': None,
'etat': None,
'items_odj': [],
'lieu_code': None,
'lieu_libelle': json['lieu']['libelleLong'],
'organes': [],
'points_odj': [],
'seance_date': None,
'seance_id_jo': None,
'seance_quantieme': None,
'type_reunion': None,
}
if json.get('typeReunion', None):
reunion.type_reunion = json['typeReunion']
data['type_reunion'] = json['typeReunion']
if json.get('timeStampDebut', None):
reunion.date_debut = self.parse_date(json['timeStampDebut'])
data['date_debut'] = self.parse_date(json['timeStampDebut'])
if json.get('timeStampFin', None):
reunion.date_fin = self.parse_date(json['timeStampFin'])
data['date_fin'] = self.parse_date(json['timeStampFin'])
if json['lieu'].get('code', None):
reunion.lieu_code = json['lieu']['code']
reunion.lieu_libelle = json['lieu']['libelleLong']
data['lieu_code'] = json['lieu']['code']
if json.get('cycleDeVie', None):
cdv = json['cycleDeVie']
reunion.etat = cdv['etat']
reunion.date_creation = self.parse_date(cdv['chrono']['creation'])
reunion.date_cloture = self.parse_date(cdv['chrono']['cloture'])
data['etat'] = cdv['etat']
data['date_creation'] = self.parse_date(cdv['chrono']['creation'])
data['date_cloture'] = self.parse_date(cdv['chrono']['cloture'])
if json.get('identifiants', None):
ids = json['identifiants']
reunion.seance_id_jo = ids['idJO']
reunion.seance_quantieme = ids['quantieme']
reunion.seance_date = self.parse_date(ids['DateSeance'])
acteurs = []
organes = []
data['seance_id_jo'] = ids['idJO']
data['seance_quantieme'] = ids['quantieme']
data['seance_date'] = self.parse_date(ids['DateSeance'])
demandeurs = json.get('demandeurs', None) or {}
......@@ -63,14 +76,14 @@ class ImportReunionsJob(BaseANJob):
for act in acts:
ar = ActeurReunion(relation=u'demandeur')
ar.acteur = self.get_cached(Acteur, act['acteurRef'])
acteurs.append(ar)
ar.acteur = self.save(Acteur, act['acteurRef'])
data['acteurs'].append(ar)
# SRSLY WTF !? I don't want to live on this planet anymore D:<
if json.get('demandeur', None) and 'acteurRef' in json['demandeur']:
ar = ActeurReunion(relation=u'demandeur')
ar.acteur = self.get_cached(Acteur, json['demandeur']['acteurRef'])
acteurs.append(ar)
ar.acteur = self.save(Acteur, json['demandeur']['acteurRef'])
data['acteurs'].append(ar)
if 'organe' in demandeurs:
orgs = demandeurs['organe']
......@@ -79,15 +92,13 @@ class ImportReunionsJob(BaseANJob):
for org in orgs:
or_ = OrganeReunion(relation=u'demandeur')
or_.organe = self.get_cached(Organe, org['organeRef'])
organes.append(or_)
or_.organe = self.save(Organe, org['organeRef'])
data['organes'].append(or_)
if json.get('organeReuniRef', None):
or_ = OrganeReunion(relation=u'organeReuni')
or_.organe = self.get_cached(Organe, json['organeReuniRef'])
organes.append(or_)
reunion.organes = organes
or_.organe = self.save(Organe, json['organeReuniRef'])
data['organes'].append(or_)
prt = json.get('participants', None) or {}
pri = prt.get('participantsInternes', None)
......@@ -97,8 +108,8 @@ class ImportReunionsJob(BaseANJob):
pris = [pris]
for p in pris:
ar = ActeurReunion(relation=u'participant', presence=p['presence'])
ar.acteur = self.get_cached(Acteur, p['acteurRef'])
acteurs.append(ar)
ar.acteur = self.save(Acteur, p['acteurRef'])
data['acteurs'].append(ar)
pra = prt.get('personnesAuditionnees', None)
if pra:
......@@ -107,19 +118,21 @@ class ImportReunionsJob(BaseANJob):
pras = [pras]
for p in pras:
ar = ActeurReunion(relation=u'auditionne')
act, created = self.get_cached_(Acteur, p['uid']['#text'])
if created and p['uid']['@xsi:type'] == 'IdPersonneExterne_type':
# Pour les acteurs interne le job AMO remplit ces infos
act.civilite = p['ident']['civ']
act.nom = p['ident']['nom']
act.prenom = p['ident']['prenom']
act.date_naissance = self.parse_date(p['dateNais'])
adata = {}
if p['uid']['@xsi:type'] == 'IdPersonneExterne_type':
# Pour les acteurs internes le job AMO remplit ces infos,
# pour les externes on les définit ici
adata = {
'civilite': p['ident']['civ'],
'date_naissance': self.parse_date(p['dateNais']),
'nom': p['ident']['nom'],
'prenom': p['ident']['prenom'],
}
ar.acteur = act
acteurs.append(ar)
ar.acteur = self.save(Acteur, p['uid']['#text'], adata)
data['acteurs'].append(ar)
reunion.acteurs = acteurs
if json.get('ODJ', None):
odj = json['ODJ']
......@@ -128,46 +141,56 @@ class ImportReunionsJob(BaseANJob):
items = odj['resumeODJ']['item']
if isinstance(items, basestring):
items = [items]
reunion.items_odj = [ODJItem(item=i) for i in items]
data['items_odj'] = [ODJItem(item=i) for i in items]
if odj.get('pointsODJ', None) and odj['pointsODJ'].get('pointODJ', None):
points = odj['pointsODJ']['pointODJ']
if isinstance(points, dict):
points = [points]
reunion.points_odj = [self.save_point(p) for p in points]
data['points_odj'] = [self.save_point(p) for p in points]
reunion = self.save(Reunion, json['uid'], data)
def save_point(self, json):
cur = self.current
self.current = '%s > Point %s' % (cur, json['uid'])
point, _ = self.get_or_create(ODJPoint, id=json['uid'])
cdv = json['cycleDeVie']
point.objet = json['objet']
point.type = json['typePointODJ']
point.procedure = json['procedure']
data = {
'comite_secret': None,
'date_cloture': self.parse_date(cdv['chrono']['cloture']),
'date_conf_presse': None,
'date_creation': self.parse_date(cdv['chrono']['creation']),
'dossiers': [],
'etat': cdv['etat'],
'nature_travaux': None,
'objet': json['objet'],
'ouverture_presse': None,
'procedure': json['procedure'],
'type': json['typePointODJ'],
}
if json.get('natureTravauxODJ', None):
point.nature_travaux = json['natureTravauxODJ']
data['nature_travaux'] = json['natureTravauxODJ']
if json.get('dateConfPres', None):
point.date_conf_presse = self.parse_date(json['dateConfPres'])
data['date_conf_presse'] = self.parse_date(json['dateConfPres'])
if json.get('comiteSecret', None):
point.comite_secret = json['comiteSecret'] == 'true'
if json.get('ouverturePresse', None):
point.ouverture_presse = json['ouverturePresse'] == 'true'
data['comite_secret'] = json['comiteSecret'] == 'true'
cdv = json['cycleDeVie']
point.etat = cdv['etat']
point.date_creation = self.parse_date(cdv['chrono']['creation'])
point.date_cloture = self.parse_date(cdv['chrono']['cloture'])
if json.get('ouverturePresse', None):
data['ouverture_presse'] = json['ouverturePresse'] == 'true'
if json.get('dossierLegislatifsRefs', None):
dossiers = json['dossierLegislatifsRefs']
if isinstance(dossier, dict):
dossiers = [dossiers]
point.dossiers = [self.get_cached(Dossier, d['dossierRef'])
for d in dossiers]
data['dossiers'] = [self.save(Dossier, d['dossierRef'])
for d in dossiers]
point = self.save(ODJPoint, json['uid'], data)
self.current = cur
return point
......
......@@ -566,6 +566,7 @@ class ODJPoint(db.Model):
__tablename__ = 'odjpoints'
query_class = SearchableQuery
_last_modified = db.Column(db.DateTime)
id = db.Column(db.Unicode, primary_key=True)
etat = db.Column(db.Unicode)
......@@ -592,6 +593,7 @@ class ODJPoint(db.Model):
class Reunion(db.Model):
__tablename__ = 'reunions'
_last_modified = db.Column(db.DateTime)
id = db.Column(db.Unicode, primary_key=True)
type_reunion = db.Column(db.Unicode)
......
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