|
1 |
| -from .. import json |
| 1 | +from .. import json, pg |
2 | 2 |
|
3 | 3 |
|
4 | 4 | def iter_commands(cr, like_all=(), like_any=()):
|
5 | 5 | if not (bool(like_all) ^ bool(like_any)):
|
6 | 6 | raise ValueError("Please specify `like_all` or `like_any`, not both")
|
7 |
| - cr.execute( |
8 |
| - """ |
9 |
| - SELECT id, |
10 |
| - commands |
11 |
| - FROM spreadsheet_revision |
12 |
| - WHERE commands LIKE {}(%s::text[]) |
13 |
| - """.format("ALL" if like_all else "ANY"), |
14 |
| - [list(like_all or like_any)], |
15 |
| - ) |
16 |
| - for revision_id, data in cr.fetchall(): |
17 |
| - data_loaded = json.loads(data) |
18 |
| - if "commands" not in data_loaded: |
19 |
| - continue |
20 |
| - data_old = json.dumps(data_loaded, sort_keys=True) |
| 7 | + with pg.named_cursor(cr, itersize=1) as ncr: |
| 8 | + ncr.execute( |
| 9 | + """ |
| 10 | + SELECT id, |
| 11 | + commands |
| 12 | + FROM spreadsheet_revision |
| 13 | + WHERE commands LIKE {}(%s::text[]) |
| 14 | + """.format("ALL" if like_all else "ANY"), |
| 15 | + [list(like_all or like_any)], |
| 16 | + ) |
| 17 | + for revision_id, data in ncr: |
| 18 | + data_loaded = json.loads(data) |
| 19 | + if "commands" not in data_loaded: |
| 20 | + continue |
| 21 | + data_old = json.dumps(data_loaded, sort_keys=True) |
21 | 22 |
|
22 |
| - changed = yield data_loaded["commands"] |
23 |
| - if changed is None: |
24 |
| - changed = data_old != json.dumps(data_loaded, sort_keys=True) |
| 23 | + changed = yield data_loaded["commands"] |
| 24 | + if changed is None: |
| 25 | + changed = data_old != json.dumps(data_loaded, sort_keys=True) |
25 | 26 |
|
26 |
| - if changed: |
27 |
| - cr.execute( |
28 |
| - "UPDATE spreadsheet_revision SET commands=%s WHERE id=%s", [json.dumps(data_loaded), revision_id] |
29 |
| - ) |
| 27 | + if changed: |
| 28 | + cr.execute( |
| 29 | + "UPDATE spreadsheet_revision SET commands=%s WHERE id=%s", [json.dumps(data_loaded), revision_id] |
| 30 | + ) |
30 | 31 |
|
31 | 32 |
|
32 | 33 | def process_commands(cr, callback, *args, **kwargs):
|
|
0 commit comments