def token_or_redirect(**kwargs): token = kwargs.get('token', '') msg, umi, user = Token.convert_token(token) if user is None: # TODO where to redirect? return redirect(url_for_with_prefix('app_router.reset_token')) else: if msg is not None: if msg.is_already_sent() and viewfunc.__name__ is not 'message_sent': return redirect(url_for_with_prefix('app_router.message_sent', token=token)) elif not msg.is_already_sent() and user.default_info.accept_tos and viewfunc.__name__ not in ['confirm_reps', 'message_sent']: return redirect(url_for_with_prefix('app_router.confirm_reps', token=token)) kwargs.update({'msg': msg, 'umi': umi, 'user': user}) return viewfunc(**kwargs)