mirror of
https://pagure.io/fm-orchestrator.git
synced 2026-02-10 00:25:00 +08:00
fix: issue #159 return state_url in JSON after module build submission
This commit is contained in:
@@ -223,6 +223,8 @@ class ModuleBuild(RidaBase):
|
||||
return query.first()
|
||||
|
||||
def json(self):
|
||||
from module_build_service.views import api_definition
|
||||
|
||||
return {
|
||||
'id': self.id,
|
||||
'name': self.name,
|
||||
@@ -231,6 +233,8 @@ class ModuleBuild(RidaBase):
|
||||
'state': self.state,
|
||||
'state_name': INVERSE_BUILD_STATES[self.state],
|
||||
'state_reason': self.state_reason,
|
||||
'state_url': '{}{}'.format(api_definition['module_build_query']['url'][0],
|
||||
self.id),
|
||||
'scmurl': self.scmurl,
|
||||
'owner': self.owner,
|
||||
'time_submitted': self.time_submitted,
|
||||
|
||||
@@ -44,6 +44,28 @@ from module_build_service.errors import (
|
||||
ValidationError, Unauthorized, UnprocessableEntity, Conflict, NotFound)
|
||||
from multiprocessing.dummy import Pool as ThreadPool
|
||||
|
||||
api_definition = {
|
||||
'module_build_submit': {
|
||||
'url': '/module-build-service/1/module-builds/',
|
||||
'options': {
|
||||
'methods': ['POST'],
|
||||
}
|
||||
},
|
||||
'module_build_list': {
|
||||
'url': '/module-build-service/1/module-builds/',
|
||||
'options': {
|
||||
'defaults': {'id': None},
|
||||
'methods': ['GET'],
|
||||
}
|
||||
},
|
||||
'module_build_query': {
|
||||
'url': ['/module-build-service/1/module-builds/', '<int:id>'],
|
||||
'options': {
|
||||
'methods': ['GET'],
|
||||
}
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
class ModuleBuildAPI(MethodView):
|
||||
|
||||
@@ -239,11 +261,7 @@ class ModuleBuildAPI(MethodView):
|
||||
def register_v1_api():
|
||||
""" Registers version 1 of Rida API. """
|
||||
module_view = ModuleBuildAPI.as_view('module_builds')
|
||||
app.add_url_rule('/module-build-service/1/module-builds/', defaults={'id': None},
|
||||
view_func=module_view, methods=['GET'])
|
||||
app.add_url_rule('/module-build-service/1/module-builds/', view_func=module_view,
|
||||
methods=['POST'])
|
||||
app.add_url_rule('/module-build-service/1/module-builds/<int:id>', view_func=module_view,
|
||||
methods=['GET'])
|
||||
for val in api_definition.values():
|
||||
app.add_url_rule(''.join(val['url']), view_func=module_view, **val['options'])
|
||||
|
||||
register_v1_api()
|
||||
|
||||
@@ -193,6 +193,7 @@ class TestViews(unittest.TestCase):
|
||||
self.assertEquals(data['owner'], 'Homer J. Simpson')
|
||||
self.assertEquals(data['id'], 31)
|
||||
self.assertEquals(data['state_name'], 'wait')
|
||||
self.assertEquals(data['state_url'], '/module-build-service/1/module-builds/31')
|
||||
|
||||
@patch('module_build_service.auth.get_username', return_value='Homer J. Simpson')
|
||||
@patch('module_build_service.auth.assert_is_packager')
|
||||
|
||||
Reference in New Issue
Block a user