def run():
    """
    This script should be run following a refresh of county mortgage data.

    The script wipes national, state and metro-based aggregate records,
    creates new ones for every date in range, and then updates metadata.
    """
    starter = datetime.datetime.now()
    aggregate_classes = [
        NationalMortgageData,
        StateMortgageData,
        MSAMortgageData,
        NonMSAMortgageData]
    for cls in aggregate_classes:
        cls.objects.all().delete()
    update_sampling_dates()
    merge_the_dades()
    validate_counties()
    dates = MortgageMetaData.objects.get(name='sampling_dates').json_value
    for date_string in dates:
        date = parser.parse(date_string).date()
        logger.info(
            "Aggregating data for {}".format(date))
        load_msa_values(date)
        load_state_values(date)
        load_non_msa_state_values(date)
        load_national_values(date)
    logger.info("Validating MSAs and non-MSAs")
    for metro in MetroArea.objects.all():
        metro.validate()
    for state in State.objects.all():
        state.validate_non_msas()
    logger.info("{} took {} to run.".format(
        script, (datetime.datetime.now() - starter)))
예제 #2
0
def run():
    """
    This script should be run following a refresh of county mortgage data.

    The script wipes national, state and metro-based aggregate records,
    creates new ones for every date in range, and then updates metadata.
    """
    starter = datetime.datetime.now()
    aggregate_classes = [
        NationalMortgageData, StateMortgageData, MSAMortgageData,
        NonMSAMortgageData
    ]
    for cls in aggregate_classes:
        cls.objects.all().delete()
    update_sampling_dates()
    merge_the_dades()
    validate_counties()
    dates = MortgageMetaData.objects.get(name='sampling_dates').json_value
    for date_string in dates:
        date = parser.parse(date_string).date()
        logger.info("Aggregating data for {}".format(date))
        load_msa_values(date)
        load_state_values(date)
        load_non_msa_state_values(date)
        load_national_values(date)
    logger.info("Validating MSAs and non-MSAs")
    for metro in MetroArea.objects.all():
        metro.validate()
    for state in State.objects.all():
        state.validate_non_msas()
    logger.info("{} took {} to run.".format(
        script, (datetime.datetime.now() - starter)))
예제 #3
0
 def test_validate_counties(self):
     county = County.objects.first()
     self.assertIs(county.valid, True)
     validate_counties()
     county.refresh_from_db()
     self.assertIs(county.valid, False)
예제 #4
0
 def test_validate_counties(self):
     county = County.objects.first()
     self.assertIs(county.valid, True)
     validate_counties()
     county.refresh_from_db()
     self.assertIs(county.valid, False)