Exemplo n.º 1
0
def load_abstimmung(engine, source_url):
    table = sl.get_table(engine, 'abstimmung')
    stimmen = list(sl.find(engine, table, source_url=source_url,
        matched=True))
    if not len(stimmen):
        log.error("No reconciled votes, signals deeper trouble?")
        return
    thema = stimmen[0].get('subject')
    abst = Abstimmung.query.filter_by(thema=thema).first()
    if abst is None:
        abst = Abstimmung()
        abst.thema = thema
        abst.datum = to_date(stimmen[0].get('date'))
    db.session.add(abst)
    db.session.flush()
    for stimme_ in stimmen:
        person = Person.query.filter_by(
            fingerprint=stimme_.get('fingerprint')).first()
        if person is None:
            continue
        stimme = Stimme.query.filter_by(
            abstimmung=abst).filter_by(
            person=person).first()
        if stimme is not None:
            continue
        stimme = Stimme()
        stimme.entscheidung = stimme_['vote']
        stimme.person = person
        stimme.abstimmung = abst
        db.session.add(stimme)
    db.session.commit()
Exemplo n.º 2
0
def load_rollen(engine, person, data):
    _RolleSource = sl.get_table(engine, "rolle")
    for rdata in sl.find(engine, _RolleSource, fingerprint=data["fingerprint"]):
        rolle = Rolle.query.filter_by(
            person=person,
            funktion=rdata.get("funktion"),
            ressort=rdata.get("ressort"),
            fraktion=rdata.get("fraktion"),
            land=rdata.get("land"),
        ).first()
        if rolle is None:
            rolle = Rolle()

        rolle.person = person
        rolle.mdb_id = rdata.get("mdb_id")
        rolle.status = rdata.get("status")
        rolle.funktion = rdata.get("funktion")
        rolle.fraktion = rdata.get("fraktion")
        rolle.gewaehlt = rdata.get("gewaehlt")
        rolle.ressort = rdata.get("ressort")
        rolle.land = rdata.get("land")
        rolle.austritt = to_date(rdata.get("austritt"))

        if rdata.get("mdb_id"):
            rolle.wahlkreis = load_wahlkreis(engine, rolle, data)
        db.session.add(rolle)
Exemplo n.º 3
0
def load_rollen(engine, person, data):
    _RolleSource = sl.get_table(engine, 'rolle')
    for rdata in sl.find(engine, _RolleSource,
                         fingerprint=data['fingerprint']):
        rolle = Rolle.query.filter_by(person=person,
                                      funktion=rdata.get('funktion'),
                                      ressort=rdata.get('ressort'),
                                      fraktion=rdata.get('fraktion'),
                                      land=rdata.get('land')).first()
        if rolle is None:
            rolle = Rolle()

        rolle.person = person
        rolle.mdb_id = rdata.get('mdb_id')
        rolle.status = rdata.get('status')
        rolle.funktion = rdata.get('funktion')
        rolle.fraktion = rdata.get('fraktion')
        rolle.gewaehlt = rdata.get('gewaehlt')
        rolle.ressort = rdata.get('ressort')
        rolle.land = rdata.get('land')
        rolle.austritt = to_date(rdata.get('austritt'))

        if rdata.get('mdb_id'):
            rolle.wahlkreis = load_wahlkreis(engine, rolle, data)
        db.session.add(rolle)
Exemplo n.º 4
0
def load_abstimmung(engine, source_url):
    table = sl.get_table(engine, 'abstimmung')
    stimmen = list(sl.find(engine, table, source_url=source_url, matched=True))
    if not len(stimmen):
        log.error("No reconciled votes, signals deeper trouble?")
        return
    thema = stimmen[0].get('subject')
    abst = Abstimmung.query.filter_by(thema=thema).first()
    if abst is None:
        abst = Abstimmung()
        abst.thema = thema
        abst.datum = to_date(stimmen[0].get('date'))
    db.session.add(abst)
    db.session.flush()
    for stimme_ in stimmen:
        person = Person.query.filter_by(
            fingerprint=stimme_.get('fingerprint')).first()
        if person is None:
            continue
        stimme = Stimme.query.filter_by(abstimmung=abst).filter_by(
            person=person).first()
        if stimme is not None:
            continue
        stimme = Stimme()
        stimme.entscheidung = stimme_['vote']
        stimme.person = person
        stimme.abstimmung = abst
        db.session.add(stimme)
    db.session.commit()
Exemplo n.º 5
0
def load_sitzung(engine, indexer, wp, session):
    table = sl.get_table(engine, 'webtv_speech')
    data = sl.find_one(engine, table, wp=wp, session=session)
    log.info("Loading Sitzung: %s/%s...", wp, session)
    sitzung = Sitzung.query.filter_by(wahlperiode=wp, nummer=session).first()
    if sitzung is None:
        sitzung = Sitzung()
        sitzung.wahlperiode = wp
        sitzung.nummer = session
    sitzung.titel = data.get('session_name')
    sitzung.date = to_date(data.get('session_date'))
    sitzung.source_url = data.get('session_url')

    db.session.add(sitzung)
    db.session.flush()
    indexer.add(sitzung)

    load_debatten(engine, indexer, sitzung)
    db.session.commit()
    return sitzung
Exemplo n.º 6
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)
Exemplo n.º 7
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)