Status: | Merged |
---|---|
Approved by: | Eric Day |
Approved revision: | 36 |
Merged at revision: | 36 |
Proposed branch: | lp:~eday/burrow/doc-updates |
Merge into: | lp:burrow |
Diff against target: |
738 lines (+187/-136) 5 files modified
.pylintrc (+7/-0) burrow/backend/__init__.py (+60/-47) burrow/backend/http.py (+47/-42) burrow/backend/memory.py (+36/-24) burrow/backend/sqlite.py (+37/-23) |
To merge this branch: | bzr merge lp:~eday/burrow/doc-updates |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Burrow Core Team | Pending | ||
Review via email: mp+72123@code.launchpad.net |
Commit message
Description of the change
Backend module cleanup.
To post a comment you must log in.
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === modified file '.pylintrc' |
2 | --- .pylintrc 2011-08-16 20:59:06 +0000 |
3 | +++ .pylintrc 2011-08-19 00:12:23 +0000 |
4 | @@ -1,8 +1,12 @@ |
5 | [Basic] |
6 | method-rgx=([a-z_][a-z0-9_]{2,30}$)|setUp|tearDown |
7 | no-docstring-rgx=(__.*__)|(test_.*) |
8 | +argument-rgx=[a-z_][a-z0-9_]{1,30}$ |
9 | +attr-rgx=[a-z_][a-z0-9_]{1,30}$ |
10 | +variable-rgx=[a-z_][a-z0-9_]{1,30}$ |
11 | |
12 | [Design] |
13 | +max-args=6 |
14 | min-public-methods=0 |
15 | max-public-methods=80 |
16 | |
17 | @@ -11,5 +15,8 @@ |
18 | # R0201: Don't warn about methods that could be functions |
19 | disable=W0142,R0201 |
20 | |
21 | +[Similarities] |
22 | +min-similarity-lines=10 |
23 | + |
24 | [Variables] |
25 | additional-builtins=_ |
26 | |
27 | === modified file 'burrow/backend/__init__.py' |
28 | --- burrow/backend/__init__.py 2011-08-10 07:16:07 +0000 |
29 | +++ burrow/backend/__init__.py 2011-08-19 00:12:23 +0000 |
30 | @@ -22,7 +22,7 @@ |
31 | |
32 | |
33 | class Backend(burrow.common.Module): |
34 | - '''Interface that backend implementations must provide.''' |
35 | + '''Interface that backend modules must implement.''' |
36 | |
37 | def __init__(self, config): |
38 | super(Backend, self).__init__(config) |
39 | @@ -33,37 +33,49 @@ |
40 | separate threads and should never block.''' |
41 | thread_pool.spawn_n(self._clean) |
42 | |
43 | - def delete_accounts(self, filters={}): |
44 | - return [] |
45 | - |
46 | - def get_accounts(self, filters={}): |
47 | - return [] |
48 | - |
49 | - def delete_queues(self, account, filters={}): |
50 | - return [] |
51 | - |
52 | - def get_queues(self, account, filters={}): |
53 | - return [] |
54 | - |
55 | - def delete_messages(self, account, queue, filters={}): |
56 | - return [] |
57 | - |
58 | - def get_messages(self, account, queue, filters={}): |
59 | - return [] |
60 | - |
61 | - def update_messages(self, account, queue, attributes, filters={}): |
62 | - return [] |
63 | - |
64 | - def create_message(self, account, queue, message, body, attributes={}): |
65 | + def delete_accounts(self, filters=None): |
66 | + '''Delete accounts, which includes all queues and messages |
67 | + for the accounts. With no filters, this will delete all data |
68 | + for the entire server, so it should be used with caution. |
69 | + |
70 | + :param filters: Optional dict of filters for the request. Valid |
71 | + filters are 'marker', 'limit', and 'detail'. Valid values |
72 | + for 'detail' are 'none', 'id', and 'all'. Default value for |
73 | + 'detail' is 'none'. |
74 | + :returns: Generator which will loop through all messages if |
75 | + 'detail' is not 'none'. |
76 | + ''' |
77 | + return [] |
78 | + |
79 | + def get_accounts(self, filters=None): |
80 | + return [] |
81 | + |
82 | + def delete_queues(self, account, filters=None): |
83 | + return [] |
84 | + |
85 | + def get_queues(self, account, filters=None): |
86 | + return [] |
87 | + |
88 | + def delete_messages(self, account, queue, filters=None): |
89 | + return [] |
90 | + |
91 | + def get_messages(self, account, queue, filters=None): |
92 | + return [] |
93 | + |
94 | + def update_messages(self, account, queue, attributes, filters=None): |
95 | + return [] |
96 | + |
97 | + def create_message(self, account, queue, message, body, attributes=None): |
98 | return True |
99 | |
100 | - def delete_message(self, account, queue, message, filters={}): |
101 | - return None |
102 | - |
103 | - def get_message(self, account, queue, message, filters={}): |
104 | - return None |
105 | - |
106 | - def update_message(self, account, queue, message, attributes, filters={}): |
107 | + def delete_message(self, account, queue, message, filters=None): |
108 | + return None |
109 | + |
110 | + def get_message(self, account, queue, message, filters=None): |
111 | + return None |
112 | + |
113 | + def update_message(self, account, queue, message, attributes, |
114 | + filters=None): |
115 | return None |
116 | |
117 | def clean(self): |
118 | @@ -79,16 +91,17 @@ |
119 | eventlet.sleep(1) |
120 | |
121 | def _get_attributes(self, attributes, ttl=None, hide=None): |
122 | - ttl = attributes.get('ttl', ttl) |
123 | + if attributes is not None: |
124 | + ttl = attributes.get('ttl', ttl) |
125 | + hide = attributes.get('hide', hide) |
126 | if ttl is not None and ttl > 0: |
127 | ttl += int(time.time()) |
128 | - hide = attributes.get('hide', hide) |
129 | if hide is not None and hide > 0: |
130 | hide += int(time.time()) |
131 | return ttl, hide |
132 | |
133 | def _get_detail(self, filters, default=None): |
134 | - detail = filters.get('detail', default) |
135 | + detail = default if filters is None else filters.get('detail', default) |
136 | if detail == 'none': |
137 | detail = None |
138 | elif detail is not None and detail not in ['id', 'all']: |
139 | @@ -96,7 +109,7 @@ |
140 | return detail |
141 | |
142 | def _get_message_detail(self, filters, default=None): |
143 | - detail = filters.get('detail', default) |
144 | + detail = default if filters is None else filters.get('detail', default) |
145 | options = ['id', 'attributes', 'body', 'all'] |
146 | if detail == 'none': |
147 | detail = None |
148 | @@ -104,7 +117,7 @@ |
149 | raise burrow.backend.InvalidArguments(detail) |
150 | return detail |
151 | |
152 | - def _notify(self, account, queue): |
153 | + def notify(self, account, queue): |
154 | '''Notify any waiting callers that the account/queue has |
155 | a visible message.''' |
156 | queue = '%s/%s' % (account, queue) |
157 | @@ -112,28 +125,28 @@ |
158 | for count in xrange(0, self.queues[queue].getting()): |
159 | self.queues[queue].put(0) |
160 | |
161 | - def _wait(self, account, queue, seconds): |
162 | + def wait(self, account, queue, seconds): |
163 | '''Wait for a message to appear in the account/queue.''' |
164 | queue = '%s/%s' % (account, queue) |
165 | if queue not in self.queues: |
166 | self.queues[queue] = eventlet.Queue() |
167 | try: |
168 | self.queues[queue].get(timeout=seconds) |
169 | - except Exception: |
170 | + except eventlet.Queue.Empty: |
171 | pass |
172 | if self.queues[queue].getting() == 0: |
173 | del self.queues[queue] |
174 | |
175 | |
176 | def wait_without_attributes(method): |
177 | - def wrapper(self, account, queue, filters={}): |
178 | + def wrapper(self, account, queue, filters=None): |
179 | original = lambda: method(self, account, queue, filters) |
180 | return wait(self, account, queue, filters, original) |
181 | return wrapper |
182 | |
183 | |
184 | def wait_with_attributes(method): |
185 | - def wrapper(self, account, queue, attributes, filters={}): |
186 | + def wrapper(self, account, queue, attributes, filters=None): |
187 | original = lambda: method(self, account, queue, attributes, filters) |
188 | return wait(self, account, queue, filters, original) |
189 | return wrapper |
190 | @@ -143,20 +156,20 @@ |
191 | '''Decorator to wait on a queue if the wait option is given. This |
192 | will block until a message in the queue is ready or the timeout |
193 | expires.''' |
194 | - wait = filters.get('wait', 0) |
195 | - if wait > 0: |
196 | - wait += time.time() |
197 | + seconds = 0 if filters is None else filters.get('wait', 0) |
198 | + if seconds > 0: |
199 | + seconds += time.time() |
200 | while True: |
201 | try: |
202 | for message in method(): |
203 | yield message |
204 | return |
205 | - except burrow.backend.NotFound, e: |
206 | + except burrow.backend.NotFound, exception: |
207 | now = time.time() |
208 | - if wait - now > 0: |
209 | - self._wait(account, queue, wait - now) |
210 | - if wait < time.time(): |
211 | - raise e |
212 | + if seconds - now > 0: |
213 | + self.wait(account, queue, seconds - now) |
214 | + if seconds < time.time(): |
215 | + raise exception |
216 | |
217 | |
218 | class NotFound(Exception): |
219 | |
220 | === modified file 'burrow/backend/http.py' |
221 | --- burrow/backend/http.py 2011-08-10 07:16:07 +0000 |
222 | +++ burrow/backend/http.py 2011-08-19 00:12:23 +0000 |
223 | @@ -41,38 +41,38 @@ |
224 | port = self.config.getint('port', DEFAULT_PORT) |
225 | self.server = (host, port) |
226 | |
227 | - def delete_accounts(self, filters={}): |
228 | - url = self._add_parameters('', filters=filters) |
229 | - return self._request('DELETE', url) |
230 | - |
231 | - def get_accounts(self, filters={}): |
232 | - url = self._add_parameters('', filters=filters) |
233 | - return self._request('GET', url) |
234 | - |
235 | - def delete_queues(self, account, filters={}): |
236 | - url = self._add_parameters('/%s' % account, filters=filters) |
237 | - return self._request('DELETE', url) |
238 | - |
239 | - def get_queues(self, account, filters={}): |
240 | - url = self._add_parameters('/%s' % account, filters=filters) |
241 | - return self._request('GET', url) |
242 | - |
243 | - def delete_messages(self, account, queue, filters={}): |
244 | - url = '/%s/%s' % (account, queue) |
245 | - url = self._add_parameters(url, filters=filters) |
246 | - return self._request('DELETE', url) |
247 | - |
248 | - def get_messages(self, account, queue, filters={}): |
249 | - url = '/%s/%s' % (account, queue) |
250 | - url = self._add_parameters(url, filters=filters) |
251 | - return self._request('GET', url) |
252 | - |
253 | - def update_messages(self, account, queue, attributes, filters={}): |
254 | + def delete_accounts(self, filters=None): |
255 | + url = self._add_parameters('', filters=filters) |
256 | + return self._request('DELETE', url) |
257 | + |
258 | + def get_accounts(self, filters=None): |
259 | + url = self._add_parameters('', filters=filters) |
260 | + return self._request('GET', url) |
261 | + |
262 | + def delete_queues(self, account, filters=None): |
263 | + url = self._add_parameters('/%s' % account, filters=filters) |
264 | + return self._request('DELETE', url) |
265 | + |
266 | + def get_queues(self, account, filters=None): |
267 | + url = self._add_parameters('/%s' % account, filters=filters) |
268 | + return self._request('GET', url) |
269 | + |
270 | + def delete_messages(self, account, queue, filters=None): |
271 | + url = '/%s/%s' % (account, queue) |
272 | + url = self._add_parameters(url, filters=filters) |
273 | + return self._request('DELETE', url) |
274 | + |
275 | + def get_messages(self, account, queue, filters=None): |
276 | + url = '/%s/%s' % (account, queue) |
277 | + url = self._add_parameters(url, filters=filters) |
278 | + return self._request('GET', url) |
279 | + |
280 | + def update_messages(self, account, queue, attributes, filters=None): |
281 | url = '/%s/%s' % (account, queue) |
282 | url = self._add_parameters(url, attributes, filters) |
283 | return self._request('POST', url) |
284 | |
285 | - def create_message(self, account, queue, message, body, attributes={}): |
286 | + def create_message(self, account, queue, message, body, attributes=None): |
287 | url = '/%s/%s/%s' % (account, queue, message) |
288 | url = self._add_parameters(url, attributes) |
289 | try: |
290 | @@ -80,7 +80,7 @@ |
291 | except StopIteration: |
292 | return False |
293 | |
294 | - def delete_message(self, account, queue, message, filters={}): |
295 | + def delete_message(self, account, queue, message, filters=None): |
296 | url = '/%s/%s/%s' % (account, queue, message) |
297 | url = self._add_parameters(url, filters=filters) |
298 | try: |
299 | @@ -88,7 +88,7 @@ |
300 | except StopIteration: |
301 | return None |
302 | |
303 | - def get_message(self, account, queue, message, filters={}): |
304 | + def get_message(self, account, queue, message, filters=None): |
305 | url = '/%s/%s/%s' % (account, queue, message) |
306 | url = self._add_parameters(url, filters=filters) |
307 | try: |
308 | @@ -96,7 +96,8 @@ |
309 | except StopIteration: |
310 | return None |
311 | |
312 | - def update_message(self, account, queue, message, attributes, filters={}): |
313 | + def update_message(self, account, queue, message, attributes, |
314 | + filters=None): |
315 | url = '/%s/%s/%s' % (account, queue, message) |
316 | url = self._add_parameters(url, attributes, filters) |
317 | try: |
318 | @@ -107,18 +108,22 @@ |
319 | def clean(self): |
320 | pass |
321 | |
322 | - def _add_parameters(self, url, attributes={}, filters={}): |
323 | + def _add_parameters(self, url, attributes=None, filters=None): |
324 | separator = '?' |
325 | - for attribute in ['ttl', 'hide']: |
326 | - value = attributes.get(attribute, None) |
327 | - if value is not None: |
328 | - url += '%s%s=%s' % (separator, attribute, value) |
329 | - separator = '&' |
330 | - for filter in ['marker', 'limit', 'match_hidden', 'detail', 'wait']: |
331 | - value = filters.get(filter, None) |
332 | - if value is not None: |
333 | - url += '%s%s=%s' % (separator, filter, value) |
334 | - separator = '&' |
335 | + if attributes is not None: |
336 | + parameters = ['ttl', 'hide'] |
337 | + for parameter in parameters: |
338 | + value = attributes.get(parameter, None) |
339 | + if value is not None: |
340 | + url += '%s%s=%s' % (separator, parameter, value) |
341 | + separator = '&' |
342 | + if filters is not None: |
343 | + parameters = ['marker', 'limit', 'match_hidden', 'detail', 'wait'] |
344 | + for parameter in parameters: |
345 | + value = filters.get(parameter, None) |
346 | + if value is not None: |
347 | + url += '%s%s=%s' % (separator, parameter, value) |
348 | + separator = '&' |
349 | return url |
350 | |
351 | def _request(self, method, url, *args, **kwargs): |
352 | |
353 | === modified file 'burrow/backend/memory.py' |
354 | --- burrow/backend/memory.py 2011-08-10 07:16:07 +0000 |
355 | +++ burrow/backend/memory.py 2011-08-19 00:12:23 +0000 |
356 | @@ -31,8 +31,8 @@ |
357 | super(Backend, self).__init__(config) |
358 | self.accounts = Accounts() |
359 | |
360 | - def delete_accounts(self, filters={}): |
361 | - if len(filters) == 0: |
362 | + def delete_accounts(self, filters=None): |
363 | + if filters is None or len(filters) == 0: |
364 | self.accounts.reset() |
365 | return |
366 | detail = self._get_detail(filters) |
367 | @@ -41,15 +41,15 @@ |
368 | if detail is not None: |
369 | yield account.detail(detail) |
370 | |
371 | - def get_accounts(self, filters={}): |
372 | + def get_accounts(self, filters=None): |
373 | detail = self._get_detail(filters, 'id') |
374 | for account in self.accounts.iter(filters): |
375 | if detail is not None: |
376 | yield account.detail(detail) |
377 | |
378 | - def delete_queues(self, account, filters={}): |
379 | + def delete_queues(self, account, filters=None): |
380 | account = self.accounts.get(account) |
381 | - if len(filters) == 0: |
382 | + if filters is None or len(filters) == 0: |
383 | account.queues.reset() |
384 | else: |
385 | detail = self._get_detail(filters) |
386 | @@ -60,7 +60,7 @@ |
387 | if account.queues.count() == 0: |
388 | self.accounts.delete(account.id) |
389 | |
390 | - def get_queues(self, account, filters={}): |
391 | + def get_queues(self, account, filters=None): |
392 | account = self.accounts.get(account) |
393 | detail = self._get_detail(filters, 'id') |
394 | for queue in account.queues.iter(filters): |
395 | @@ -68,7 +68,7 @@ |
396 | yield queue.detail(detail) |
397 | |
398 | @burrow.backend.wait_without_attributes |
399 | - def delete_messages(self, account, queue, filters={}): |
400 | + def delete_messages(self, account, queue, filters=None): |
401 | account, queue = self.accounts.get_queue(account, queue) |
402 | detail = self._get_message_detail(filters) |
403 | for message in queue.messages.iter(filters): |
404 | @@ -79,7 +79,7 @@ |
405 | self.accounts.delete_queue(account.id, queue.id) |
406 | |
407 | @burrow.backend.wait_without_attributes |
408 | - def get_messages(self, account, queue, filters={}): |
409 | + def get_messages(self, account, queue, filters=None): |
410 | account, queue = self.accounts.get_queue(account, queue) |
411 | detail = self._get_message_detail(filters, 'all') |
412 | for message in queue.messages.iter(filters): |
413 | @@ -87,7 +87,7 @@ |
414 | yield message.detail(detail) |
415 | |
416 | @burrow.backend.wait_with_attributes |
417 | - def update_messages(self, account, queue, attributes, filters={}): |
418 | + def update_messages(self, account, queue, attributes, filters=None): |
419 | account, queue = self.accounts.get_queue(account, queue) |
420 | notify = False |
421 | ttl, hide = self._get_attributes(attributes) |
422 | @@ -102,9 +102,9 @@ |
423 | if detail is not None: |
424 | yield message.detail(detail) |
425 | if notify: |
426 | - self._notify(account.id, queue.id) |
427 | + self.notify(account.id, queue.id) |
428 | |
429 | - def create_message(self, account, queue, message, body, attributes={}): |
430 | + def create_message(self, account, queue, message, body, attributes=None): |
431 | account, queue = self.accounts.get_queue(account, queue, True) |
432 | ttl, hide = self._get_attributes(attributes, ttl=0, hide=0) |
433 | try: |
434 | @@ -117,10 +117,10 @@ |
435 | message.hide = hide |
436 | message.body = body |
437 | if created or hide == 0: |
438 | - self._notify(account.id, queue.id) |
439 | + self.notify(account.id, queue.id) |
440 | return created |
441 | |
442 | - def delete_message(self, account, queue, message, filters={}): |
443 | + def delete_message(self, account, queue, message, filters=None): |
444 | account, queue = self.accounts.get_queue(account, queue) |
445 | message = queue.messages.get(message) |
446 | detail = self._get_message_detail(filters) |
447 | @@ -129,13 +129,14 @@ |
448 | self.accounts.delete_queue(account.id, queue.id) |
449 | return message.detail(detail) |
450 | |
451 | - def get_message(self, account, queue, message, filters={}): |
452 | + def get_message(self, account, queue, message, filters=None): |
453 | account, queue = self.accounts.get_queue(account, queue) |
454 | message = queue.messages.get(message) |
455 | detail = self._get_message_detail(filters, 'all') |
456 | return message.detail(detail) |
457 | |
458 | - def update_message(self, account, queue, message, attributes, filters={}): |
459 | + def update_message(self, account, queue, message, attributes, |
460 | + filters=None): |
461 | account, queue = self.accounts.get_queue(account, queue) |
462 | message = queue.messages.get(message) |
463 | ttl, hide = self._get_attributes(attributes) |
464 | @@ -145,7 +146,7 @@ |
465 | if hide is not None: |
466 | message.hide = hide |
467 | if hide == 0: |
468 | - self._notify(account.id, queue.id) |
469 | + self.notify(account.id, queue.id) |
470 | return message.detail(detail) |
471 | |
472 | def clean(self): |
473 | @@ -160,7 +161,7 @@ |
474 | message.hide = 0 |
475 | notify = True |
476 | if notify: |
477 | - self._notify(account.id, queue.id) |
478 | + self.notify(account.id, queue.id) |
479 | if queue.messages.count() == 0: |
480 | self.accounts.delete_queue(account.id, queue.id) |
481 | |
482 | @@ -184,6 +185,8 @@ |
483 | class IndexedList(object): |
484 | '''Class for managing an indexed linked list.''' |
485 | |
486 | + item_class = Item |
487 | + |
488 | def __init__(self): |
489 | self.first = None |
490 | self.last = None |
491 | @@ -220,15 +223,19 @@ |
492 | return self.add(self.item_class(id)) |
493 | raise burrow.backend.NotFound() |
494 | |
495 | - def iter(self, filters={}): |
496 | - marker = filters.get('marker', None) |
497 | + def iter(self, filters=None): |
498 | + if filters is None: |
499 | + marker = None |
500 | + limit = None |
501 | + else: |
502 | + marker = filters.get('marker', None) |
503 | + limit = filters.get('limit', None) |
504 | if marker is not None and marker in self.index: |
505 | item = self.index[marker].next |
506 | else: |
507 | item = self.first |
508 | if item is None: |
509 | raise burrow.backend.NotFound() |
510 | - limit = filters.get('limit', None) |
511 | while item is not None: |
512 | yield item |
513 | if limit: |
514 | @@ -315,14 +322,19 @@ |
515 | |
516 | item_class = Message |
517 | |
518 | - def iter(self, filters={}): |
519 | - marker = filters.get('marker', None) |
520 | + def iter(self, filters=None): |
521 | + if filters is None: |
522 | + marker = None |
523 | + limit = None |
524 | + match_hidden = False |
525 | + else: |
526 | + marker = filters.get('marker', None) |
527 | + limit = filters.get('limit', None) |
528 | + match_hidden = filters.get('match_hidden', False) |
529 | if marker is not None and marker in self.index: |
530 | item = self.index[marker].next |
531 | else: |
532 | item = self.first |
533 | - limit = filters.get('limit', None) |
534 | - match_hidden = filters.get('match_hidden', False) |
535 | count = 0 |
536 | while item is not None: |
537 | if match_hidden or item.hide == 0: |
538 | |
539 | === modified file 'burrow/backend/sqlite.py' |
540 | --- burrow/backend/sqlite.py 2011-08-10 07:16:07 +0000 |
541 | +++ burrow/backend/sqlite.py 2011-08-19 00:12:23 +0000 |
542 | @@ -60,8 +60,8 @@ |
543 | for query in queries: |
544 | self.db.execute(query) |
545 | |
546 | - def delete_accounts(self, filters={}): |
547 | - if len(filters) == 0: |
548 | + def delete_accounts(self, filters=None): |
549 | + if filters is None or len(filters) == 0: |
550 | query = 'SELECT rowid FROM accounts LIMIT 1' |
551 | if len(self.db.execute(query).fetchall()) == 0: |
552 | raise burrow.backend.NotFound() |
553 | @@ -109,7 +109,7 @@ |
554 | return dict(id=row[0]) |
555 | return None |
556 | |
557 | - def get_accounts(self, filters={}): |
558 | + def get_accounts(self, filters=None): |
559 | detail = self._get_detail(filters, 'id') |
560 | query = 'SELECT account FROM accounts' |
561 | for row in self._get_accounts(query, filters): |
562 | @@ -118,7 +118,12 @@ |
563 | |
564 | def _get_accounts(self, query, filters): |
565 | values = tuple() |
566 | - marker = filters.get('marker', None) |
567 | + if filters is None: |
568 | + marker = None |
569 | + limit = None |
570 | + else: |
571 | + marker = filters.get('marker', None) |
572 | + limit = filters.get('limit', None) |
573 | if marker is not None: |
574 | try: |
575 | marker = self._get_account(marker) |
576 | @@ -126,7 +131,6 @@ |
577 | values += (marker,) |
578 | except burrow.backend.NotFound: |
579 | marker = None |
580 | - limit = filters.get('limit', None) |
581 | if limit is not None: |
582 | query += ' LIMIT ?' |
583 | values += (limit,) |
584 | @@ -144,7 +148,7 @@ |
585 | raise burrow.backend.NotFound() |
586 | return rows[0][0] |
587 | |
588 | - def delete_queues(self, account, filters={}): |
589 | + def delete_queues(self, account, filters=None): |
590 | account_rowid = self._get_account(account) |
591 | detail = self._get_detail(filters) |
592 | ids = [] |
593 | @@ -174,7 +178,7 @@ |
594 | query = 'DELETE FROM accounts WHERE rowid=?' |
595 | self.db.execute(query, (account_rowid,)) |
596 | |
597 | - def get_queues(self, account, filters={}): |
598 | + def get_queues(self, account, filters=None): |
599 | account_rowid = self._get_account(account) |
600 | detail = self._get_detail(filters, 'id') |
601 | query = 'SELECT queue FROM queues' |
602 | @@ -185,7 +189,12 @@ |
603 | def _get_queues(self, query, account_rowid, filters): |
604 | query += ' WHERE account=?' |
605 | values = (account_rowid,) |
606 | - marker = filters.get('marker', None) |
607 | + if filters is None: |
608 | + marker = None |
609 | + limit = None |
610 | + else: |
611 | + marker = filters.get('marker', None) |
612 | + limit = filters.get('limit', None) |
613 | if marker is not None: |
614 | try: |
615 | marker = self._get_queue(account_rowid, marker) |
616 | @@ -193,7 +202,6 @@ |
617 | values += (marker,) |
618 | except burrow.backend.NotFound: |
619 | marker = None |
620 | - limit = filters.get('limit', None) |
621 | if limit is not None: |
622 | query += ' LIMIT ?' |
623 | values += (limit,) |
624 | @@ -212,7 +220,7 @@ |
625 | return rows[0][0] |
626 | |
627 | @burrow.backend.wait_without_attributes |
628 | - def delete_messages(self, account, queue, filters={}): |
629 | + def delete_messages(self, account, queue, filters=None): |
630 | account_rowid = self._get_account(account) |
631 | queue_rowid = self._get_queue(account_rowid, queue) |
632 | detail = self._get_message_detail(filters) |
633 | @@ -259,7 +267,7 @@ |
634 | return None |
635 | |
636 | @burrow.backend.wait_without_attributes |
637 | - def get_messages(self, account, queue, filters={}): |
638 | + def get_messages(self, account, queue, filters=None): |
639 | account_rowid = self._get_account(account) |
640 | queue_rowid = self._get_queue(account_rowid, queue) |
641 | detail = self._get_message_detail(filters, 'all') |
642 | @@ -271,7 +279,14 @@ |
643 | def _get_messages(self, query, queue_rowid, filters): |
644 | query += ' WHERE queue=?' |
645 | values = (queue_rowid,) |
646 | - marker = filters.get('marker', None) |
647 | + if filters is None: |
648 | + marker = None |
649 | + limit = None |
650 | + match_hidden = False |
651 | + else: |
652 | + marker = filters.get('marker', None) |
653 | + limit = filters.get('limit', None) |
654 | + match_hidden = filters.get('match_hidden', False) |
655 | if marker is not None: |
656 | try: |
657 | marker = self._get_message(queue_rowid, marker) |
658 | @@ -279,10 +294,8 @@ |
659 | values += (marker,) |
660 | except burrow.backend.NotFound: |
661 | marker = None |
662 | - match_hidden = filters.get('match_hidden', False) |
663 | if match_hidden is False: |
664 | query += ' AND hide=0' |
665 | - limit = filters.get('limit', None) |
666 | if limit is not None: |
667 | query += ' LIMIT ?' |
668 | values += (limit,) |
669 | @@ -307,7 +320,7 @@ |
670 | return rows[0][0] |
671 | |
672 | @burrow.backend.wait_with_attributes |
673 | - def update_messages(self, account, queue, attributes, filters={}): |
674 | + def update_messages(self, account, queue, attributes, filters=None): |
675 | account_rowid = self._get_account(account) |
676 | queue_rowid = self._get_queue(account_rowid, queue) |
677 | detail = self._get_message_detail(filters) |
678 | @@ -332,7 +345,7 @@ |
679 | if self._update_messages(ttl, hide, ids): |
680 | notify = True |
681 | if notify: |
682 | - self._notify(account, queue) |
683 | + self.notify(account, queue) |
684 | |
685 | def _update_messages(self, ttl, hide, ids): |
686 | query = 'UPDATE messages SET ' |
687 | @@ -352,7 +365,7 @@ |
688 | self.db.execute(query + query_values, tuple(values + ids)) |
689 | return True |
690 | |
691 | - def create_message(self, account, queue, message, body, attributes={}): |
692 | + def create_message(self, account, queue, message, body, attributes=None): |
693 | ttl, hide = self._get_attributes(attributes, ttl=0, hide=0) |
694 | try: |
695 | account_rowid = self._get_account(account) |
696 | @@ -375,10 +388,10 @@ |
697 | self.db.execute(query, (queue_rowid, message, ttl, hide, body)) |
698 | created = True |
699 | if created or hide == 0: |
700 | - self._notify(account, queue) |
701 | + self.notify(account, queue) |
702 | return created |
703 | |
704 | - def delete_message(self, account, queue, message, filters={}): |
705 | + def delete_message(self, account, queue, message, filters=None): |
706 | account_rowid = self._get_account(account) |
707 | queue_rowid = self._get_queue(account_rowid, queue) |
708 | row = self._get_message(queue_rowid, message, True) |
709 | @@ -387,19 +400,20 @@ |
710 | self._check_empty_queue(account_rowid, queue_rowid) |
711 | return self._message_detail(row[1:], detail) |
712 | |
713 | - def get_message(self, account, queue, message, filters={}): |
714 | + def get_message(self, account, queue, message, filters=None): |
715 | queue_rowid = self._get_queue(self._get_account(account), queue) |
716 | row = self._get_message(queue_rowid, message, True) |
717 | detail = self._get_message_detail(filters, 'all') |
718 | return self._message_detail(row[1:], detail) |
719 | |
720 | - def update_message(self, account, queue, message, attributes, filters={}): |
721 | + def update_message(self, account, queue, message, attributes, |
722 | + filters=None): |
723 | queue_rowid = self._get_queue(self._get_account(account), queue) |
724 | row = self._get_message(queue_rowid, message, True) |
725 | detail = self._get_message_detail(filters) |
726 | ttl, hide = self._get_attributes(attributes) |
727 | if self._update_messages(ttl, hide, [row[0]]): |
728 | - self._notify(account, queue) |
729 | + self.notify(account, queue) |
730 | row = list(row) |
731 | if ttl is not None: |
732 | row[2] = ttl |
733 | @@ -447,4 +461,4 @@ |
734 | 'ON queues.account=accounts.rowid ' \ |
735 | 'WHERE queues.rowid=?' |
736 | result = self.db.execute(query, (queue,)).fetchall()[0] |
737 | - self._notify(result[0], result[1]) |
738 | + self.notify(result[0], result[1]) |