# coding= utf8 from web import * from datetime import datetime user_task_table = db.Table('user_task', db.Column('user_id', db.Integer, db.ForeignKey('user.id')), db.Column('task_id', db.Integer, db.ForeignKey('task.id')) ) class User(db.Model): """An admin user capable of viewing reports. """ __tablename__ = 'user' id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(80), unique=True, nullable=False) password = db.Column(db.String(256), nullable=False) authenticated = db.Column(db.Boolean, default=False) tasks = db.relationship('Task', secondary=user_task_table, backref=db.backref('users', lazy='dynamic')) def __init__(self, username, password): self.username = username self.password = bcrypt.generate_password_hash(password) def is_active(self): """True, as all users are active.""" return True def get_id(self): """Return the email address to satisfy Flask-Login's requirements.""" return self.id def is_authenticated(self): """Return True if the user is authenticated.""" return self.authenticated def is_anonymous(self): """False, as anonymous users aren't supported.""" return False def __repr__(self): return '' % self.username class Task(db.Model): enum_priority = ['COMMOM', 'IMPORTANT', 'CRITICAL', 'SERIOUS'] enum_status = ['OPEN', 'CLOSED', 'SECRET'] id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(80), unique=True, nullable=False) pubdate = db.Column(db.DateTime, nullable=True) duedate = db.Column(db.DateTime, nullable=False) attachfile = db.Column(db.String(80), nullable=True) description = db.Column(db.String(512), nullable=True) priority = db.Column(db.Integer, nullable=False) status = db.Column(db.Integer, nullable=False) def __init__(self, name, duedate, priority, status, pubdate=None, attachfile=None, description=None): self.name = name self.pubdate = pubdate self.duedate = duedate self.priority = priority self.attachfile = attachfile self.description = description self.status = status def __repr__(self): return '' % self.name def db_test(): user1 = User('admin', 'admin') user2 = User('nonadmin', 'nonadmin') user3 = User('Amy', 'amy') user4 = User('Bob', 'bob') user5 = User('Cindy', 'cindy') user6 = User('David', 'david') db.session.add(user1) db.session.add(user2) db.session.add(user3) db.session.add(user4) db.session.add(user5) db.session.add(user6) task1 = Task("Setting the Database", datetime.strptime('12/07/2013', '%m/%d/%Y'), 0, 1, datetime.today()) task2 = Task("another task", datetime.strptime('12/07/2013', '%m/%d/%Y'), 2, 0, datetime.today()) task3 = Task("Emergency!!", datetime.strptime('12/6/2016', '%m/%d/%Y'), 1, 0, datetime.today()) task4 = Task("hhhhhhhhh", datetime.strptime('4/07/2015', '%m/%d/%Y'), 3, 0, datetime.today()) task5 = Task("OMG-AKA", datetime.strptime('3/12/2016', '%m/%d/%Y'), 0, 1, datetime.today()) task6 = Task("赛高!", datetime.strptime('11/11/2015', '%m/%d/%Y'), 2, 0, datetime.today()) task7 = Task("asdfghj", datetime.strptime('12/07/2015', '%m/%d/%Y'), 2, 1, datetime.today()) task8 = Task("sdfadfadsfasd", datetime.strptime('12/07/2015', '%m/%d/%Y'), 2, 0, datetime.today()) task9 = Task("a secret task example", datetime.strptime('12/07/2015', '%m/%d/%Y'), 0, -1, datetime.today(), description='hahahahahaha\nhahahah') db.session.add(task1) db.session.add(task2) db.session.add(task3) db.session.add(task4) db.session.add(task5) db.session.add(task6) db.session.add(task7) db.session.add(task8) db.session.add(task9) task1.users = [user1, user5] task3.users = [user3, user5] task4.users = [user2, user3, user4] task5.users = [user5, user6] task8.users = [user1] print task8,user2 task8.users.append(user2) db.session.commit() if __name__ == '__main__': db.drop_all() db.create_all() db_test() list_task = Task.query.filter_by(status=0).all() print list_task