Я пишу условия внутри вьюхи, если нужны небольшие изменения, не предусмотренные изначальными требованиями.
Если дошло до рефакторинга кода или только идет процесс создания системы, выделяю код, требующих особых прав доступа в отдельные вьюхи и использую декораторы типа
@editor.require(http_exception=403)
где editor - набор прав Permission на основе RoleNeed для созданной роли editor.
my_editor = RoleNeed('editor')
editor = Permission(be_editor)
@app.route('/edit')
@editor.require(http_exception=403)
def editor():
return render_template('template.html')