def minimum_initialization(**kwargs):
    """
        A minimum initialization for unit tests
        :param kwargs: 'limit_to_classes' as an array of ConfigEntity classes to limit processing to those
    :return:
    """

    from footprint.main.publishing.built_form_publishing import on_config_entity_post_save_built_form
    # Disable built_forms
    post_save_config_entity_initial.disconnect(
        on_config_entity_post_save_built_form,
        GlobalConfig,
        True,
        "built_form_publishing_on_config_entity_post_save")
    application_initialization(**kwargs)

    # Get access to the ConfigEntity fixtures for the configured client
    config_entities_fixture = resolve_fixture(
        "config_entity",
        "config_entities",
        ConfigEntitiesFixture,
        settings.CLIENT)

    key_lambda = lambda config_entity: config_entity['key']
    region_key = map(key_lambda, config_entities_fixture.regions())[0]
    update_of_create_regions(region_keys=[region_key])
    project_key = map(key_lambda, config_entities_fixture.projects())[0]
    project = update_or_create_projects(region_keys=[region_key], project_keys=[project_key])[0]
    project_fixture = resolve_fixture(
        "config_entity",
        "config_entities",
        ConfigEntitiesFixture,
        project.schema())
    scenario_key = map(key_lambda, project_fixture.scenarios(project=project))[0]
    update_or_create_scenarios(region_keys=[region_key], project_keys=[project_key], scenario_keys=[scenario_key])
Example #2
0
def minimum_initialization(**kwargs):
    """
        A minimum initialization for unit tests
        :param kwargs: 'limit_to_classes' as an array of ConfigEntity classes to limit processing to those
    :return:
    """

    from footprint.main.publishing.built_form_publishing import on_config_entity_post_save_built_form
    # Disable built_forms
    post_save_config_entity_initial.disconnect(
        on_config_entity_post_save_built_form, GlobalConfig, True,
        "built_form_publishing_on_config_entity_post_save")
    application_initialization(**kwargs)

    # Get access to the ConfigEntity fixtures for the configured client
    config_entities_fixture = resolve_fixture("config_entity",
                                              "config_entities",
                                              ConfigEntitiesFixture,
                                              settings.CLIENT)

    key_lambda = lambda config_entity: config_entity['key']
    region_key = map(key_lambda, config_entities_fixture.regions())[0]
    update_of_create_regions(region_keys=[region_key])
    project_key = map(key_lambda, config_entities_fixture.projects())[0]
    project = update_or_create_projects(region_keys=[region_key],
                                        project_keys=[project_key])[0]
    project_fixture = resolve_fixture("config_entity", "config_entities",
                                      ConfigEntitiesFixture, project.schema())
    scenario_key = map(key_lambda,
                       project_fixture.scenarios(project=project))[0]
    update_or_create_scenarios(region_keys=[region_key],
                               project_keys=[project_key],
                               scenario_keys=[scenario_key])
Example #3
0
    def handle(self, *args, **options):
        if not options['skip']:
            application_initialization()
            update_or_create_config_entities()

        user = update_or_create_users()['user']
        scenarios = update_or_create_scenarios()
        for scenario in scenarios:
            layer_library = scenario.presentation_set.filter(key=Keys.LAYER_LIBRARY_DEFAULT)[0]
            presentation_medium = layer_library.presentationmedium_set.get(db_entity_key=Keys.DB_ABSTRACT_PRIMARY_PARCEL_SOURCE)
            layer = Layer.objects.get(id=presentation_medium.id) # Cast
            layer_selection_class = get_or_create_layer_selection_class_for_layer(layer, scenario)
            layer_selection = layer_selection_class.objects.get(user=user, layer=layer)
            layer_selection.save()
