Beispiel #1
0
def area_from_dict(description, config=None):
    def optional(attr):
        return _instance_from_dict(
            description[attr]) if attr in description else None

    try:
        if 'type' in description:
            return _leaf_from_dict(description)  # Area is a Leaf
        name = description['name']
        uuid = description.get('uuid', None)
        if 'children' in description:
            children = [
                area_from_dict(child) for child in description['children']
            ]
        else:
            children = None
        grid_fee_percentage = description.get('grid_fee_percentage', None)
        area = Area(name,
                    children,
                    uuid,
                    optional('strategy'),
                    optional('appliance'),
                    config,
                    optional('budget_keeper'),
                    grid_fee_percentage=grid_fee_percentage)
        if "display_type" in description:
            area.display_type = description["display_type"]
        return area
    except (json.JSONDecodeError, KeyError, TypeError, ValueError) as error:
        raise ValueError("Input is not a valid area description (%s)" %
                         str(error))
Beispiel #2
0
def area_from_dict(description, config):
    def optional(attr):
        return _instance_from_dict(
            description[attr]) if attr in description else None

    try:
        if 'type' in description:
            return _leaf_from_dict(description, config)  # Area is a Leaf
        name = description['name']
        uuid = description.get('uuid', None)
        external_connection_available = description.get(
            'allow_external_connection', False)
        baseline_peak_energy_import_kWh = description.get(
            'baseline_peak_energy_import_kWh', None)
        baseline_peak_energy_export_kWh = description.get(
            'baseline_peak_energy_export_kWh', None)
        import_capacity_kVA = description.get('import_capacity_kVA', None)
        export_capacity_kVA = description.get('export_capacity_kVA', None)
        if key_in_dict_and_not_none(description, 'children'):
            children = [
                area_from_dict(child, config)
                for child in description['children']
            ]
        else:
            children = None
        grid_fee_percentage = description.get('grid_fee_percentage', None)
        grid_fee_constant = description.get('grid_fee_constant', None)
        area = Area(
            name,
            children,
            uuid,
            optional('strategy'),
            config,
            optional('budget_keeper'),
            grid_fee_percentage=grid_fee_percentage,
            grid_fee_constant=grid_fee_constant,
            external_connection_available=external_connection_available
            and config.external_connection_enabled,
            throughput=ThroughputParameters(
                baseline_peak_energy_import_kWh=baseline_peak_energy_import_kWh,
                baseline_peak_energy_export_kWh=baseline_peak_energy_export_kWh,
                import_capacity_kVA=import_capacity_kVA,
                export_capacity_kVA=export_capacity_kVA))
        if "display_type" in description:
            area.display_type = description["display_type"]
        return area
    except (json.JSONDecodeError, KeyError, TypeError, ValueError) as error:
        raise ValueError("Input is not a valid area description (%s)" %
                         str(error)) from error