Add show_if and hide_if methods for routes and APIs, as well as proper comparison of feature values

This commit is contained in:
Joseph Schorr 2014-04-03 19:32:09 -04:00
parent 0abbf042dd
commit 4f4112b18d
5 changed files with 71 additions and 5 deletions

View file

@ -3,7 +3,7 @@ import urlparse
import json
import string
from flask import make_response, render_template, request
from flask import make_response, render_template, request, abort
from flask.ext.login import login_user, UserMixin
from flask.ext.principal import identity_changed
from random import SystemRandom
@ -15,7 +15,7 @@ from auth.permissions import QuayDeferredPermissionUser
from auth import scopes
from endpoints.api.discovery import swagger_route_data
from werkzeug.routing import BaseConverter
from functools import wraps
logger = logging.getLogger(__name__)
@ -27,6 +27,29 @@ class RepoPathConverter(BaseConverter):
app.url_map.converters['repopath'] = RepoPathConverter
def route_show_if(value):
def decorator(f):
@wraps(f)
def decorated_function(*args, **kwargs):
if not value:
abort(404)
return f(*args, **kwargs)
return decorated_function
return decorator
def route_hide_if(value):
def decorator(f):
@wraps(f)
def decorated_function(*args, **kwargs):
if value:
abort(404)
return f(*args, **kwargs)
return decorated_function
return decorator
def get_route_data():
global route_data