Merge branch 'swaggerlikeus' of https://bitbucket.org/yackob03/quay into swaggerlikeus

This commit is contained in:
Joseph Schorr 2014-03-18 16:46:28 -04:00
commit b0dcb5d7e3
10 changed files with 50 additions and 10 deletions

View file

@ -1288,7 +1288,10 @@ def set_user_repo_permission(username, namespace_name, repository_name,
if username == namespace_name: if username == namespace_name:
raise DataModelException('Namespace owner must always be admin.') raise DataModelException('Namespace owner must always be admin.')
user = User.get(User.username == username) try:
user = User.get(User.username == username)
except User.DoesNotExist:
raise InvalidUsernameException('Invalid username: %s' % username)
return __set_entity_repo_permission(user, 'user', namespace_name, return __set_entity_repo_permission(user, 'user', namespace_name,
repository_name, role_name) repository_name, role_name)

View file

@ -210,7 +210,10 @@ def validate_json_request(schema_name):
def request_error(exception=None, **kwargs): def request_error(exception=None, **kwargs):
data = kwargs.copy() data = kwargs.copy()
raise InvalidRequest(exception.message, data) message = 'Request error.'
if exception:
message = exception.message
raise InvalidRequest(message, data)
def log_action(kind, user_or_orgname, metadata=None, repo=None): def log_action(kind, user_or_orgname, metadata=None, repo=None):

View file

@ -113,6 +113,9 @@ class UserCard(ApiResource):
def get(self): def get(self):
""" Get the user's credit card. """ """ Get the user's credit card. """
user = get_authenticated_user() user = get_authenticated_user()
if not user:
raise Unauthorized()
return get_card(user) return get_card(user)
@nickname('setUserCard') @nickname('setUserCard')
@ -120,6 +123,9 @@ class UserCard(ApiResource):
def post(self): def post(self):
""" Update the user's credit card. """ """ Update the user's credit card. """
user = get_authenticated_user() user = get_authenticated_user()
if not user:
raise Unauthorized()
token = request.get_json()['token'] token = request.get_json()['token']
response = set_card(user, token) response = set_card(user, token)
log_action('account_change_cc', user.username) log_action('account_change_cc', user.username)
@ -300,6 +306,9 @@ class UserInvoiceList(ApiResource):
def get(self): def get(self):
""" List the invoices for the current user. """ """ List the invoices for the current user. """
user = get_authenticated_user() user = get_authenticated_user()
if not user:
raise Unauthorized()
if not user.stripe_id: if not user.stripe_id:
raise NotFound() raise NotFound()

View file

@ -195,5 +195,5 @@ class FileDropResource(ApiResource):
(url, file_id) = user_files.prepare_for_drop(mime_type) (url, file_id) = user_files.prepare_for_drop(mime_type)
return { return {
'url': url, 'url': url,
'file_id': file_id 'file_id': str(file_id),
} }

View file

@ -95,8 +95,11 @@ class UserLogs(ApiResource):
start_time = args['starttime'] start_time = args['starttime']
end_time = args['endtime'] end_time = args['endtime']
return get_logs(get_authenticated_user().username, start_time, end_time, user = get_authenticated_user()
performer_name=performer_name) if not user:
raise Unauthorized()
return get_logs(user.username, start_time, end_time, performer_name=performer_name)
@resource('/v1/organization/<orgname>/logs') @resource('/v1/organization/<orgname>/logs')

View file

@ -66,6 +66,10 @@ class OrganizationList(ApiResource):
@validate_json_request('NewOrg') @validate_json_request('NewOrg')
def post(self): def post(self):
""" Create a new organization. """ """ Create a new organization. """
user = get_authenticated_user()
if not user:
raise Unauthorized()
org_data = request.get_json() org_data = request.get_json()
existing = None existing = None
@ -85,7 +89,7 @@ class OrganizationList(ApiResource):
raise request_error(message=msg) raise request_error(message=msg)
try: try:
model.create_organization(org_data['name'], org_data['email'], get_authenticated_user()) model.create_organization(org_data['name'], org_data['email'], user)
return 'Created', 201 return 'Created', 201
except model.DataModelException as ex: except model.DataModelException as ex:
raise request_error(exception=ex) raise request_error(exception=ex)

View file

@ -133,8 +133,12 @@ class RepositoryUserPermission(RepositoryParamResource):
logger.debug('Setting permission to: %s for user %s' % logger.debug('Setting permission to: %s for user %s' %
(new_permission['role'], username)) (new_permission['role'], username))
perm = model.set_user_repo_permission(username, namespace, repository, try:
new_permission['role']) perm = model.set_user_repo_permission(username, namespace, repository,
new_permission['role'])
except model.InvalidUsernameException as ex:
raise request_error(exception=ex)
perm_view = wrap_role_view_user(role_view(perm), perm.user) perm_view = wrap_role_view_user(role_view(perm), perm.user)
try: try:

View file

@ -29,6 +29,7 @@ class RepositoryList(ApiResource):
'required': [ 'required': [
'repository', 'repository',
'visibility', 'visibility',
'description',
], ],
'properties': { 'properties': {
'repository': { 'repository': {
@ -62,6 +63,9 @@ class RepositoryList(ApiResource):
def post(self): def post(self):
"""Create a new repository.""" """Create a new repository."""
owner = get_authenticated_user() owner = get_authenticated_user()
if not owner:
raise Unauthorized()
req = request.get_json() req = request.get_json()
namespace_name = req['namespace'] if 'namespace' in req else owner.username namespace_name = req['namespace'] if 'namespace' in req else owner.username

View file

@ -33,7 +33,8 @@ class EntitySearch(ApiResource):
except model.InvalidOrganizationException: except model.InvalidOrganizationException:
# namespace name was a user # namespace name was a user
if get_authenticated_user().username == namespace_name: user = get_authenticated_user()
if user and user.username == namespace_name:
robot_namespace = namespace_name robot_namespace = namespace_name
users = model.get_matching_users(prefix, robot_namespace, organization) users = model.get_matching_users(prefix, robot_namespace, organization)

View file

@ -7,7 +7,7 @@ from flask.ext.principal import identity_changed, AnonymousIdentity
from app import app from app import app
from endpoints.api import (ApiResource, nickname, resource, validate_json_request, request_error, from endpoints.api import (ApiResource, nickname, resource, validate_json_request, request_error,
log_action, internal_only, NotFound) log_action, internal_only, NotFound, Unauthorized)
from endpoints.api.subscribe import subscribe from endpoints.api.subscribe import subscribe
from endpoints.common import common_login from endpoints.common import common_login
from data import model from data import model
@ -122,6 +122,9 @@ class User(ApiResource):
def put(self): def put(self):
""" Update a users details such as password or email. """ """ Update a users details such as password or email. """
user = get_authenticated_user() user = get_authenticated_user()
if not user:
raise Unauthorized()
user_data = request.get_json() user_data = request.get_json()
try: try:
@ -179,6 +182,9 @@ class PrivateRepositories(ApiResource):
""" Get the number of private repos this user has, and whether they are allowed to create more. """ Get the number of private repos this user has, and whether they are allowed to create more.
""" """
user = get_authenticated_user() user = get_authenticated_user()
if not user:
raise Unauthorized()
private_repos = model.get_private_repo_count(user.username) private_repos = model.get_private_repo_count(user.username)
repos_allowed = 0 repos_allowed = 0
@ -251,6 +257,9 @@ class ConvertToOrganization(ApiResource):
def post(self): def post(self):
""" Convert the user to an organization. """ """ Convert the user to an organization. """
user = get_authenticated_user() user = get_authenticated_user()
if not user:
raise Unauthorized()
convert_data = request.get_json() convert_data = request.get_json()
# Ensure that the new admin user is the not user being converted. # Ensure that the new admin user is the not user being converted.