Merge "Allow show public baymodel"
This commit is contained in:
commit
d40d40924e
|
@ -293,8 +293,9 @@ class BayModelsController(rest.RestController):
|
|||
"""
|
||||
context = pecan.request.context
|
||||
baymodel = api_utils.get_resource('BayModel', baymodel_ident)
|
||||
policy.enforce(context, 'baymodel:get', baymodel,
|
||||
action='baymodel:get')
|
||||
if not baymodel.public:
|
||||
policy.enforce(context, 'baymodel:get', baymodel,
|
||||
action='baymodel:get')
|
||||
|
||||
return BayModel.convert_with_links(baymodel)
|
||||
|
||||
|
|
|
@ -292,6 +292,8 @@ class Connection(api.Connection):
|
|||
def get_baymodel_by_id(self, context, baymodel_id):
|
||||
query = model_query(models.BayModel)
|
||||
query = self._add_tenant_filters(context, query)
|
||||
public_q = model_query(models.BayModel).filter_by(public=True)
|
||||
query = query.union(public_q)
|
||||
query = query.filter_by(id=baymodel_id)
|
||||
try:
|
||||
return query.one()
|
||||
|
@ -301,6 +303,8 @@ class Connection(api.Connection):
|
|||
def get_baymodel_by_uuid(self, context, baymodel_uuid):
|
||||
query = model_query(models.BayModel)
|
||||
query = self._add_tenant_filters(context, query)
|
||||
public_q = model_query(models.BayModel).filter_by(public=True)
|
||||
query = query.union(public_q)
|
||||
query = query.filter_by(uuid=baymodel_uuid)
|
||||
try:
|
||||
return query.one()
|
||||
|
@ -310,6 +314,8 @@ class Connection(api.Connection):
|
|||
def get_baymodel_by_name(self, context, baymodel_name):
|
||||
query = model_query(models.BayModel)
|
||||
query = self._add_tenant_filters(context, query)
|
||||
public_q = model_query(models.BayModel).filter_by(public=True)
|
||||
query = query.union(public_q)
|
||||
query = query.filter_by(name=baymodel_name)
|
||||
try:
|
||||
return query.one()
|
||||
|
|
|
@ -85,11 +85,21 @@ class DbBaymodelTestCase(base.DbTestCase):
|
|||
baymodel = self.dbapi.get_baymodel_by_id(self.context, bm['id'])
|
||||
self.assertEqual(bm['uuid'], baymodel.uuid)
|
||||
|
||||
def test_get_baymodel_by_id_public(self):
|
||||
bm = utils.create_test_baymodel(user_id='not_me', public=True)
|
||||
baymodel = self.dbapi.get_baymodel_by_id(self.context, bm['id'])
|
||||
self.assertEqual(bm['uuid'], baymodel.uuid)
|
||||
|
||||
def test_get_baymodel_by_uuid(self):
|
||||
bm = utils.create_test_baymodel()
|
||||
baymodel = self.dbapi.get_baymodel_by_uuid(self.context, bm['uuid'])
|
||||
self.assertEqual(bm['id'], baymodel.id)
|
||||
|
||||
def test_get_baymodel_by_uuid_public(self):
|
||||
bm = utils.create_test_baymodel(user_id='not_me', public=True)
|
||||
baymodel = self.dbapi.get_baymodel_by_uuid(self.context, bm['uuid'])
|
||||
self.assertEqual(bm['id'], baymodel.id)
|
||||
|
||||
def test_get_baymodel_that_does_not_exist(self):
|
||||
self.assertRaises(exception.BayModelNotFound,
|
||||
self.dbapi.get_baymodel_by_id, self.context, 666)
|
||||
|
@ -100,6 +110,12 @@ class DbBaymodelTestCase(base.DbTestCase):
|
|||
self.assertEqual(bm['id'], res.id)
|
||||
self.assertEqual(bm['uuid'], res.uuid)
|
||||
|
||||
def test_get_baymodel_by_name_public(self):
|
||||
bm = utils.create_test_baymodel(user_id='not_me', public=True)
|
||||
res = self.dbapi.get_baymodel_by_name(self.context, bm['name'])
|
||||
self.assertEqual(bm['id'], res.id)
|
||||
self.assertEqual(bm['uuid'], res.uuid)
|
||||
|
||||
def test_get_baymodel_by_name_multiple_baymodel(self):
|
||||
utils.create_test_baymodel(
|
||||
id=1, name='bm',
|
||||
|
|
Loading…
Reference in New Issue