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)
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)