Example #1
0
File: field.py Project: yetone/olo
    def __init__(self,
                 type_,
                 default=None,
                 name=None,
                 parser=None,
                 deparser=None,
                 primary_key=False,
                 on_update=None,
                 choices=None,
                 encrypt=False,
                 input=None,
                 output=None,
                 noneable=False,
                 attr_name=None,
                 version=None,
                 length=None,
                 auto_increment=False,
                 charset=None):

        if default is not None and noneable:
            noneable = False

        # auto increment id
        self.id = self.__class__.id + 1
        self.__class__.id = self.id

        self.type = type_
        self.name = name
        self.default = default
        self._parser = (parser if parser is not None else
                        lambda x: transform_type(x, self.type))
        self._deparser = (deparser if deparser is not None else
                          lambda x: transform_type(x, str))
        self._primary_key = primary_key
        self.on_update = on_update
        self.choices = choices
        self.encrypt = encrypt
        self.input = input
        self.output = output
        self.noneable = noneable if not primary_key else False
        self.attr_name = attr_name or name
        self.version = version
        self.length = length
        self.auto_increment = auto_increment
        self.charset = charset
        self._alias_name = None
        self._model_ref = lambda: None
        self.AES_KEY = ''
        self._getter = None
        self._setter = None

        if self.choices is None and isinstance(self.type, type) and issubclass(
                self.type, Enum):
            self.choices = self.type
Example #2
0
File: field.py Project: yetone/olo
 def _set_v1(self, obj, value):
     db = obj._get_db()
     db_key = self._get_db_field_key(obj)
     if value is None and self.noneable:
         # beansdb 不支持 set None
         db.db_delete(db_key)
         return
     value = transform_type(value, self.type)
     db.db_set(db_key, value)
Example #3
0
File: field.py Project: Ma233/olo
    def __init__(self,
                 type,
                 default=None,
                 name=None,
                 parser=None,
                 deparser=None,
                 primary_key=False,
                 on_update=None,
                 choices=None,
                 encrypt=False,
                 input=None,
                 output=None,
                 noneable=False,
                 attr_name=None,
                 version=None):

        if default is not None and noneable:
            noneable = False

        # auto increment id
        self.id = self.__class__.id + 1
        self.__class__.id = self.id

        self.type = type
        self.name = name
        self.default = default
        self._parser = (parser if parser is not None else
                        lambda x: transform_type(x, self.type))
        self._deparser = (deparser if deparser is not None else
                          lambda x: transform_type(x, str))
        self._primary_key = primary_key
        self.on_update = on_update
        self.choices = choices
        self.encrypt = encrypt
        self.input = input
        self.output = output
        self.noneable = noneable
        self.attr_name = attr_name or name
        self.version = version
        self._alias_name = None
        self._model_ref = lambda: None
Example #4
0
File: field.py Project: yetone/olo
 def _get(self, obj, objtype):
     attr_name = self.attr_name
     data = self._get_data(obj)
     parsed_data = self._get_parsed_data(obj)
     if attr_name in parsed_data:
         return parsed_data[attr_name]
     v = data.get(attr_name, missing)
     if v is not missing:
         if isinstance(v, Expression):
             return v
         if not type_checker(self.type, v) and (v is not None
                                                or not self.noneable):
             v = transform_type(v, self.type)
         if self.output:
             v = self.output(v)
         parsed_data[attr_name] = v
         return v
     if self.noneable or obj._olo_is_new:
         return
     raise AttributeError(  # pragma: no cover
         'Cannot found `{}` from `{}` instance'.format(
             self.name, obj.__class__.__name__))