Merge lp:~cmiller/desktopcouch/record-expose-revid-bug445611 into lp:desktopcouch

Proposed by Chad Miller
Status: Merged
Approved by: Rodrigo Moya
Approved revision: not available
Merged at revision: not available
Proposed branch: lp:~cmiller/desktopcouch/record-expose-revid-bug445611
Merge into: lp:desktopcouch
Diff against target: 48 lines (+28/-2)
2 files modified
desktopcouch/records/record.py (+6/-2)
desktopcouch/records/tests/test_record.py (+22/-0)
To merge this branch: bzr merge lp:~cmiller/desktopcouch/record-expose-revid-bug445611
Reviewer Review Type Date Requested Status
Rodrigo Moya (community) Approve
Stuart Langridge (community) Approve
Review via email: mp+15953@code.launchpad.net

Commit message

Add a new attribute on Record class, so that users can get a record's
revision id without using ._dict or "_rev".

  n = r.record_revision # retreive revision. Will be None if just fabricated.
  r.record.revision = "foo" # raises AttributeError, as it is read-only.

To post a comment you must log in.
114. By Chad Miller

Change the test so we rely only on the guaranteed behavior of the
revision id.

Revision history for this message
Stuart Langridge (sil) wrote :

Good extra API feature, tests pass, happy with change.

review: Approve
Revision history for this message
Rodrigo Moya (rodrigo-moya) wrote :

Looks good to me, only one wrong comment in the function docs:

+ @property
13 + def record_revision(self):
14 + """Get the record type."""

it should say 'Get the record revision', right?

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'desktopcouch/records/record.py'
2--- desktopcouch/records/record.py 2009-12-07 20:10:00 +0000
3+++ desktopcouch/records/record.py 2009-12-10 15:39:14 +0000
4@@ -382,5 +382,9 @@
5 @property
6 def record_type(self):
7 """Get the record type."""
8- return self._data.setdefault('record_type', None)
9-
10+ return self._data.setdefault('record_type', None) # Set if unset.
11+
12+ @property
13+ def record_revision(self):
14+ """Get the record type."""
15+ return self._data.get('_rev', None) # Retreive only; comes from DB.
16
17=== modified file 'desktopcouch/records/tests/test_record.py'
18--- desktopcouch/records/tests/test_record.py 2009-12-07 16:29:20 +0000
19+++ desktopcouch/records/tests/test_record.py 2009-12-10 15:39:14 +0000
20@@ -53,6 +53,28 @@
21 }
22 self.record = Record(self.dict)
23
24+ def test_revision(self):
25+ self.assertEquals(self.record.record_revision, None)
26+ def set_rev(rec): rec.record_revision = "1"
27+ self.assertRaises(AttributeError, set_rev, self.record)
28+
29+ ctx = test_environment.test_context
30+ db = CouchDatabase('testing', create=True, ctx=ctx)
31+ record_id = db.put_record(self.record)
32+
33+ retreived_record = db.get_record(record_id)
34+ self.assertNotEquals(self.record.record_revision, None)
35+
36+ first = self.record.record_revision
37+
38+ record_id = db.put_record(self.record)
39+ retreived_record = db.get_record(record_id)
40+ second = self.record.record_revision
41+
42+ self.assertTrue(first < second)
43+
44+ db.delete_record(record_id)
45+
46 def test_delitem(self):
47 def f(r):
48 del r["_id"]

Subscribers

People subscribed via source and target branches