# -*- coding: utf8 -*-
'''
This module contains a few utility functions.
'''
import re
from pyramid_skosprovider.renderers import (
json_renderer,
concept_adapter,
collection_adapter,
label_adapter,
note_adapter,
source_adapter
)
import logging
log = logging.getLogger(__name__)
class QueryBuilder:
def __init__(self, request, postprocess=False):
self.request = request
self.postprocess = postprocess
self.no_result = False
self.mode = self.request.params.get('mode', 'default')
self.language = self.request.params.get(
'language',
self.request.locale_name
)
self.label = self.request.params.get('label', None)
def _build_type(self, query):
type = self.request.params.get('type', None)
if type in ['concept', 'collection']:
query['type'] = type
return query
def _build_label(self, query):
if self.label not in [None, '*', '']:
if self.mode == 'dijitFilteringSelect' and '*' in self.label:
self.postprocess = True
query['label'] = self.label.replace('*', '')
else:
query['label'] = self.label
return query
def _build_collection(self, query):
coll = self.request.params.get('collection', None)
if coll is not None:
query['collection'] = {'id': coll, 'depth': 'all'}
return query
def __call__(self):
if self.mode == 'dijitFilteringSelect' and self.label == '':
self.no_result = True
q = {}
q = self._build_type(q)
q = self._build_label(q)
q = self._build_collection(q)
return q