def before_request():
    if current_user.is_authenticated:
        try:
            current_user.last_online = datetime.now().strftime(
                "%Y-%m-%d %H:%M:%S")
            db_session.commit()
            db_session.flush()
        except:
            db_session.rollback()
Exemple #2
0
 def remove(cid: int):
     from funding.factory import db_session
     from flask.ext.login import current_user
     if current_user.id != user_id and not current_user.admin:
         raise Exception("no rights to remove this comment")
     comment = Comment.get(cid=cid)
     try:
         comment.delete()
         db_session.commit()
         db_session.flush()
     except:
         db_session.rollback()
         raise
 def edit(email: str, password: str):
     from funding.factory import db_session
     from funding.factory import bcrypt
     try:
         db_session.query(User).filter(User.email == email).update({
             'password':
             bcrypt.generate_password_hash(password).decode('utf8')
         })
         db_session.commit()
         db_session.flush()
     except Exception as ex:
         db_session.rollback()
         raise
Exemple #4
0
    def add_comment(cls,
                    pid: int,
                    user_id: int,
                    message: str,
                    cid: int = None,
                    message_id: int = None,
                    automated=False):
        from flask.ext.login import current_user
        from funding.factory import db_session
        if not message:
            raise Exception("empty message")

        if current_user.id != user_id and not current_user.admin:
            raise Exception("no rights to add or modify this comment")

        if not message_id:
            proposal = Proposal.find_by_id(pid=pid)
            if not proposal:
                raise Exception("no proposal by that id")
            comment = Comment(user_id=user_id,
                              proposal_id=proposal.id,
                              automated=automated)
            if cid:
                parent = Comment.find_by_id(cid=cid)
                if not parent:
                    raise Exception("cannot reply to a non-existent comment")
                comment.replied_to = parent.id
        else:
            try:
                user = db_session.query(User).filter(
                    User.id == user_id).first()
                if not user:
                    raise Exception("no user by that id")
                comment = next(c for c in user.comments if c.id == message_id)
                if comment.locked and not current_user.admin:
                    raise Exception("your comment has been locked/removed")
            except StopIteration:
                raise Exception("no message by that id")
            except:
                raise Exception("unknown error")
        try:
            comment.message = message
            db_session.add(comment)
            db_session.commit()
            db_session.flush()
        except Exception as ex:
            db_session.rollback()
            raise Exception(str(ex))
        return comment
Exemple #5
0
 def lock(cid: int):
     from funding.factory import db_session
     from flask.ext.login import current_user
     if not current_user.admin:
         raise Exception("admin required")
     comment = Comment.find_by_id(cid=cid)
     if not comment:
         raise Exception("comment by that id not found")
     comment.locked = True
     try:
         db_session.commit()
         db_session.flush()
         return comment
     except:
         db_session.rollback()
         raise
Exemple #6
0
    def add(cls, proposal_id, amount, to_address):
        # @TODO: validate that we can make this payout; check previous payouts
        from flask.ext.login import current_user
        if not current_user.admin:
            raise Exception("user must be admin to add a payout")
        from funding.factory import db_session

        try:
            payout = Payout(propsal_id=proposal_id, amount=amount, to_address=to_address)
            db_session.add(payout)
            db_session.commit()
            db_session.flush()
            return payout
        except Exception as ex:
            db_session.rollback()
            raise
Exemple #7
0
    def add(cls, username, password, email):
        from funding.factory import db_session
        from funding.validation import val_username, val_email

        try:
            # validate incoming username/email
            val_username(username)
            val_email(email)

            user = User(username, password, email)
            db_session.add(user)
            db_session.commit()
            db_session.flush()
            return user
        except Exception as ex:
            db_session.rollback()
            raise
 def edit(cid: int, pid: int, message: str, user_id: int):
     from funding.factory import db_session
     from flask_login import current_user
     if current_user.id != user_id and not current_user.admin:
         raise Exception("no rights to remove this comment")
     comment = Comment.find_by_id(cid=cid)
     if not comment.locked:
         try:
             db_session.query(Comment).filter(Comment.id == cid).update(
                 {'message': message})
             db_session.commit()
             db_session.flush()
         except:
             db_session.rollback()
             raise
     else:
         raise Exception("Comment is locked and can not be edited")
 def remove(cid: int, pid: int, puid: int):
     from funding.factory import db_session
     from flask_login import current_user
     if current_user.id != puid and not current_user.admin:
         raise Exception("no rights to remove this comment")
     comment = Comment.find_by_id(cid=cid)
     if not comment.replied_to:
         comment.message = "comment removed by %s" % current_user
         comment.locked = True
         try:
             db_session.commit()
             db_session.flush()
         except:
             db_session.rollback()
     else:
         try:
             db_session.delete(comment)
             db_session.commit()
             db_session.flush()
         except:
             db_session.rollback()
             raise