Skip to content
This repository has been archived by the owner on May 24, 2018. It is now read-only.

Commit

Permalink
CDSK-829 - remove json_serializer, use str() on datetime values
Browse files Browse the repository at this point in the history
  • Loading branch information
warcholprzemo committed Mar 22, 2018
1 parent 0e5b86c commit cd4dfc4
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 23 deletions.
14 changes: 8 additions & 6 deletions master/buildbot/status/web/mybuilds.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,10 @@
from buildbot.status.web.base import HtmlResource
from buildbot.config import MasterConfig


class MybuildsResource(HtmlResource):
pageTitle = "MyBuilds"

def __init__(self, *args, **kwargs):
super(MybuildsResource, self).__init__(*args, **kwargs)

@defer.inlineCallbacks
def content(self, req, cxt):
master = self.getBuildmaster(req)
Expand Down Expand Up @@ -64,7 +62,11 @@ def prepare_display_repositories(status):
def prepare_builds_by_ssid(builds):
builds_by_ssid = {}
for row in builds:
row['sourcestamps'] = []
row['query_params'] = []
builds_by_ssid[row['sourcestampsetid']] = row
builds_by_ssid[row['sourcestampsetid']] = row.copy()
builds_by_ssid[row['sourcestampsetid']].update({
'submitted_at': str(row['submitted_at']),
'complete_at': str(row['complete_at']),
'sourcestamps': [],
'query_params': [],
})
return builds_by_ssid
23 changes: 10 additions & 13 deletions master/buildbot/status/web/status_json.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,10 @@

from buildbot.schedulers.forcesched import ForceScheduler
from buildbot.status.buildrequest import BuildRequestStatus
from buildbot.status.web.authz import Authz
from buildbot.status.web.base import AccessorMixin, HtmlResource, path_to_root, map_branches, getCodebasesArg, \
getRequestCharset, getResultsArg, getCodebases, path_to_comparison
from buildbot.status.web.mybuilds import MybuildsResource


_IS_INT = re.compile(r'^[-+]?\d+$')
Expand Down Expand Up @@ -1382,23 +1384,18 @@ class MyBuildsJsonResource(JsonResource):

@defer.inlineCallbacks
def asDict(self, request):
from buildbot.status.web.authz import Authz
from buildbot.status.web.mybuilds import MybuildsResource
from datetime import date, datetime

def json_serial(obj):
"""JSON serializer for objects not serializable by default json code"""

if isinstance(obj, (datetime, date)):
return obj.isoformat()
raise TypeError("Type %s not serializable" % type(obj))

authz = Authz()
mybuilds = MybuildsResource()
master = mybuilds.getBuildmaster(request)
username = authz.getUsernameFull(request)
if 'user' in request.args and request.args['user'][0]:
username = request.args['user'][0]
else:
username = authz.getUsername(request) # ldap username
# TODO:
# user_id = get_user_id_for_ldap_username(username)
# builds = yield mybuilds.prepare_builds(master, user_id)
builds = yield mybuilds.prepare_builds(master, username)
defer.returnValue(json.loads(json.dumps(builds, default=json_serial)))
defer.returnValue(builds)


class JsonStatusResource(JsonResource):
Expand Down
19 changes: 15 additions & 4 deletions master/buildbot/test/unit/test_mybuilds.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import datetime
import mock
from twisted.trial import unittest
from buildbot.status.web.mybuilds import MybuildsResource
Expand All @@ -8,12 +9,22 @@ def setUp(self):

def test_prepare_builds_by_ssid(self):
builds =[
{'sourcestampsetid': 1, 'brid': 11},
{'sourcestampsetid': 2, 'brid': 22},
{'sourcestampsetid': 1, 'brid': 11,
'submitted_at': datetime.datetime(2018, 1, 1),
'complete_at': datetime.datetime(2018, 1, 2),
},
{'sourcestampsetid': 2, 'brid': 22,
'submitted_at': datetime.datetime(2018, 1, 3),
'complete_at': datetime.datetime(2018, 1, 4),
},
]
expected_builds = {
1: {'sourcestampsetid': 1, 'brid': 11, 'sourcestamps': [], 'query_params': []},
2: {'sourcestampsetid': 2, 'brid': 22, 'sourcestamps': [], 'query_params': []},
1: {'sourcestampsetid': 1, 'brid': 11, 'sourcestamps': [], 'query_params': [],
'submitted_at': str(datetime.datetime(2018, 1, 1)),
'complete_at': str(datetime.datetime(2018, 1, 2))},
2: {'sourcestampsetid': 2, 'brid': 22, 'sourcestamps': [], 'query_params': [],
'submitted_at': str(datetime.datetime(2018, 1, 3)),
'complete_at': str(datetime.datetime(2018, 1, 4))},
}

builds_by_ssid = self.mybuilds.prepare_builds_by_ssid(builds)
Expand Down

0 comments on commit cd4dfc4

Please sign in to comment.