Example #1
0
class Answer(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    content = db.Column(db.String(144), nullable=False)
    createdOn = db.Column(db.DateTime, default=datetime.datetime.utcnow)

    user_id = db.Column(db.Integer,
                        db.ForeignKey('account.id'),
                        nullable=False)
    post_id = db.Column(db.Integer, db.ForeignKey('post.id'), nullable=False)

    def __init__(self, content, user_id, post_id):
        self.content = content
        self.user_id = user_id
        self.post_id = post_id

    @staticmethod
    def deleteUnconnectedAnswers():
        stmt = text("SELECT Answer.id, Answer.post_id FROM Answer")
        res = db.engine.execute(stmt)

        for row in res:
            stmt = text("SELECT * FROM Post where Post.id = :postId").params(
                postId=row[1])
            result = db.engine.execute(stmt)
            if (result == ""):
                stmt = text("Delete FROM Answer where Answer.id = :answerId"
                            ).params(answerId=row[0])
                db.engine.execute(stmt)

        return True
Example #2
0
class Group(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(144), nullable=False)

    def __init__(self, name):
        self.name = name

    @staticmethod
    def isEmpty(groupId):
        stmt = text("SELECT COUNT (*) FROM Post"
            " WHERE Post.group_id = :groupId").params(groupId=groupId)
        res = db.engine.execute(stmt)

        if (res == 0):
            return True

        return False

    @staticmethod
    def getUsers(groupId):
        stmt = text("SELECT u.id, u.username "
            " FROM account u, \"group\" g, groupuser gu"
            " WHERE gu.user_id = u.id AND g.id = :groupId").params(groupId=groupId)
            
        res = db.engine.execute(stmt)
        return [{"id": row[0], "username": row[1]} for row in res]
        
Example #3
0
class User(db.Model):

    __tablename__ = "account"

    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(144), nullable=False)
    password = db.Column(db.String(144), nullable=False)
    messageCount = db.Column(db.Integer)
    admin = db.Column(db.Boolean, nullable=False)

    groupusers = db.relationship("Groupuser", backref='account', lazy=True)

    def __init__(self, username, password):
        self.username = username
        self.password = password
        self.messageCount = 0
        if (username == "admin"):
            self.admin = True
        else:
            self.admin = False

    def get_id(self):
        return self.id

    def is_active(self):
        return True

    def is_anonymous(self):
        return False

    def is_authenticated(self):
        return True

    def is_admin(self):
        return self.admin

    @staticmethod
    def getGroups(userId):
        stmt = text(
            "SELECT g.id, g.name "
            " FROM \"group\" g, account u, groupuser gu"
            " WHERE gu.user_id = :userId AND g.id = gu.group_id").params(
                userId=userId)

        res = db.engine.execute(stmt)
        return [{"id": row[0], "name": row[1]} for row in res]

    @staticmethod
    def getMessageCount(userId):
        stmt = text("SELECT COUNT (*) FROM Post"
                    " WHERE Post.user_id = :userId").params(userId=userId)
        postCount = db.engine.execute(stmt).fetchone()

        stmt = text("SELECT COUNT (*) FROM Answer"
                    " WHERE Answer.user_id = :userId").params(userId=userId)
        answerCount = db.engine.execute(stmt).fetchone()

        return int(postCount[0]) + int(answerCount[0])
Example #4
0
class Groupuser(db.Model):
    id = db.Column(db.Integer, primary_key=True)

    user_id = db.Column(db.Integer, db.ForeignKey('account.id'),
        nullable=False)
    group_id = db.Column(db.Integer, db.ForeignKey('group.id'),
        nullable=False)

    def __init__(self, userId, groupId):
        self.user_id = userId
        self.group_id = groupId
Example #5
0
class Area(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(144), nullable=False)
    messageCount = db.Column(db.Integer, default=0)

    def __init__(self, name):
        self.name = name

    @staticmethod
    def getMessageCount(areaId):
        stmt = text("SELECT COUNT (*) FROM Post"
                    " WHERE Post.area_id = :areaId").params(areaId=areaId)
        res = db.engine.execute(stmt).fetchone()

        return int(res[0])
Example #6
0
class Post(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(144), nullable=False)
    content = db.Column(db.String(144), nullable=False)
    createdOn = db.Column(db.DateTime, default=datetime.datetime.utcnow)
    messageCount = db.Column(db.Integer, default=0)

    user_id = db.Column(db.Integer,
                        db.ForeignKey('account.id'),
                        nullable=False)
    area_id = db.Column(db.Integer, db.ForeignKey('area.id'))
    group_id = db.Column(db.Integer, db.ForeignKey('group.id'))

    def __init__(self, title, content, user_id, area_id, group_id):
        self.title = title
        self.content = content
        self.user_id = user_id
        self.area_id = area_id
        self.group_id = group_id

    @staticmethod
    def getMessageCount(postId):
        stmt = text("SELECT COUNT (*) FROM Answer"
                    " WHERE Answer.post_id = :postId").params(postId=postId)
        res = db.engine.execute(stmt).fetchone()

        return int(res[0])

    @staticmethod
    def getRelatedAnswers(postId):
        stmt = text(
            "SELECT * FROM Answer"
            " WHERE (Answer.post_id = :postId) ORDER BY answer.createdOn ASC"
        ).params(postId=postId)
        res = db.engine.execute(stmt)

        return res

    @staticmethod
    def deleteGroupPosts(groupId):
        stmt = text(
            "DELETE FROM Post"
            " WHERE (Post.group_id = :groupId)").params(groupId=groupId)
        db.engine.execute(stmt)
        Answer.deleteUnconnectedAnswers()

        return True

    @staticmethod
    def deleteAreaPosts(areaId):
        stmt = text("DELETE FROM Post"
                    " WHERE (Post.area_id = :areaId)").params(areaId=areaId)
        db.engine.execute(stmt)
        Answer.deleteUnconnectedAnswers()

        return True