Advertisement
Shell_Casing

example models.py

Jul 28th, 2018
332
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.61 KB | None | 0 0
  1. from blog_app import db, login_manager, app
  2. from datetime import datetime
  3. from flask_login import UserMixin
  4. from itsdangerous import TimedJSONWebSignatureSerializer as TJWSS
  5.  
  6. @login_manager.user_loader
  7. def load_user(user_id):
  8.     return User.query.get(int(user_id))
  9.  
  10.  
  11. class User(db.Model, UserMixin):
  12.     id = db.Column(db.Integer, primary_key=True)
  13.     username = db.Column(db.String(20), unique=True, nullable=False)
  14.     email = db.Column(db.String(120), unique=True, nullable=False)
  15.     image = db.Column(db.String(20), nullable=False, default='default.jpg')
  16.     password = db.Column(db.String(60), nullable=False)
  17.     posts = db.relationship('Post', backref='author', lazy=True)
  18.  
  19.     def get_reset_token(self, expires=1800):
  20.         s = TJWSS(app.config['SECRET_KEY'], expires)
  21.         return s.dumps({'user_id': self.id}).decode('utf-8')
  22.  
  23.     @staticmethod
  24.     def verify_reset_token(token):
  25.         s = TJWSS(app.config['SECRET_KEY'])
  26.         try:
  27.             user_id = s.loads(token)['user_id']
  28.         except:
  29.             return None
  30.         return User.query.get(user_id)
  31.  
  32.     def __repr__(self):
  33.         return f"User('{self.username}', '{self.email}', '{self.image}'')"
  34.  
  35.  
  36. class Post(db.Model):
  37.     id = db.Column(db.Integer, primary_key=True)
  38.     title = db.Column(db.String(100), nullable=False)
  39.     date_posted = db.Column(db.DateTime, nullable=False, default=datetime.utcnow)
  40.     content = db.Column(db.Text(100), nullable=False)
  41.     user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False)
  42.  
  43.     def __repr__(self):
  44.         return f"User('{self.title}', '{self.date_posted}')"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement