models.py 4.46 KB
# 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 '<models.User %r>' % 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 '<models.Task %r>' % 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