Ejemplo n.º 1
0
 def __setattr__(self, name, value):
     if name in self.WHERE:
         value = self.WHERE[name]
     if (hasattr(self, "_Model__attributtes") and name in self.__attributtes
             and "datatype" in self.__attributtes[name]):
         datatype = self.__attributtes[name]["datatype"]
         new_value = None
         if value is None:
             new_value = value
         elif datatype == 'int':
             new_value = int(value)
         elif datatype == 'float':
             new_value = float(value)
         elif datatype == 'str':
             new_value = str(value)
         elif datatype == 'object_id':
             if value is None:
                 new_value = ObjectId()
             elif type(value) is bytes:
                 new_value = ObjectId(value)
             elif type(value) is str:
                 new_value = ObjectId(bytes(value))
             else:
                 new_value = value
         elif datatype == 'date':
             if type(value) is str:
                 new_value = datetime.datetime.strptime(value,
                                                        '%Y-%m-%d').date()
             elif type(value) is int:
                 new_value = datetime.date.fromtimestamp(value)
             elif type(value) is datetime.date:
                 new_value = value
             else:
                 new_value = None
         elif datatype == 'list':
             if type(value) is list:
                 new_value = ModelList(value)
         elif datatype == 'dict':
             if type(value) is dict:
                 new_value = ModelObject(
                     name, self.__attributtes[name]["attributes"], **value)
                 new_value.DB = self.DB
                 new_value.COLLECTION = self.COLLECTION
         if datatype not in ['list', 'dict']:
             self.__updated__attr[name] = new_value
         return object.__setattr__(self, name, new_value)
     return object.__setattr__(self, name, value)