Ejemplo n.º 1
0
    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
Ejemplo n.º 2
0
    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
Ejemplo n.º 3
0
    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
Ejemplo n.º 4
0
    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
Ejemplo n.º 5
0
    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
Ejemplo n.º 6
0
 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
Ejemplo n.º 7
0
    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)
Ejemplo n.º 8
0
    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)
Ejemplo n.º 9
0
    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