move remaining queries into db module
[mygpo.git] / mygpo / db / couchdb / common.py
blob72e2938267aeb97672bc617b2ba22e484d281290
1 from mygpo.core.models import SanitizingRule
2 from mygpo.cache import cache_result
3 from mygpo.couch import get_main_database
6 class SanitizingRuleStub(object):
7 pass
10 @cache_result(timeout=60*60)
11 def sanitizingrules_by_obj_type(obj_type):
12 r = SanitizingRule.view('sanitizing_rules/by_target',
13 include_docs = True,
14 startkey = [obj_type, None],
15 endkey = [obj_type, {}],
18 for rule in r:
19 obj = SanitizingRuleStub()
20 obj.slug = rule.slug
21 obj.applies_to = list(rule.applies_to)
22 obj.search = rule.search
23 obj.replace = rule.replace
24 obj.priority = rule.priority
25 obj.description = rule.description
26 yield obj
29 @cache_result(timeout=60*60)
30 def sanitizingrule_for_slug(slug):
31 r = SanitizingRule.view('sanitizing_rules/by_slug',
32 include_docs=True,
33 key=slug,
36 return r.one() if r else None
39 def missing_slug_count(doc_type, start, end):
40 db = get_main_database()
41 res = db.view('slugs/missing',
42 startkey = [doc_type] + end,
43 endkey = [doc_type] + start,
44 descending = True,
45 reduce = True,
46 group = True,
47 group_level = 1,
49 return res.first()['value'] if res else 0
52 def missing_slugs(doc_type, start, end, wrapper, **kwargs):
54 db = get_main_database()
55 return multi_request_view(db, 'slugs/missing',
56 startkey = [doc_type] + end,
57 endkey = [doc_type] + start,
58 descending = True,
59 include_docs = True,
60 reduce = False,
61 wrapper = wrapper,
62 auto_advance = False,
63 **kwargs