예제 #1
0
    def store_exposure_assets(self):
        """Load exposure assets and write them to database."""
        [emdl] = models.inputs4job(self.job_ctxt.job_id, "exposure")
        path = os.path.join(self.job_ctxt.base_path, emdl.path)

        exposure_parser = exposure.ExposureModelFile(path)
        writer = ExposureDBWriter(emdl)
        writer.serialize(exposure_parser)
예제 #2
0
class ExposureDBWriterTestCase(unittest.TestCase, helpers.DbTestMixin):
    """
    Test the code to serialize exposure model to DB.
    """
    def setUp(self):
        self.writer = ExposureDBWriter(self.default_user())

    def test_read_exposure(self):
        path = os.path.join(helpers.SCHEMA_EXAMPLES_DIR, TEST_FILE)
        parser = ExposurePortfolioFile(path)

        # call tested function
        self.writer.serialize(parser)

        # test results
        model = self.writer.model

        self.assertFalse(model is None)

        # check model fields
        self.assertEquals('Collection of existing building in downtown Pavia',
                          model.description)
        self.assertEquals('buildings', model.category)
        self.assertEquals('EUR', model.unit)

        # check asset instances
        assets = sorted(model.exposuredata_set.all(),
                        key=lambda e: e.value)

        def _to_site(pg_point):
            return shapes.Site(pg_point.x, pg_point.y)

        self.assertEquals('asset_01', assets[0].asset_ref)
        self.assertEquals(150000, assets[0].value)
        self.assertEquals('RC/DMRF-D/LR',
                          assets[0].vf_ref)
        self.assertEquals('RC-LR-PC', assets[0].structure_type)
        self.assertEquals(shapes.Site(9.15000, 45.16667),
                          _to_site(assets[0].site))

        self.assertEquals('asset_02', assets[1].asset_ref)
        self.assertEquals(250000, assets[1].value)
        self.assertEquals('RC/DMRF-D/LR',
                          assets[1].vf_ref)
        self.assertEquals('RC-HR-PC', assets[1].structure_type)
        self.assertEquals(shapes.Site(9.15333, 45.12200),
                          _to_site(assets[1].site))

        self.assertEquals('asset_03', assets[2].asset_ref)
        self.assertEquals(500000, assets[2].value)
        self.assertEquals('RC/DMRF-D/LR',
                          assets[2].vf_ref)
        self.assertEquals('RC-LR-PC', assets[2].structure_type)
        self.assertEquals(shapes.Site(9.14777, 45.17999),
                          _to_site(assets[2].site))
예제 #3
0
 def setUp(self):
     path = os.path.join(helpers.SCHEMA_EXAMPLES_DIR, TEST_FILE)
     inputs = [("exposure", path)]
     self.job = self.setup_classic_job(inputs=inputs)
     [input] = models.inputs4job(self.job.id, input_type="exposure",
                                 path=path)
     writer = ExposureDBWriter(input)
     exposure_parser = exposure.ExposureModelFile(path)
     writer.serialize(exposure_parser)
     self.model = writer.model
     self.epsilon_provider = general.EpsilonProvider(dict())
예제 #4
0
    def store_exposure_assets(self):
        """Load exposure assets and write them to database."""
        [emi] = models.inputs4job(self.job_ctxt.job_id, "exposure")
        if emi.exposuremodel_set.all().count() > 0:
            return

        path = os.path.join(self.job_ctxt.base_path, emi.path)
        exposure_parser = exposure.ExposureModelFile(path)
        writer = ExposureDBWriter(emi)
        writer.serialize(exposure_parser)
        return emi.model()
예제 #5
0
 def setUp(self):
     path = os.path.join(helpers.SCHEMA_EXAMPLES_DIR, TEST_FILE)
     inputs = [("exposure", path)]
     self.job = self.setup_classic_job(inputs=inputs)
     [input] = models.inputs4job(self.job.id,
                                 input_type="exposure",
                                 path=path)
     writer = ExposureDBWriter(input)
     exposure_parser = exposure.ExposureModelFile(path)
     writer.serialize(exposure_parser)
     self.model = writer.model
     self.epsilon_provider = general.EpsilonProvider(
         dict(EPSILON_RANDOM_SEED=37))
예제 #6
0
 def setUp(self):
     [input] = models.inputs4job(self.job.id, input_type="exposure")
     self.writer = ExposureDBWriter(input)
