예제 #1
0
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'
예제 #2
0
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)
예제 #3
0
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,
        )
예제 #4
0
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)
예제 #5
0
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')
예제 #6
0
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'
예제 #7
0
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')
예제 #8
0
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,
        )
예제 #9
0
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,
        )