class User(Model): __table__ = 'users' id = StringField(primary_key=True, default=next_id, ddl='varchar(50)') email = StringField(updatable=False, ddl='varchar(50)') password = StringField(ddl='varchar(50)') admin = BooleanField() name = StringField(ddl='varchar(50)') image = StringField(ddl='varchar(500)') created_at = FloatField(updatable=False, default=time.time)
class Comment(Model): __table__ = 'comments' id = StringField(primary_key=True, default=next_id, ddl='varchar(50)') blog_id = StringField(updatable=False, ddl='varchar(50)') user_id = StringField(updatable=False, ddl='varchar(50)') user_name = StringField(ddl='varchar(50)') user_image = StringField(ddl='varchar(500)') content = TextField() created_at = FloatField(updatable=False, default=time.time)
class Attachment(Model): u'附件' __table__ = 'attachments' id = StringField(primary_key=True, default=next_id, ddl='varchar(50)') user_id = StringField(updatable=False, ddl='varchar(50)') local_name = StringField(ddl='varchar(50)') file_name = StringField(ddl='varchar(500)') file_type = StringField(ddl='varchar(200)') file_size = IntegerField() created_at = FloatField(updatable=False, default=time.time)
class Blog(Model): __table__ = 'blogs' id = StringField(primary_key=True, default=next_id(), ddl='varchar(50)') user_id = StringField(updatable=False, ddl='varchar(50)') user_name = StringField(ddl='varchar(50)') user_image = StringField(ddl='varchar(50)') name = StringField(ddl='varchar(50)') summary = StringField(ddl='varchar(50)') content = TextField() created_at = FloatField(updatable=False, default=time.time)
class User(Model): ''' 日期和时间用float类型存储在数据库中,而不是datetime类型, 这么做的好处是不必关心数据库的时区以及时区转换问题,排序非常简单, 显示的时候,只需要做一个float到str的转换,也非常容易。 ''' __table__ = 'users' id = StringField(primary_key=True, default=next_id, ddl='varchar(50)') email = StringField(updatable=True, ddl='varchar(50)') password = StringField(ddl='varchar(50)') admin = BooleanField() name = StringField(ddl='varchar(50)') image = StringField(ddl='varchar(50)') created_at = FloatField(updatable=False, default=time.time)
class Device(Model): __table__ = 'device' id = StringField(primary_key=True, ddl='varchar(32)', default=next_id) location = StringField(ddl='varchar(50)') mac = StringField(ddl='varchar(50)') dev_type = StringField(ddl='varchar(50)') created_at = FloatField(updatable=False, default=time.time) def create(self): #print self.location,self.mac try: if self.location and self.mac: self.insert() return self.id else: return None except Exception as e: return None def creator(self, device_id): return self.find_first('where id = ?', device_id) def update_info(self): try: if self.location and self.mac: dev_info = self.find_first('where mac = ?', self.mac) dev_info.location = self.location dev_info.update() return dev_info.id else: return None except: return None def get_device_by_mac(self, mac): #mac_wrapped = get_md5(mac) device = self.find_first('where mac = ?', mac) if device: return device return None
class Image(Model): __table__ = 'image' id = StringField(primary_key=True, ddl='varchar(32)', default=next_id) position_id = StringField(ddl='varchar(32)') path = StringField(ddl='varchar(200)') created_at = FloatField(ddl='double', updatable=False, default=time.time) def validate(self): if os.path.exists(self.path): return True return False def create(self): #self.created_at = time.time() try: self.insert() return self.id except: return None def count_by_position_id(self, position_id): return self.count_by('where position_id = ?', position_id)
class User(Model): __table__ = 'user' id = StringField(primary_key=True, ddl='varchar(32)', default=next_id) email = StringField(updatable=False, ddl='varchar(50)') password = StringField(ddl='varchar(50)') permission = IntegerField() name = StringField(ddl='varchar(50)') created_at = FloatField(updatable=False, default=time.time) vali_email = validators.Email(not_empty=True, strip=True, messages={ 'noAt': u'这可不是一个正常的邮箱', 'empty': u'邮箱不能爲空' }) vali_name = formencode.All( validators.String(not_empty=True, strip=True, min=4, max=24, messages={ 'empty': u'用户名不能为空', 'tooLong': u'这么长的用户名没有必要吧', 'tooShort': u'用户名长度不能少于4' }), validators.PlainText(messages={'invalid': u'用户名只能包含数字,字母和下划线'})) vali_password = validators.String(not_empty=True, messages={'empty': u'忘记设置密码了'}) vali_items = { 'email': vali_email, 'name': vali_name, 'password': vali_password } def validate(self): self.errors = {} for k, vali in self.vali_items.items(): try: vali.to_python(self[k]) except formencode.Invalid as e: self.errors[k] = e if self.errors: return False return True def create(self): self.created_at = time.time() if not self.validate(): return if User.find_first('where email = ?', self.email): self.errors = {'email': u'此email已被占用'} return if User.find_first('where name = ?', self.name): self.errors = {'name': u'此用戶名已被注冊'} return if not self.password_confirm: self.errors = {'password_confirm': u'确认密码不能为空'} return if self.password != self.password_confirm: self.errors = {'password': u'兩次密碼輸入不一致'} return self.password = hash_password(self.password) self.insert() return self.id def change_password(self, origin_password, password, password_confirm): if not origin_password: self.errors['origin_password'] = u'当前密码不能为空' if not password: self.errors['password'] = u'密码不能为空' if not password_confirm: self.errors['password_confirm'] = u'确认密码不能为空' if password != password_confirm: self.errors['password_confirm'] = u'两次密码不一致' if self.errors: return False self.password = hash_password(self.password) self.update()
from transwarp.orm import Model, StringField, BooleanField, FloatField, TextField def next_id(): return '%015d%s000' % (int(time.time() * 1000), uuid.uuid4().hex) class User(Model): __table__ = 'users' id = StringField(primary_key=True, default=next_id, ddl='varchar(50)') email = StringField(updatable=False, ddl='varchar(50)') password = StringField(ddl='varchar(50)') admin = BooleanField() name = StringField(ddl='varchar(50)') image = StringField(ddl='varchar(500)') created_at = FloatField(updatable=False, default=time.time) class Blog(Model): __table__ = 'blogs' id = StringField(primary_key=True, default=next_id, ddl='varchar(50)') user_id = StringField(updatable=False, ddl='varchar(50)') user_name = StringField(ddl='varchar(50)') user_image = StringField(ddl='varchar(500)') name = StringField(ddl='varchar(50)') summary = StringField(ddl='varchar(200)') content = TextField() created_at = FloatField(updatable=False, default=time.time)