def update_bot(user_id: int, bots: List[Updater]): bot = None token = get_token_bot(user_id) for updater in bots: if updater.bot.token == token: bot = updater break else: bot = Updater(token) bots.append(bot) if bot: # Clear all handlers before add news if bot.dispatcher.handlers: handlers = bot.dispatcher.handlers[0] for handler in handlers: bot.dispatcher.remove_handler(handler) with create_session() as db: behaviours = db.query(TelegramBehavior).filter_by( user_id=user_id).all() scripts = [] for behaviour in behaviours: scripts.append( db.query(TelegramScript).filter_by( id=behaviour.script_id).first()) change_bot_updater(bot, scripts)
def validator_for_name(cls, variable): with create_session() as session: user_found = (session.query(UserModel).filter( UserModel.name == variable).first()) if user_found: raise ValueError("User exist!") return variable
def delete_all_scripts(user_id: int) -> None: with create_session() as db: telegram_behaviors = db.query(TelegramBehavior).filter_by( user_id=user_id) behaviors = telegram_behaviors.all() telegram_behaviors.delete() for behavior in behaviors: db.query(TelegramScript).filter_by(id=behavior.script_id).delete() db.commit()
def get_scripts(user_id: int) -> List[TelegramScript]: with create_session() as db: behaviours = db.query(TelegramBehavior).filter_by( user_id=user_id).all() scripts = [] for behaviour in behaviours: scripts.append( db.query(TelegramScript).filter_by( id=behaviour.script_id).first()) return scripts
def validator_for_email(cls, variable): pattern = re.compile( "(^|\s)[-a-z0-9_.]+@([-a-z0-9]+\.)+[a-z]{2,6}(\s|$)") is_valid = pattern.match(variable) if is_valid: with create_session() as session: user_found = (session.query(UserModel).filter( UserModel.email == variable).first()) if user_found: raise ValueError("Email exist!") return variable else: raise ValueError("Email isn't valid!")
def authentication(user: UserCredentials) -> Optional[str]: with create_session() as session: user_found = (session.query(UserModel).filter( (UserModel.email == user.credentials) | (UserModel.name == user.credentials)).first()) if user_found and bcrypt.checkpw(user.password.encode(), user_found.password.encode()): token = jwt.encode( { "user_id": user_found.id, "exp": JWT_EXPIRE_DAY }, key=JWT_KEY, algorithm="HS256", ) return token return None
async def create(self): with create_session() as db: db.add(self) db.commit() db.refresh(self) return self
def get_token_bot(user_id) -> Optional[str]: with create_session() as db: settings = db.query(Settings).filter_by(user_id=user_id).first() if settings: return settings.telegram_token return None
def get_user(user_id: Optional[int]) -> Optional[User]: if user_id is not None: with create_session() as db: user = db.query(User).filter_by(id=user_id).first() return user return None