diff options
| author | LV-426 <lv-426@taproot.org.il> | 2015-03-30 18:53:33 +0300 |
|---|---|---|
| committer | LV-426 <lv-426@taproot.org.il> | 2015-04-01 22:25:53 +0300 |
| commit | d04878891794b0dd6388b14a97a27ef5f5db81e4 (patch) | |
| tree | d5412605ce6cd4f89e16c95db26f75ae20c9179d /src/server/rz_api_common.py | |
| parent | 9b0d7ff1e52cfbfc69d0e27dc898cbeea4573488 (diff) | |
rz_api_common: cache_lookup__rzdoc(): map name<>rzdoc.id's, currently cache cleansing requires restart
Diffstat (limited to 'src/server/rz_api_common.py')
| -rw-r--r-- | src/server/rz_api_common.py | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/src/server/rz_api_common.py b/src/server/rz_api_common.py index aac3b527..58a9258e 100644 --- a/src/server/rz_api_common.py +++ b/src/server/rz_api_common.py @@ -46,5 +46,24 @@ def validate_obj__attr_diff(attr_diff): if 'id' == attr_name: raise Exception('validation error: Attr_Diff: forbidden attribute change: \'id\', n_id: ' + n_id) -def map_rzdoc_name_to_rzdoc_id(rzdoc_name): - return rzdoc_name.lower().replace(' ', '_') +def cache_lookup__rzdoc(rzdoc_name): + """ + lookup RZDoc by rzdoc_name, possibly triggering a DB query + + @raise RZDoc_Exception__not_found + """ + # FIXME: impl cache cleansing logic + + cache_doc = current_app.cache__rzdoc_name_to_rzdoc.get(rzdoc_name) + if None != cache_doc: + return cache_doc + + kernel = current_app.kernel + rz_doc = kernel.rzdoc__lookup_by_name(rzdoc_name) + + if None == rz_doc: + raise RZDoc_Exception__not_found(rzdoc_name) + + current_app.cache__rzdoc_name_to_rzdoc[rzdoc_name] = rz_doc + return rz_doc + |
