Skip to content

Commit

Permalink
bug 1353241: 'View diff' for first revision doesn't work (#334). r=bh…
Browse files Browse the repository at this point in the history
…earsum
  • Loading branch information
harikishen authored and bhearsum committed Jun 16, 2017
1 parent 4a0670d commit dac48b8
Show file tree
Hide file tree
Showing 2 changed files with 56 additions and 15 deletions.
35 changes: 35 additions & 0 deletions auslib/test/admin/views/test_history.py
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,41 @@ def testFieldViewRelease(self):
self.assertTrue('"fakePartials": true' in ret.data)
self.assertTrue('"fakePartials": false' in ret.data)

def testFieldViewDiffFirstRelease(self):
# Add first release
blob = """
{
"name": "ddd1",
"schema_version": 1,
"detailsUrl": "blah",
"fakePartials": true,
"hashFunction": "sha512",
"platforms": {
"p": {
"locales": {
"dd": {
"complete": {
"filesize": 1234,
"from": "*",
"hashValue": "abc"
}
}
}
}
}
}"""

ret = self._put('/releases/ddd1', data=dict(blob=blob, name='ddd1',
product='d', data_version=1))
self.assertStatusCode(ret, 201)
table = dbo.releases.history
row, = table.select(order_by=[table.change_id.asc()], limit=1)
change_id = row['change_id']

url = '/history/diff/release/%d/data' % change_id
ret = self.client.get(url)
self.assertStatusCode(ret, 200)

def testFieldViewDiffRelease(self):

# Add release history for d
Expand Down
36 changes: 21 additions & 15 deletions auslib/web/admin/views/releases.py
Original file line number Diff line number Diff line change
Expand Up @@ -621,28 +621,34 @@ class ReleaseDiffView(ReleaseFieldView):
"""/diff/:id/:field"""

def get_prev_id(self, value, change_id):
release_name = value['name']
table = self.table.history
old_revision = table.select(
where=[
table.name == release_name,
table.change_id < change_id,
table.data_version != null()
],
limit=1,
order_by=[table.timestamp.desc()],
)

return old_revision[0]['change_id']
if value:
release_name = value['name']
table = self.table.history
old_revision = table.select(
where=[
table.name == release_name,
table.change_id < change_id,
table.data_version != null()
],
limit=1,
order_by=[table.timestamp.desc()],
)
if len(old_revision) > 0:
return old_revision[0]['change_id']

def get(self, change_id, field):
try:
value = self.get_value(change_id, field)
data_version = self.get_value(change_id, "data_version")

prev_id = self.get_prev_id(value, change_id)
previous = self.get_value(prev_id, field)
prev_data_version = self.get_value(prev_id, "data_version")
if prev_id:
previous = self.get_value(prev_id, field)
prev_data_version = self.get_value(prev_id, "data_version")
else:
previous = ""
prev_data_version = ""

except (KeyError, TypeError, IndexError) as msg:
return problem(400, "Bad Request", str(msg))
except ValueError as msg:
Expand Down

0 comments on commit dac48b8

Please sign in to comment.