X-Git-Url: http://git.datanom.net/flask-test.git/blobdiff_plain/43064c75212b8e5f05e362d8ee9acc58287f930b..db4f0ba9d4aec596f179335f1d86b3dd2bb206c6:/app/models.py?ds=sidebyside diff --git a/app/models.py b/app/models.py new file mode 100644 index 0000000..6013939 --- /dev/null +++ b/app/models.py @@ -0,0 +1,56 @@ +from app import db +from hashlib import md5 + +class User(db.Model): + id = db.Column(db.Integer, primary_key=True) + nickname = db.Column(db.String(64), index=True, unique=True) + email = db.Column(db.String(120), index=True, unique=True) + posts = db.relationship('Post', backref='author', lazy='dynamic') + about_me = db.Column(db.String(140)) + last_seen = db.Column(db.DateTime) + + @property + def is_authenticated(self): + return True + + @property + def is_active(self): + return True + + @property + def is_anonymous(self): + return False + + def get_id(self): + try: + return unicode(self.id) # python 2 + except NameError: + return str(self.id) # python 3 + + def avatar(self, size): + return 'http://www.gravatar.com/avatar/%s?d=mm&s=%d' % (md5(self.email.encode('utf-8')).hexdigest(), size) + + @staticmethod + def make_unique_nickname(nickname): + if User.query.filter_by(nickname=nickname).first() is None: + return nickname + version = 2 + while True: + new_nickname = nickname + str(version) + if User.query.filter_by(nickname=new_nickname).first() is None: + break + version += 1 + return new_nickname + + def __repr__(self): + return '' % (self.nickname) + +class Post(db.Model): + id = db.Column(db.Integer, primary_key = True) + body = db.Column(db.String(140)) + timestamp = db.Column(db.DateTime) + user_id = db.Column(db.Integer, db.ForeignKey('user.id')) + + def __repr__(self): + return '' % (self.body) +