Merge lp:~statik/desktopcouch/urllibquote into lp:desktopcouch

Proposed by Elliot Murphy
Status: Merged
Approved by: Elliot Murphy
Approved revision: 32
Merged at revision: not available
Proposed branch: lp:~statik/desktopcouch/urllibquote
Merge into: lp:desktopcouch
Diff against target: None lines
To merge this branch: bzr merge lp:~statik/desktopcouch/urllibquote
Reviewer Review Type Date Requested Status
Ubuntu One hackers Pending
Review via email: mp+9952@code.launchpad.net

Commit message

Don't create a view per record-type; instead, call the standard return-all-records-keyed-by-record-type and use slice notation on the viewresults to only get back the records with that type, which does the same thing but more elegantly.

To post a comment you must log in.
Revision history for this message
Elliot Murphy (statik) wrote :

I am hijacking https://code.edge.launchpad.net/~sil/desktopcouch/urllibquote/+merge/9778 to fix a merge conflict and get it landed already!

lp:~statik/desktopcouch/urllibquote updated
33. By Elliot Murphy

Merged from trunk, resolved a conflict, and deleted a commented line.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'desktopcouch/records/server.py'
2--- desktopcouch/records/server.py 2009-08-10 19:46:09 +0000
3+++ desktopcouch/records/server.py 2009-08-10 21:32:52 +0000
4@@ -21,6 +21,7 @@
5
6 """The Desktop Couch Records API."""
7
8+import urllib
9 from couchdb import Server
10 from couchdb.client import ResourceNotFound, ResourceConflict
11 from couchdb.design import ViewDefinition
12@@ -232,12 +233,8 @@
13 =>> results = get_records()
14 =>> people = results[['Person']:['Person','ZZZZ']]
15 """
16- if record_type == None:
17- view_name = "get_records_and_type"
18- view_map_js = """function(doc) { emit(doc.record_type, doc) }"""
19- else:
20- view_name = "get_" + record_type
21- view_map_js = """function(doc) {if(doc.record_type == '%s') { emit(doc._id, doc); }}""" %record_type
22+ view_name = "get_records_and_type"
23+ view_map_js = """function(doc) { emit(doc.record_type, doc) }"""
24
25 if design_doc is None:
26 design_doc = view_name
27@@ -253,5 +250,10 @@
28
29 if not exists:
30 self.add_view(view_name, view_map_js, None, design_doc)
31+
32+ viewdata = self.execute_view(view_name, design_doc)
33+ if record_type is None:
34+ return viewdata
35+ else:
36+ return viewdata[record_type]
37
38- return self.execute_view(view_name, design_doc)
39
40=== modified file 'desktopcouch/records/tests/test_server.py' (properties changed: -x to +x)
41--- desktopcouch/records/tests/test_server.py 2009-08-10 20:55:48 +0000
42+++ desktopcouch/records/tests/test_server.py 2009-08-10 21:32:52 +0000
43@@ -41,10 +41,21 @@
44 self.dbname = self._testMethodName
45 self.database = CouchDatabase(self.dbname, create=True)
46
47+ #create some records to pull out and test
48+ self.database.put_record(Record({"key1_1":"val1_1","key1_2":"val1_2","key1_3":"val1_3","record_type":"test.com"}))
49+ self.database.put_record(Record({"key2_1":"val2_1","key2_2":"val2_2","key2_3":"val2_3","record_type":"test.com"}))
50+ self.database.put_record(Record({"key13_1":"va31_1","key3_2":"val3_2","key3_3":"val3_3","record_type":"test.com"}))
51+
52 def tearDown(self):
53 """tear down each test"""
54 del self.database._server[self.dbname]
55
56+ def test_get_records_by_record_type_save_view(self):
57+ """Test getting mutliple records by type"""
58+ records = self.database.get_records(record_type="test.com",create_view=True)
59+ self.assertEqual(3,len(records))
60+
61+
62 def test_get_record(self):
63 """Test getting a record."""
64 record = Record({'record_number': 0}, record_type="http://example.com/")

Subscribers

People subscribed via source and target branches