def load_position(engine, indexer, ablauf, data): position = Position.query.filter_by( ablauf=ablauf, urheber=data.get('urheber'), fundstelle=data.get('fundstelle')).first() if position is not None: indexer.add(position) return position = Position() position.key = data.get('hash') position.zuordnung = data.get('zuordnung') position.urheber = data.get('urheber') position.fundstelle = data.get('fundstelle') position.fundstelle_url = data.get('fundstelle_url') position.date = to_date(data.get('date')) position.quelle = data.get('quelle') position.typ = data.get('typ') position.ablauf = ablauf if data.get('debatte_item_id'): dq = Debatte.query.filter( Debatte.nummer == data.get('debatte_item_id')) dq = dq.join(Sitzung) dq = dq.filter(Sitzung.wahlperiode == data.get('debatte_wp')) dq = dq.filter(Sitzung.nummer == data.get('debatte_session')) position.debatte = dq.first() _Referenz = sl.get_table(engine, 'referenz') for ddata in sl.find(engine, _Referenz, fundstelle=position.fundstelle, urheber=position.urheber, source_url=ablauf.source_url): position.dokument = load_dokument(engine, indexer, ddata) db.session.add(position) db.session.flush() _Zuweisung = sl.get_table(engine, 'zuweisung') for zdata in sl.find(engine, _Zuweisung, fundstelle=position.fundstelle, urheber=position.urheber, source_url=ablauf.source_url): zuweisung = Zuweisung() zuweisung.text = zdata['text'] zuweisung.federfuehrung = True if \ str(zdata['federfuehrung']) == 'True' else False zuweisung.gremium = Gremium.query.filter_by( key=zdata.get('gremium_key')).first() zuweisung.position = position db.session.add(zuweisung) _Beschluss = sl.get_table(engine, 'beschluss') for bdata in sl.find(engine, _Beschluss, fundstelle=position.fundstelle, urheber=position.urheber, source_url=ablauf.source_url): beschluss = Beschluss() beschluss.position = position beschluss.seite = bdata['seite'] beschluss.tenor = bdata['tenor'] beschluss.dokument_text = bdata['dokument_text'] or '' for dokument_name in beschluss.dokument_text.split(','): dokument_name = dokument_name.strip() dok = Dokument.query.filter_by(nummer=dokument_name).first() if dok is not None: beschluss.dokumente.append(dok) db.session.add(beschluss) _Beitrag = sl.get_table(engine, 'beitrag') for bdata in sl.find(engine, _Beitrag, fundstelle=position.fundstelle, urheber=position.urheber, source_url=ablauf.source_url, matched=True): load_beitrag(engine, indexer, position, bdata) db.session.refresh(position) indexer.add(position)
def load_position(data, ablauf_id, ablauf, engine): position = Position.query.filter_by( ablauf=ablauf, urheber=data.get('urheber'), fundstelle=data.get('fundstelle')).first() if position is not None: return position = Position() position.key = data.get('hash') position.zuordnung = data.get('zuordnung') position.urheber = data.get('urheber') position.fundstelle = data.get('fundstelle') position.fundstelle_url = data.get('fundstelle_url') position.date = date(data.get('date')) position.quelle = data.get('quelle') position.typ = data.get('typ') position.ablauf = ablauf if data.get('debatte_item_id'): dq = Debatte.query.filter(Debatte.nummer==data.get('debatte_item_id')) dq = dq.filter(Debatte.sitzung.wahlperiode==data.get('debatte_wp')) dq = dq.filter(Debatte.sitzung.nummer==data.get('debatte_session')) position.debatte = dq.first() _Referenz = sl.get_table(engine, 'referenz') for ddata in sl.find(engine, _Referenz, fundstelle=position.fundstelle, urheber=position.urheber, ablauf_id=ablauf_id): position.dokument = load_dokument(ddata, engine) db.session.add(position) _Zuweisung = sl.get_table(engine, 'zuweisung') for zdata in sl.find(engine, _Zuweisung, fundstelle=position.fundstelle, urheber=position.urheber, ablauf_id=ablauf_id): zuweisung = Zuweisung() zuweisung.text = zdata['text'] zuweisung.federfuehrung = True if \ str(zdata['federfuehrung']) == 'True' else False zuweisung.gremium = Gremium.query.filter_by( key=zdata.get('gremium_key')).first() zuweisung.position = position db.session.add(zuweisung) _Beschluss = sl.get_table(engine, 'beschluss') for bdata in sl.find(engine, _Beschluss, fundstelle=position.fundstelle, urheber=position.urheber, ablauf_id=ablauf_id): beschluss = Beschluss() beschluss.position = position beschluss.seite = bdata['seite'] beschluss.tenor = bdata['tenor'] beschluss.dokument_text = bdata['dokument_text'] or '' for dokument_name in beschluss.dokument_text.split(','): dokument_name = dokument_name.strip() dok = Dokument.query.filter_by(nummer=dokument_name).first() if dok is not None: beschluss.dokumente.append(dok) db.session.add(beschluss) _Beitrag = sl.get_table(engine, 'beitrag') for bdata in sl.find(engine, _Beitrag, fundstelle=position.fundstelle, urheber=position.urheber, ablauf_id=ablauf_id, matched=True): load_beitrag(bdata, position, engine)
def load_position(data, ablauf_id, ablauf, ws): position = Position.query.filter_by( ablauf=ablauf, urheber=data.get('urheber'), fundstelle=data.get('fundstelle')).first() if position is not None: return position = Position() position.key = data.get('hash') position.zuordnung = data.get('zuordnung') position.urheber = data.get('urheber') position.fundstelle = data.get('fundstelle') position.fundstelle_url = data.get('fundstelle_url') position.date = date(data.get('date')) position.quelle = data.get('quelle') position.typ = data.get('typ') position.ablauf = ablauf for ddata in ws['referenz'].traverse(fundstelle=position.fundstelle, urheber=position.urheber, ablauf_id=ablauf_id): position.dokument = load_dokument(ddata, ws) db.session.add(position) for zdata in ws['zuweisung'].traverse(fundstelle=position.fundstelle, urheber=position.urheber, ablauf_id=ablauf_id): zuweisung = Zuweisung() zuweisung.text = zdata['text'] zuweisung.federfuehrung = True if \ str(zdata['federfuehrung'])=='True' else False zuweisung.gremium = Gremium.query.filter_by( key=zdata.get('gremium_key')).first() zuweisung.position = position db.session.add(zuweisung) try: for bdata in ws['beschluss'].traverse(fundstelle=position.fundstelle, urheber=position.urheber, ablauf_id=ablauf_id): beschluss = Beschluss() beschluss.position = position beschluss.seite = bdata['seite'] beschluss.tenor = bdata['tenor'] beschluss.dokument_text = bdata['dokument_text'] for dokument_name in beschluss.dokument_text.split(','): dokument_name = dokument_name.strip() dok = Dokument.query.filter_by(nummer=dokument_name).first() if dok is not None: beschluss.dokumente.append(dok) db.session.add(beschluss) except WebstoreClientException: pass for bdata in ws['beitrag'].traverse(fundstelle=position.fundstelle, urheber=position.urheber, ablauf_id=ablauf_id): load_beitrag(bdata, position, ws)