Merge branch 'swaggerlikeus' of https://bitbucket.org/yackob03/quay into swaggerlikeus
This commit is contained in:
commit
b0dcb5d7e3
10 changed files with 50 additions and 10 deletions
|
@ -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)
|
||||||
|
|
||||||
|
|
|
@ -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):
|
||||||
|
|
|
@ -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()
|
||||||
|
|
||||||
|
|
|
@ -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),
|
||||||
}
|
}
|
||||||
|
|
|
@ -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')
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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:
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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.
|
||||||
|
|
Reference in a new issue