예제 #7
0
class ExposureDBWriterTestCase(unittest.TestCase, helpers.DbTestCase):
    """
    Test the code to serialize exposure model to DB.
    """
    job = None
    path = os.path.join(helpers.SCHEMA_EXAMPLES_DIR, TEST_FILE)

    @classmethod
    def setUpClass(cls):
        inputs = [("exposure", cls.path)]
        cls.job = cls.setup_classic_job(inputs=inputs)

    @classmethod
    def tearDownClass(cls):
        cls.teardown_job(cls.job)

    def setUp(self):
        [input] = models.inputs4job(self.job.id, input_type="exposure")
        self.writer = ExposureDBWriter(input)

    def test_read_exposure(self):
        parser = ExposureModelFile(self.path)

        # call tested function
        self.writer.serialize(parser)

        # test results
        model = self.writer.model

        self.assertFalse(model is None)

        # Make sure the exposure model is associated with the proper
        # input and job.
        self.assertEqual(self.path, model.input.path)
        self.assertEqual("exposure", model.input.input_type)
        self.assertEqual(1, len(models.inputs4job(self.job.id)))

        # check model fields
        self.assertEqual("Collection of existing building in downtown Pavia",
                          model.description)
        self.assertEqual("buildings", model.category)

        self.assertEqual("per_asset", model.area_type)
        self.assertEqual("GBP", model.area_unit)

        self.assertEqual("per_area", model.coco_type)
        self.assertEqual("CHF", model.coco_unit)

        self.assertEqual("aggregated", model.reco_type)
        self.assertEqual("EUR", model.reco_unit)

        self.assertEqual("aggregated", model.stco_type)
        self.assertEqual("USD", model.stco_unit)

        self.assertEqual("Pavia taxonomy", model.taxonomy_source)

        # check asset instances
        assets = sorted(model.exposuredata_set.all(), key=lambda e: e.value)

        def _to_site(pg_point):
            return Site(pg_point.x, pg_point.y)

        self.assertEqual("asset_01", assets[0].asset_ref)
        self.assertEqual(120, assets[0].area)
        self.assertEqual(12.95, assets[0].coco)
        self.assertEqual(55, assets[0].deductible)
        self.assertEqual(999, assets[0].ins_limit)
        self.assertEqual(7, assets[0].number_of_units)
        self.assertEqual(109876, assets[0].reco)
        self.assertEqual(150000, assets[0].stco)
        self.assertEqual(150000, assets[0].value)
        self.assertEqual("RC/DMRF-D/LR", assets[0].taxonomy)
        self.assertEqual(Site(9.15000, 45.16667), _to_site(assets[0].site))
        self.assertEqual(0, assets[0].occupancy_set.count())

        self.assertEqual("asset_02", assets[1].asset_ref)
        self.assertEqual(119, assets[1].area)
        self.assertEqual(21.95, assets[1].coco)
        self.assertEqual(66, assets[1].deductible)
        self.assertEqual(1999, assets[1].ins_limit)
        self.assertEqual(6, assets[1].number_of_units)
        self.assertEqual(205432, assets[1].reco)
        self.assertEqual(250000, assets[1].stco)
        self.assertEqual(250000, assets[1].value)
        self.assertEqual("RC/DMRF-D/HR", assets[1].taxonomy)
        self.assertEqual(Site(9.15333, 45.12200), _to_site(assets[1].site))
        day, night = sorted(assets[1].occupancy_set.all(),
                            key=lambda o: o.description)
        self.assertEqual(12, day.occupants)
        self.assertEqual("day", day.description)
        self.assertEqual(50, night.occupants)
        self.assertEqual("night", night.description)

        self.assertEqual("asset_03", assets[2].asset_ref)
        self.assertEqual(118, assets[2].area)
        self.assertEqual(30.95, assets[2].coco)
        self.assertEqual(77, assets[2].deductible)
        self.assertEqual(2888, assets[2].ins_limit)
        self.assertEqual(5, assets[2].number_of_units)
        self.assertEqual(495432, assets[2].reco)
        self.assertEqual(500000, assets[2].stco)
        self.assertEqual(500000, assets[2].value)
        self.assertEqual("RC/DMRF-D/LR", assets[2].taxonomy)
        self.assertEqual(Site(9.14777, 45.17999), _to_site(assets[2].site))
        morning, afternoon = sorted(assets[2].occupancy_set.all(),
                                    key=lambda o: o.description)
        self.assertEqual(5, afternoon.occupants)
        self.assertEqual("late afternoon", afternoon.description)
        self.assertEqual(36, morning.occupants)
        self.assertEqual("early morning", morning.description)
예제 #8
0
 def setUp(self):
     [input] = models.inputs4job(self.job.id, input_type="exposure")
     self.writer = ExposureDBWriter(input)
