コード例 #1
0
def row_Detail(row, type, **kwargs):
    try:
        lobbyist = Lobbyist.objects.get(
            filer_id=row['FILER_ID'])
        cover = Coversheet.objects.get(report_id=row['REPNO'])
    except Lobbyist.DoesNotExist:
        logger.error('missing lobbyist {FILER_ID}'.format(**row))
        return
    except Coversheet.DoesNotExist:
        logger.error('missing cover sheet {REPNO}'.format(**row))
        return

    # ExpenseDetailreport
    amount = Decimal(row['EXPAMOUNT']) if row['EXPAMOUNT'] and row['EXPAMOUNT'] != '0' else None
    default_data = dict(
        cover=cover,
        lobbyist=lobbyist,
        year=int(row['YEAR_APPL']),
        raw=json.dumps(row),
    )

    if amount is None:
        default_data['amount'] = None  # force this to null
        default_data['amount_guess'] = Decimal((Decimal(row['nLow']) +
            Decimal(row['nHigh'])) / 2).quantize(Decimal('.01'))
    else:
        default_data['amount'] = default_data['amount_guess'] = amount
    report, dirty = ExpenseDetailReport.objects.get_or_create(
        idno=row['IDNO'], type=type,
        defaults=default_data)
    if not dirty:
        for key, value in default_data.items():
            setfield(report, key, value)
    if getattr(report, '_is_dirty', None):
        logger.debug(report._is_dirty)
        report.save()
        del report._is_dirty
        dirty = True
    if dirty:
        logger.info("Detail: %s" % report)
コード例 #2
0
def row_CVR(row, **kwargs):
    report_date = row['FILED_DATE'] or row['RPT_DATE']
    report_date = convert_date_format(report_date)

    # Lobbyist
    default_data = dict(
        updated_at=report_date)
    default_data.update(get_name_data(row))
    lobbyist, dirty = Lobbyist.objects.get_or_create(
        filer_id=row['FILER_ID'],
        defaults=default_data, )
    if report_date > lobbyist.updated_at:
        for key, value in default_data.items():
            setfield(lobbyist, key, value)
    if getattr(lobbyist, '_is_dirty', None):
        logger.debug(lobbyist._is_dirty)
        lobbyist.save()
        del lobbyist._is_dirty
        dirty = True
    if dirty:
        logger.info("LOBBYIST: %s" % lobbyist)

    # Coversheet
    default_data = dict(
        raw=json.dumps(row),
        lobbyist=lobbyist,
        report_date=report_date,
        correction=row['CORR_NUM'],
        year=row['YEAR_APPL'],
        transportation=row['EXTYP_TRAN'] or "0.00",
        food=row['EXTYP_FOOD'] or "0.00",
        entertainment=row['EXTYP_GIFT'] or "0.00",
        gifts=row['EXTYP_GIFT'] or "0.00",
        awards=row['EXTYP_AWDS'] or "0.00",
        events=row['EXTYP_EVNT'] or "0.00",
        media=row['EXTYP_MEDA'] or "0.00",
        ben_senators=row['EXBEN_SEN'] or "0.00",
        ben_representatives=row['EXBEN_REP'] or "0.00",
        ben_other=row['EXBEN_OTH'] or "0.00",
        ben_legislative=row['EXBEN_LEG'] or "0.00",
        ben_executive=row['EXBEN_EXEC'] or "0.00",
        ben_family=row['EXBEN_FAM'] or "0.00",
        ben_events=row['EXBEN_EVNT'] or "0.00",
        ben_guests=row['EXBEN_GUES'] or "0.00",
    )
    total_spent = sum(float(y or 0) for x, y in row.items() if x.startswith("EXTYP"))
    total_benefited = sum(float(y or 0) for x, y in row.items() if x.startswith("EXBEN"))
    default_data['total_spent'] = total_spent
    default_data['total_benefited'] = total_benefited
    default_data['spent_guess'] = max(total_spent, total_benefited)

    cover, dirty = Coversheet.objects.get_or_create(
        report_id=row['REPNO'],
        defaults=default_data, )
    if report_date > cover.report_date:
        for key, value in default_data.items():
            setfield(cover, key, value)
    if getattr(cover, '_is_dirty', None):
        logger.debug(cover._is_dirty)
        cover.save()
        del cover._is_dirty
        dirty = True
    if dirty:
        logger.info(u'COVER:    {} {} {}'
            .format(cover.report_date, cover.lobbyist, cover.report_id))
    return (lobbyist, cover)