def set_object(self, store, param_name, value, is_editable=True): """ Updates a database object. :param store: a database store :param param_name: the parameter name :param value: the value to set :type value: a domain object :param is_editable: if the parameter can be modified interactivly """ detail = self._details.get(param_name) if detail is None: raise ValueError("%s is not a valid parameter" % (param_name, )) field_type = detail.get_parameter_type() if (value is not None and not isinstance(value, field_type)): raise TypeError( "%s must be a %s instance, not %r" % (param_name, field_type.__name__, type(value).__name__)) param = ParameterData.get_or_create(store, field_name=unicode(param_name)) if value is not None: value = unicode(value.id) param.field_value = value param.is_editable = is_editable self._values[param_name] = value
def set_object(self, store, param_name, value): """ Updates a database object. :param store: a database store :param param_name: the parameter name :param value: the value to set :type value: a domain object """ detail = self._details.get(param_name) if detail is None: raise ValueError("%s is not a valid parameter" % (param_name, )) field_type = detail.get_parameter_type() if (value is not None and not isinstance(value, field_type)): raise TypeError("%s must be a %s instance, not %r" % ( param_name, field_type.__name__, type(value).__name__)) param = ParameterData.get_or_create(store, field_name=unicode(param_name)) if value is not None: value = unicode(value.id) param.field_value = value param.is_editable = detail.is_editable self._values[param_name] = value
def _set_default_value(self, store, detail, value): if value is None: return if detail.type is bool: value = int(value) if value is not None: value = unicode(value) param_name = detail.key data = self._values.get(param_name) if data is None: data = ParameterData(store=store, field_name=param_name, field_value=value, is_editable=True) self._values[param_name] = data.field_value data.field_value = value
def _set_default_value(self, store, param_name): """Sets the default initial value for a param in the database If the param is not present in the ParameterData table, it will be created with the default initial value. """ if self._values.get(param_name, None) is not None: return detail = self.get_detail_by_name(param_name) value = detail.initial if value is None: return if detail.type is bool: value = int(value) if value is not None: value = unicode(value) data = ParameterData(store=store, field_name=param_name, field_value=value, is_editable=detail.is_editable) self._values[param_name] = data.field_value return data.field_value
def _get_model(self, store, detail): model = store.find(ParameterData, field_name=detail.key).one() if not model: value = sysparam.get(detail.key) if detail.type is bool: value = int(value) if value is not None: value = unicode(value) model = ParameterData(store=store, field_name=detail.key, field_value=value) return model
def _set_param_internal(self, store, param_name, value, expected_type): self._verify_detail(param_name, expected_type) param = ParameterData.get_or_create(store, field_name=unicode(param_name)) if value is not None and not type(value) is expected_type: raise TypeError("%s must be a %s, not %r" % ( param_name, expected_type, type(value).__name__)) # bool are represented as 1/0 if expected_type is bool: value = int(value) param.field_value = unicode(value) self.set_value_generic(param_name, param.field_value)
def _set_schema(self, field_name, field_value, is_editable=True): if field_value is not None: field_value = unicode(field_value) data = self.store.find(ParameterData, field_name=field_name).one() if data is None: store = new_store() ParameterData(store=store, field_name=field_name, field_value=field_value, is_editable=is_editable) store.commit(close=True) else: data.field_value = field_value