Example #4
0
    def test_scenario_core(self):
        """
            Tests scenario creation
        :return:
        """
        scenarios = update_or_create_scenarios()
        scenario = scenarios[0]
        scenario_built_form_feature_manager = scenario.db_entity_feature_class(
            'scenario_built_form_layer').objects
        built_form_set = scenario.computed_built_forms()[0]
        built_form_ids = map(lambda built_form: built_form.id,
                             built_form_set.built_form_definitions.all())

        length = scenario_built_form_feature_manager.count()
        assert (length > 0)
        # Dirty up the features
        for scenario_built_form_feature_manager in scenario_built_form_feature_manager.all(
        ):
            scenario_built_form_feature_manager.built_form_id = random.choice(
                built_form_ids)
        scenario_built_form_feature_manager.save()

        core = ScenarioBuilder.objects.get(config_entity=scenario)
        timestamp = datetime.now()
        core.start(ids=map(lambda obj: obj.id,
                           scenario_built_form_feature_manager.all()))
        sleep(3)

        # Make sure we have values for all the analysis table classes
        for db_entity_key in [
                Keys.DB_ABSTRACT_GROSS_INCREMENT_FEATURE,
                DbEntityKey.INCREMENT, DbEntityKey.END_STATE
        ]:
            db_entity = scenario.db_entity_by_key(db_entity_key)
            FeatureClass = scenario.db_entity_feature_class(db_entity_key)
            # Assert that the correct number of rows exist
            assert (FeatureClass.objects.count() == length)
            # Assert that all rows were updated
            assert (
                len(FeatureClass.objects.filter(
                    updated__gte=timestamp)) == length,
                "For table {0}.{1}, not all rows were updated by the core, rather {2} out of {3}"
                .format(
                    scenario.schema(), db_entity.table,
                    len(FeatureClass.objects.filter(updated__gte=timestamp)),
                    length))
Example #5
0
    def handle(self, *args, **options):
        if not options['skip']:
            application_initialization()
            update_or_create_config_entities()

        user = update_or_create_users()['user']
        scenarios = update_or_create_scenarios()
        for scenario in scenarios:
            layer_library = scenario.presentation_set.filter(
                key=Keys.LAYER_LIBRARY_DEFAULT)[0]
            presentation_medium = layer_library.presentationmedium_set.get(
                db_entity_key=Keys.DB_ABSTRACT_PRIMARY_PARCEL_SOURCE)
            layer = Layer.objects.get(id=presentation_medium.id)  # Cast
            layer_selection_class = get_or_create_layer_selection_class_for_layer(
                layer, scenario)
            layer_selection = layer_selection_class.objects.get(user=user,
                                                                layer=layer)
            layer_selection.save()
Example #6
0
    def test_scenario_core(self):
        """
            Tests scenario creation
        :return:
        """
        scenarios = update_or_create_scenarios()
        scenario = scenarios[0]
        scenario_built_form_feature_manager = scenario.db_entity_feature_class('scenario_built_form_layer').objects
        built_form_set = scenario.computed_built_forms()[0]
        built_form_ids = map(lambda built_form: built_form.id, built_form_set.built_form_definitions.all())

        length = scenario_built_form_feature_manager.count()
        assert (length > 0)
        # Dirty up the features
        for scenario_built_form_feature_manager in scenario_built_form_feature_manager.all():
            scenario_built_form_feature_manager.built_form_id = random.choice(built_form_ids)
        scenario_built_form_feature_manager.save()

        core = ScenarioBuilder.objects.get(config_entity=scenario)
        timestamp = datetime.now()
        core.start(ids=map(lambda obj: obj.id, scenario_built_form_feature_manager.all()))
        sleep(3)

        # Make sure we have values for all the analysis table classes
        for db_entity_key in [Keys.DB_ABSTRACT_GROSS_INCREMENT_FEATURE, DbEntityKey.INCREMENT,
                              DbEntityKey.END_STATE]:
            db_entity = scenario.db_entity_by_key(db_entity_key)
            FeatureClass = scenario.db_entity_feature_class(db_entity_key)
            # Assert that the correct number of rows exist
            assert (FeatureClass.objects.count() == length)
            # Assert that all rows were updated
            assert (len(FeatureClass.objects.filter(updated__gte=timestamp)) == length,
                    "For table {0}.{1}, not all rows were updated by the core, rather {2} out of {3}".format(
                        scenario.schema(),
                        db_entity.table,
                        len(FeatureClass.objects.filter(updated__gte=timestamp)),
                        length))
Example #7
0
def update_or_create_config_entities(**kwargs):
    # Creating the precooked scenarios will cause everything else to be created.
    update_or_create_scenarios(**kwargs)
    recalculate_project_bounds()
 def test_import(self):
     call_command('footprint_init')
     assert (Scenario.objects.count(), update_or_create_scenarios())
def update_or_create_config_entities(**kwargs):
    # Creating the precooked scenarios will cause everything else to be created.
    update_or_create_scenarios(**kwargs)
    recalculate_project_bounds()
Example #10
0
 def test_import(self):
     call_command('footprint_init')
     assert(Scenario.objects.count(), update_or_create_scenarios())