class BaseItemized(db.Model): __abstract__ = True committee_id = db.Column('cmte_id', db.String, doc=docs.COMMITTEE_ID) committee = utils.related_committee_history('committee_id', cycle_label='report_year') report_year = db.Column('rpt_yr', db.Integer, doc=docs.REPORT_YEAR) report_type = db.Column('rpt_tp', db.String, doc=docs.REPORT_TYPE) form_type = db.Column('form_tp', db.String, doc=docs.FORM_TYPE) entity_type = db.Column('entity_tp', db.String) image_number = db.Column('image_num', db.String, doc=docs.IMAGE_NUMBER) memo_code = db.Column('memo_cd', db.String) memo_text = db.Column(db.String) filing_type = db.Column(db.String) filing_form = db.Column(db.String) link_id = db.Column(db.Integer) sub_id = db.Column(db.Integer) original_sub_id = db.Column('orig_sub_id', db.Integer) amendment_indicator = db.Column('amndt_ind', db.String) line_number = db.Column('line_num', db.String) tran_id = db.Column(db.String) transaction_id = db.Column(db.Integer) status = db.Column(db.String) file_number = db.Column('file_num', db.Integer) pdf_url = db.Column(db.String) @hybrid_property def memoed_subtotal(self): return self.memo_code == 'X'
class BaseItemized(db.Model): __abstract__ = True committee_id = db.Column('cmte_id', db.String) committee = utils.related_committee_history('committee_id', cycle_label='report_year') report_year = db.Column('rpt_yr', db.Integer) report_type = db.Column('rpt_tp', db.String) form_type = db.Column('form_tp', db.String) entity_type = db.Column('entity_tp', db.String) image_number = db.Column('image_num', db.String) memo_code = db.Column('memo_cd', db.String) memo_text = db.Column(db.String) filing_type = db.Column(db.String) filing_form = db.Column(db.String) link_id = db.Column(db.Integer) sub_id = db.Column(db.Integer) original_sub_id = db.Column('orig_sub_id', db.Integer) amendment_indicator = db.Column('amndt_ind', db.String) line_number = db.Column('line_num', db.String) tran_id = db.Column(db.String) transaction_id = db.Column(db.Integer) status = db.Column(db.String) file_number = db.Column('file_num', db.Integer) @hybrid_property def memoed_subtotal(self): return self.memo_code == 'X' @property def pdf_url(self): return utils.make_image_pdf_url(self.image_number)
class Filings(db.Model): __tablename__ = 'ofec_filings_mv' committee_id = db.Column(db.String, index=True, doc=docs.COMMITTEE_ID) committee = utils.related_committee_history('committee_id', cycle_label='report_year') committee_name = db.Column(db.String, doc=docs.COMMITTEE_NAME) candidate_id = db.Column(db.String, index=True, doc=docs.CANDIDATE_ID) candidate_name = db.Column(db.String, doc=docs.CANDIDATE_NAME) cycle = db.Column(db.Integer, doc=docs.RECORD_CYCLE) sub_id = db.Column(db.BigInteger, primary_key=True) coverage_start_date = db.Column(db.Date, doc=docs.COVERAGE_START_DATE) coverage_end_date = db.Column(db.Date, doc=docs.COVERAGE_END_DATE) receipt_date = db.Column(db.Date, index=True, doc=docs.RECEIPT_DATE) election_year = db.Column(db.Integer, doc=docs.ELECTION_YEAR) form_type = db.Column(db.String, index=True, doc=docs.FORM_TYPE) report_year = db.Column(db.Integer, index=True, doc=docs.REPORT_YEAR) report_type = db.Column(db.String, index=True, doc=docs.REPORT_TYPE) document_type = db.Column(db.String, index=True, doc=docs.DOCUMENT_TYPE) document_type_full = db.Column(db.String, doc=docs.DOCUMENT_TYPE) report_type_full = db.Column(db.String, doc=docs.REPORT_TYPE) beginning_image_number = db.Column(db.BigInteger, index=True, doc=docs.BEGINNING_IMAGE_NUMBER) ending_image_number = db.Column(db.BigInteger, doc=docs.ENDING_IMAGE_NUMBER) pages = db.Column(db.Integer, doc='Number of pages in the document') total_receipts = db.Column(db.Numeric(30, 2)) total_individual_contributions = db.Column(db.Numeric(30, 2)) net_donations = db.Column(db.Numeric(30, 2)) total_disbursements = db.Column(db.Numeric(30, 2)) total_independent_expenditures = db.Column(db.Numeric(30, 2)) total_communication_cost = db.Column(db.Numeric(30, 2)) cash_on_hand_beginning_period = db.Column(db.Numeric(30, 2), doc=docs.CASH_ON_HAND_BEGIN_PERIOD) cash_on_hand_end_period = db.Column(db.Numeric(30, 2), doc=docs.CASH_ON_HAND_END_PERIOD) debts_owed_by_committee = db.Column(db.Numeric(30, 2), doc=docs.DEBTS_OWED_BY_COMMITTEE) debts_owed_to_committee = db.Column(db.Numeric(30, 2), doc=docs.DEBTS_OWED_TO_COMMITTEE) house_personal_funds = db.Column(db.Numeric(30, 2)) senate_personal_funds = db.Column(db.Numeric(30, 2)) opposition_personal_funds = db.Column(db.Numeric(30, 2)) treasurer_name = db.Column(db.String, doc=docs.TREASURER_NAME) file_number = db.Column(db.BigInteger) previous_file_number = db.Column(db.BigInteger) primary_general_indicator = db.Column(db.String, index=True) report_type_full = db.Column(db.String, doc=docs.REPORT_TYPE) request_type = db.Column(db.String) amendment_indicator = db.Column(db.String, index=True) update_date = db.Column(db.Date) pdf_url = db.Column(db.String) @property def document_description(self): return utils.document_description( self.report_year, self.report_type_full, self.document_type_full, self.form_type, )
class BaseAggregate(BaseModel): __abstract__ = True committee = utils.related_committee_history('committee_id', cycle_label='cycle') committee_id = db.Column('cmte_id', db.String, primary_key=True, doc=docs.COMMITTEE_ID) cycle = db.Column(db.Integer, primary_key=True, doc=docs.RECORD_CYCLE) total = db.Column(db.Numeric(30, 2), index=True, doc='Sum of transactions') count = db.Column(db.Integer, index=True, doc=docs.COUNT)
class BaseSpendingAggregate(BaseAggregate): __abstract__ = True committee_id = db.Column('cmte_id', db.String, primary_key=True, doc=docs.COMMITTEE_ID) committee = utils.related_committee_history('committee_id', cycle_label='cycle') candidate_id = db.Column('cand_id', db.String, primary_key=True, doc=docs.CANDIDATE_ID) candidate = utils.related_candidate_history('candidate_id', cycle_label='cycle')
class BaseItemized(db.Model): __abstract__ = True committee = utils.related_committee_history('committee_id', cycle_label='report_year') committee_id = db.Column('cmte_id', db.String, doc=docs.COMMITTEE_ID) report_year = db.Column('rpt_yr', db.Integer, doc=docs.REPORT_YEAR) report_type = db.Column('rpt_tp', db.String, doc=docs.REPORT_TYPE) image_number = db.Column('image_num', db.String, doc=docs.IMAGE_NUMBER) filing_form = db.Column(db.String) link_id = db.Column(db.Integer) line_number = db.Column('line_num', db.String) transaction_id = db.Column('tran_id', db.String) file_number = db.Column('file_num', db.Integer) @hybrid_property def memoed_subtotal(self): return self.memo_code == 'X'
class BaseAggregate(BaseModel): __abstract__ = True committee = utils.related_committee_history('committee_id', cycle_label='cycle') committee_id = db.Column('cmte_id', db.String, primary_key=True, doc=docs.COMMITTEE_ID) cycle = db.Column(db.Integer, primary_key=True, doc=docs.RECORD_CYCLE) #? not sure how to document this total = db.Column( db.Numeric(30, 2), index=True, ) count = db.Column(db.Integer, index=True, doc='Number of records making up the total')
class Filings(FecFileNumberMixin, CsvMixin, db.Model): __tablename__ = 'ofec_filings_all_mv' committee_id = db.Column(db.String, index=True, doc=docs.COMMITTEE_ID) committee = utils.related_committee_history('committee_id', cycle_label='report_year') committee_name = db.Column(db.String, doc=docs.COMMITTEE_NAME) candidate_id = db.Column(db.String, index=True, doc=docs.CANDIDATE_ID) candidate_name = db.Column(db.String, doc=docs.CANDIDATE_NAME) cycle = db.Column(db.Integer, doc=docs.RECORD_CYCLE) sub_id = db.Column(db.BigInteger, index=True, primary_key=True) coverage_start_date = db.Column(db.Date, index=True, doc=docs.COVERAGE_START_DATE) coverage_end_date = db.Column(db.Date, index=True, doc=docs.COVERAGE_END_DATE) receipt_date = db.Column(db.Date, index=True, doc=docs.RECEIPT_DATE) election_year = db.Column(db.Integer, doc=docs.ELECTION_YEAR) form_type = db.Column(db.String, index=True, doc=docs.FORM_TYPE) report_year = db.Column(db.Integer, index=True, doc=docs.REPORT_YEAR) report_type = db.Column(db.String, index=True, doc=docs.REPORT_TYPE) document_type = db.Column(db.String, index=True, doc=docs.DOC_TYPE) document_type_full = db.Column(db.String, doc=docs.DOC_TYPE) report_type_full = db.Column(db.String, doc=docs.REPORT_TYPE) beginning_image_number = db.Column(db.BigInteger, index=True, doc=docs.BEGINNING_IMAGE_NUMBER) ending_image_number = db.Column(db.BigInteger, doc=docs.ENDING_IMAGE_NUMBER) pages = db.Column(db.Integer, doc=docs.PAGES) total_receipts = db.Column(db.Numeric(30, 2)) total_individual_contributions = db.Column(db.Numeric(30, 2)) net_donations = db.Column(db.Numeric(30, 2)) total_disbursements = db.Column(db.Numeric(30, 2)) total_independent_expenditures = db.Column(db.Numeric(30, 2)) total_communication_cost = db.Column(db.Numeric(30, 2)) cash_on_hand_beginning_period = db.Column( db.Numeric(30, 2), doc=docs.CASH_ON_HAND_BEGIN_PERIOD) cash_on_hand_end_period = db.Column(db.Numeric(30, 2), doc=docs.CASH_ON_HAND_END_PERIOD) debts_owed_by_committee = db.Column(db.Numeric(30, 2), doc=docs.DEBTS_OWED_BY_COMMITTEE) debts_owed_to_committee = db.Column(db.Numeric(30, 2), doc=docs.DEBTS_OWED_TO_COMMITTEE) house_personal_funds = db.Column(db.Numeric(30, 2)) senate_personal_funds = db.Column(db.Numeric(30, 2)) opposition_personal_funds = db.Column(db.Numeric(30, 2)) treasurer_name = db.Column(db.String, doc=docs.TREASURER_NAME) file_number = db.Column(db.BigInteger) primary_general_indicator = db.Column(db.String, index=True) request_type = db.Column(db.String) amendment_indicator = db.Column(db.String, index=True, doc=docs.AMENDMENT_CHAIN) update_date = db.Column(db.Date) pdf_url = db.Column(db.String) fec_url = db.Column(db.String) means_filed = db.Column(db.String, doc=docs.MEANS_FILED) is_amended = db.Column(db.Boolean) most_recent = db.Column(db.Boolean) html_url = db.Column(db.String, doc=docs.HTML_URL) #If f2 filing, the state of the candidate, else the state of the committee state = db.Column(db.String, doc=docs.STATE) office = db.Column(db.String, doc=docs.OFFICE) # Filter filings based off candidate office or committee type H, S and P only. all other # committee types are ignored. Because from the fron-end we only filter # filings by candidate office only. # mapped office_cmte_tp db column with office office = db.Column('office_cmte_tp', db.String, index=True, doc=docs.OFFICE) party = db.Column(db.String, doc=docs.PARTY) committee_type = db.Column('cmte_tp', db.String, doc=docs.COMMITTEE_TYPE) amendment_chain = db.Column(ARRAY(db.Numeric)) previous_file_number = db.Column(db.BigInteger) most_recent_file_number = db.Column(db.BigInteger) amendment_version = db.Column(db.Integer) form_category = db.Column(db.String, index=True, doc=docs.FORM_CATEGORY) @property def document_description(self): return utils.document_description( self.report_year, self.report_type_full, self.document_type_full, self.form_type, )
class Filings(db.Model): __tablename__ = 'ofec_filings_mv' committee_id = db.Column(db.String, index=True) committee = utils.related_committee_history('committee_id', cycle_label='report_year') committee_name = db.Column(db.String) candidate_id = db.Column(db.String, index=True) candidate_name = db.Column(db.String) cycle = db.Column(db.Integer) sub_id = db.Column(db.BigInteger, primary_key=True) coverage_start_date = db.Column(db.Date) coverage_end_date = db.Column(db.Date) receipt_date = db.Column(db.Date, index=True) election_year = db.Column(db.Integer) form_type = db.Column(db.String, index=True) report_year = db.Column(db.Integer, index=True) report_type = db.Column(db.String, index=True) document_type = db.Column(db.String, index=True) document_type_full = db.Column(db.String) report_type_full = db.Column(db.String) beginning_image_number = db.Column(db.BigInteger, index=True) ending_image_number = db.Column(db.BigInteger) pages = db.Column(db.Integer) total_receipts = db.Column(db.Numeric(30, 2)) total_individual_contributions = db.Column(db.Numeric(30, 2)) net_donations = db.Column(db.Numeric(30, 2)) total_disbursements = db.Column(db.Numeric(30, 2)) total_independent_expenditures = db.Column(db.Numeric(30, 2)) total_communication_cost = db.Column(db.Numeric(30, 2)) cash_on_hand_beginning_period = db.Column(db.Numeric(30, 2)) cash_on_hand_end_period = db.Column(db.Numeric(30, 2)) debts_owed_by_committee = db.Column(db.Numeric(30, 2)) debts_owed_to_committee = db.Column(db.Numeric(30, 2)) house_personal_funds = db.Column(db.Numeric(30, 2)) senate_personal_funds = db.Column(db.Numeric(30, 2)) opposition_personal_funds = db.Column(db.Numeric(30, 2)) treasurer_name = db.Column(db.String) file_number = db.Column(db.BigInteger) previous_file_number = db.Column(db.BigInteger) primary_general_indicator = db.Column(db.String, index=True) report_type_full = db.Column(db.String) request_type = db.Column(db.String) amendment_indicator = db.Column(db.String, index=True) update_date = db.Column(db.Date) @property def document_description(self): return utils.document_description( self.report_year, self.report_type_full, self.document_type_full, self.form_type, ) @property def pdf_url(self): return utils.report_pdf_url( self.report_year, self.beginning_image_number, committee_type=self.committee.committee_type if self.committee else None, form_type=self.form_type, )