Repository :
http://git.fedorahosted.org/cgit/copr.git
On branch : rest_api_2
---------------------------------------------------------------
commit 17757a99d843d8e740a089ac058fd5aef938eefa
Author: Valentin Gologuzov <vgologuz(a)redhat.com>
Date: Fri Jul 17 16:06:43 2015 +0200
[frontend] adding more stuff to api 2
---------------------------------------------------------------
frontend/coprs_frontend/coprs/helpers.py | 5 ++-
frontend/coprs_frontend/coprs/models.py | 7 ++++
.../coprs/rest_api/resources/build.py | 17 +++++----
frontend/coprs_frontend/coprs/rest_api/schemas.py | 38 ++++++++++++++++++++
4 files changed, 58 insertions(+), 9 deletions(-)
diff --git a/frontend/coprs_frontend/coprs/helpers.py
b/frontend/coprs_frontend/coprs/helpers.py
index d5a4474..b9a4c8d 100644
--- a/frontend/coprs_frontend/coprs/helpers.py
+++ b/frontend/coprs_frontend/coprs/helpers.py
@@ -92,8 +92,9 @@ class StatusEnum(object):
class BuildSourceEnum(object):
__metaclass__ = EnumType
vals = {"unset": 0,
- "srpm_link": 1, # url
- "srpm_upload": 2} # pkg, tmp
+ "srpm_link": 1, # url
+ "srpm_upload": 2} # pkg, tmp
+
class Paginator(object):
diff --git a/frontend/coprs_frontend/coprs/models.py
b/frontend/coprs_frontend/coprs/models.py
index b0415e9..1babe71 100644
--- a/frontend/coprs_frontend/coprs/models.py
+++ b/frontend/coprs_frontend/coprs/models.py
@@ -372,6 +372,13 @@ class Build(db.Model, helpers.Serializer):
chroots = association_proxy("build_chroots", "mock_chroot")
@property
+ def repos_list(self):
+ if self.repos is None:
+ return list()
+ else:
+ return self.repos.split()
+
+ @property
def result_dir_name(self):
return "{:08d}-{}".format(self.id, self.package.name)
diff --git a/frontend/coprs_frontend/coprs/rest_api/resources/build.py
b/frontend/coprs_frontend/coprs/rest_api/resources/build.py
index 3378641..1db3bf4 100644
--- a/frontend/coprs_frontend/coprs/rest_api/resources/build.py
+++ b/frontend/coprs_frontend/coprs/rest_api/resources/build.py
@@ -7,6 +7,8 @@ import flask
from coprs.logic.coprs_logic import CoprsLogic
from coprs.logic.builds_logic import BuildsLogic
+from coprs.rest_api.schemas import BuildSchema
+
from coprs.rest_api.util import get_one_safe, bp_url_for
from flask_restful import Resource, reqparse
@@ -44,15 +46,16 @@ class BuildListR(Resource):
builds = query.all()
return {
- "links": {
- "self": bp_url_for(BuildListR.endpoint, **req_args),
- },
+
"builds": [
{
- "build": build.to_dict(),
+ "build": BuildSchema().dump(build)[0],
"link": bp_url_for(BuildR.endpoint, build_id=build.id),
} for build in builds
- ]
+ ],
+ "links": {
+ "self": bp_url_for(BuildListR.endpoint, **req_args),
+ },
}
@@ -71,10 +74,10 @@ class BuildR(Resource):
build = get_one_safe(BuildsLogic.get(build_id),
"Not found build with id: {}".format(build_id))
return {
- "build": build.to_dict(),
+ "build": BuildSchema().dump(build)[0],
"links": {
"self": bp_url_for(BuildR.endpoint, build_id=build_id),
- # TODO: can't do it due to circular imports
+ # TODO: can't do this due to circular imports
# "parent_copr": url_for(CoprR.endpoint,
# owner=build.copr.owner.name,
# project=build.copr.name),
diff --git a/frontend/coprs_frontend/coprs/rest_api/schemas.py
b/frontend/coprs_frontend/coprs/rest_api/schemas.py
index aabdd80..9c243a7 100644
--- a/frontend/coprs_frontend/coprs/rest_api/schemas.py
+++ b/frontend/coprs_frontend/coprs/rest_api/schemas.py
@@ -20,6 +20,7 @@ class CoprSchema(Schema):
auto_createrepo = fields.Bool()
build_enable_net = fields.Bool()
+ last_modified = fields.DateTime()
additional_repos = fields.List(fields.Str, dump_only=True,
attribute="repos_list")
# yum_repos = fields.List()
@@ -47,3 +48,40 @@ class CoprSchema(Schema):
kwargs[key] = data[key]
return kwargs
+
+class BuildChrootSchema(Schema):
+ # used only for presentation
+ state = fields.Str()
+ started_on = fields.Int()
+ ended_on = fields.Int()
+ git_hash = fields.Str()
+
+
+class BuildSchema(Schema):
+
+ id = fields.Int()
+ pkgs = fields.Str()
+ build_packages = fields.Str()
+ pkg_version = fields.Str()
+
+ repos_list = fields.List(fields.Str())
+ repos = fields.Str() # legacy
+
+ submitted_on = fields.Int()
+ started_on = fields.Int()
+ ended_on = fields.Int()
+
+ results = fields.Str()
+ memory_reqs = fields.Int()
+ timeout = fields.Int()
+
+ enable_net = fields.Bool()
+
+ source_type = fields.Int()
+ source_json = fields.Str()
+
+ # chroots = fields.List(fields.Nested(BuildChrootSchema))
+
+
+
+