Source code for sfsimodels.models.systems
from collections import OrderedDict
from sfsimodels.models import SoilProfile, Foundation, Building, SDOFBuilding
from sfsimodels.exceptions import ModelError
from sfsimodels import functions as sf
import uuid
# class SoilSystem(object):
# id = None
# name = None
# type = "soil_system"
# _sp = SoilProfile()
# _soil_profile_id = None
#
# def __init__(self):
# self.inputs = ["id", "name", "soil_profile_id"]
#
# def to_dict(self):
# outputs = OrderedDict()
# skip_list = []
# for item in self.inputs:
# if item not in skip_list:
# value = self.__getattribute__(item)
# if "_id" in item and value is None:
# raise ModelError("Cannot export system with %s set to None" % item)
# if item not in skip_list:
# value = self.__getattribute__(item)
# outputs[item] = sf.collect_serial_value(value)
# return outputs
#
# def add_obj_to_system(self, obj):
# if hasattr(obj, "base_type"):
# if obj.base_type == "soil":
# self.sp = obj
# self._soil_profile_id = obj.id
#
# elif obj.base_type == "foundation":
# self.fd = obj
# self._foundation_id = obj.id
# elif obj.base_type == "building":
# self.bd = obj
# self._building_id = obj.id
#
# @property
# def soil_profile_id(self):
# if self._soil_profile_id is None:
# if self._sp.id is not None:
# self._soil_profile_id = self._sp.id
# return self._soil_profile_id
[docs]class SoilStructureSystem(object):
id = None
name = None
base_type = "system"
type = "sfs"
_unique_hash = None
_sp = SoilProfile()
_bd = SDOFBuilding()
_fd = Foundation()
_soil_profile_id = None
_building_id = None
_foundation_id = None
def __init__(self):
self.inputs = ["id", "name", "soil_profile_id", "building_id", "foundation_id"]
[docs] def to_dict(self, **kwargs):
outputs = OrderedDict()
skip_list = []
for item in self.inputs:
if item not in skip_list:
value = self.__getattribute__(item)
if "_id" in item and value is None:
raise ModelError("Cannot export system with %s set to None" % item)
if item not in skip_list:
value = self.__getattribute__(item)
outputs[item] = sf.collect_serial_value(value)
return outputs
[docs] def add_obj_to_system(self, obj):
if hasattr(obj, "base_type"):
if obj.base_type == "soil":
self.sp = obj
self._soil_profile_id = obj.id
elif obj.base_type == "foundation":
self.fd = obj
self._foundation_id = obj.id
elif obj.base_type == "building":
self.bd = obj
self._building_id = obj.id
@property
def soil_profile_id(self):
if self._soil_profile_id is None:
if self._sp.id is not None:
self._soil_profile_id = self._sp.id
return self._soil_profile_id
@property
def foundation_id(self):
if self._foundation_id is None:
if self._fd.id is not None:
self._foundation_id = self._fd.id
return self._foundation_id
@property
def building_id(self):
if self._building_id is None:
if self._bd.id is not None:
self._building_id = self._bd.id
return self._building_id
@property
def sp(self):
return self._sp
@sp.setter
def sp(self, obj):
# Could add assertions here for type?
self._sp = obj
self._soil_profile_id = obj.id
@property
def fd(self):
return self._fd
@fd.setter
def fd(self, obj):
# Could add assertions here for type?
self._fd = obj
self._foundation_id = obj.id
@property
def bd(self):
return self._bd
@bd.setter
def bd(self, obj):
# Could add assertions here for type?
self._bd = obj
self._building_id = obj.id
@property
def unique_hash(self):
if self._unique_hash is None:
self._unique_hash = uuid.uuid1()
return self._unique_hash