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()
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
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
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
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
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