예제 #9
0
class ExposureDBWriterTestCase(unittest.TestCase, helpers.DbTestCase):
    """
    Test the code to serialize exposure model to DB.
    """
    job = None
    path = os.path.join(helpers.SCHEMA_EXAMPLES_DIR, TEST_FILE)

    @classmethod
    def setUpClass(cls):
        inputs = [("exposure", cls.path)]
        cls.job = cls.setup_classic_job(inputs=inputs)

    @classmethod
    def tearDownClass(cls):
        cls.teardown_job(cls.job)

    def setUp(self):
        [input] = models.inputs4job(self.job.id, input_type="exposure")
        self.writer = ExposureDBWriter(input)

    def test_read_exposure(self):
        parser = ExposureModelFile(self.path)

        # call tested function
        self.writer.serialize(parser)

        # test results
        model = self.writer.model

        self.assertFalse(model is None)

        # Make sure the exposure model is associated with the proper
        # input and job.
        self.assertEqual(self.path, model.input.path)
        self.assertEqual("exposure", model.input.input_type)
        self.assertEqual(1, len(models.inputs4job(self.job.id)))

        # check model fields
        self.assertEqual("Collection of existing building in downtown Pavia",
                         model.description)
        self.assertEqual("buildings", model.category)

        self.assertEqual("per_asset", model.area_type)
        self.assertEqual("GBP", model.area_unit)

        self.assertEqual("per_area", model.coco_type)
        self.assertEqual("CHF", model.coco_unit)

        self.assertEqual("aggregated", model.reco_type)
        self.assertEqual("EUR", model.reco_unit)

        self.assertEqual("aggregated", model.stco_type)
        self.assertEqual("USD", model.stco_unit)

        self.assertEqual("Pavia taxonomy", model.taxonomy_source)

        # check asset instances
        assets = sorted(model.exposuredata_set.all(), key=lambda e: e.value)

        def _to_site(pg_point):
            return Site(pg_point.x, pg_point.y)

        self.assertEqual("asset_01", assets[0].asset_ref)
        self.assertEqual(120, assets[0].area)
        self.assertEqual(12.95, assets[0].coco)
        self.assertEqual(55, assets[0].deductible)
        self.assertEqual(999, assets[0].ins_limit)
        self.assertEqual(7, assets[0].number_of_units)
        self.assertEqual(109876, assets[0].reco)
        self.assertEqual(150000, assets[0].stco)
        self.assertEqual(150000, assets[0].value)
        self.assertEqual("RC/DMRF-D/LR", assets[0].taxonomy)
        self.assertEqual(Site(9.15000, 45.16667), _to_site(assets[0].site))
        self.assertEqual(0, assets[0].occupancy_set.count())

        self.assertEqual("asset_02", assets[1].asset_ref)
        self.assertEqual(119, assets[1].area)
        self.assertEqual(21.95, assets[1].coco)
        self.assertEqual(66, assets[1].deductible)
        self.assertEqual(1999, assets[1].ins_limit)
        self.assertEqual(6, assets[1].number_of_units)
        self.assertEqual(205432, assets[1].reco)
        self.assertEqual(250000, assets[1].stco)
        self.assertEqual(250000, assets[1].value)
        self.assertEqual("RC/DMRF-D/HR", assets[1].taxonomy)
        self.assertEqual(Site(9.15333, 45.12200), _to_site(assets[1].site))
        day, night = sorted(assets[1].occupancy_set.all(),
                            key=lambda o: o.category)
        self.assertEqual(12, day.occupants)
        self.assertEqual("day", day.category)
        self.assertEqual(50, night.occupants)
        self.assertEqual("night", night.category)

        self.assertEqual("asset_03", assets[2].asset_ref)
        self.assertEqual(118, assets[2].area)
        self.assertEqual(30.95, assets[2].coco)
        self.assertEqual(77, assets[2].deductible)
        self.assertEqual(2888, assets[2].ins_limit)
        self.assertEqual(5, assets[2].number_of_units)
        self.assertEqual(495432, assets[2].reco)
        self.assertEqual(500000, assets[2].stco)
        self.assertEqual(500000, assets[2].value)
        self.assertEqual("RC/DMRF-D/LR", assets[2].taxonomy)
        self.assertEqual(Site(9.14777, 45.17999), _to_site(assets[2].site))
        average, transit = sorted(assets[2].occupancy_set.all(),
                                  key=lambda o: o.category)
        self.assertEqual(5, transit.occupants)
        self.assertEqual("transit", transit.category)
        self.assertEqual(36, average.occupants)
        self.assertEqual("average", average.category)
예제 #10
0
 def setUp(self):
     self.writer = ExposureDBWriter(self.default_user())