1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- from datetime import timedelta
- from flexmeasures.data.models.generic_assets import GenericAsset
- from flexmeasures.data.models.time_series import Sensor
- from timely_beliefs.sensors.func_store.knowledge_horizons import x_days_ago_at_y_oclock
- class NewAssetWithSensors:
- def __init__(self, db, setup_generic_asset_types, setup_accounts, setup_data):
- self.db = db
- self.setup_generic_asset_types = setup_generic_asset_types
- self.setup_accounts = setup_accounts
- self.setup_data = setup_data
- self.test_battery = None
- self.price_sensor1 = None
- self.price_sensor2 = None
- self.relationships = list()
- def __enter__(self):
- self.test_battery = GenericAsset(
- name="test battery",
- generic_asset_type=self.setup_generic_asset_types["battery"],
- owner=None,
- attributes={"some-attribute": "some-value", "sensors_to_show": [1, 2]},
- )
- self.db.session.add(self.test_battery)
- self.db.session.flush()
- for attribute_name, sensor_name in zip(
- ("price_sensor1", "price_sensor2"), ("sensor1", "sensor2")
- ):
- sensor = Sensor(
- name=sensor_name,
- generic_asset=self.test_battery,
- event_resolution=timedelta(hours=1),
- unit="EUR/MWh",
- knowledge_horizon=(
- x_days_ago_at_y_oclock,
- {"x": 1, "y": 12, "z": "Europe/Paris"},
- ),
- attributes=dict(
- daily_seasonality=True,
- weekly_seasonality=True,
- yearly_seasonality=True,
- ),
- )
- setattr(self, attribute_name, sensor)
- self.db.session.add(sensor)
- self.db.session.flush()
- for attribute, sensor in zip(
- ("price_sensor1", "price_sensor2"), (self.price_sensor1, self.price_sensor2)
- ):
- if self.setup_data.get(attribute):
- if (
- self.test_battery.flex_context.get("inflexible-device-sensors")
- is None
- ):
- self.test_battery.flex_context["inflexible-device-sensors"] = list()
- self.test_battery.flex_context["inflexible-device-sensors"].append(
- sensor.id
- )
- self.db.session.add(self.test_battery)
- self.db.session.commit()
- return self
- def __exit__(self, exc_type, exc_val, exc_tb):
- # Delete sensors and test_battery
- for relationship in self.relationships:
- self.db.session.delete(relationship)
- self.db.session.commit()
- self.db.session.delete(self.price_sensor1)
- self.db.session.delete(self.price_sensor2)
- self.db.session.delete(self.test_battery)
- self.db.session.commit()
|