Example #1
0
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)
Example #2
0
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)
Example #3
0
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)