Esempio n. 1
0
def transform_results(results):
    """Pull out unused fields, add title field from layers if possible"""
    regulations = set((r['regulation'], r['version']) for r in results)

    layers = {}
    for regulation, version in regulations:
        terms = ESLayers().get('terms', regulation, version)
        # We need the references, not the locations of defined terms
        if terms:
            defined = {}
            for term_struct in terms['referenced'].values():
                defined[term_struct['reference']] = term_struct['term']
            terms = defined
        layers[(regulation, version)] = {
            'keyterms': ESLayers().get('keyterms', regulation, version),
            'terms': terms
        }

    for result in results:
        title = result.get('title', '')
        ident = (result['regulation'], result['version'])
        keyterms = layers[ident]['keyterms']
        terms = layers[ident]['terms']
        if not title and keyterms and result['label_string'] in keyterms:
            title = keyterms[result['label_string']][0]['key_term']
        if not title and terms and result['label_string'] in terms:
            title = terms[result['label_string']]

        if title:
            result['title'] = title

    return results
Esempio n. 2
0
class SplitterLayers(object):
    """Implementation of Django+Elastic Search as layers backend"""
    def __init__(self):
        self.dm = DMLayers()
        self.es = ESLayers()

        self.get = self.dm.get

    def bulk_put(self, layers, version, layer_name, root_label):
        """Write to both"""
        self.dm.bulk_put(layers, version, layer_name, root_label)
        self.es.bulk_put(layers, version, layer_name, root_label)
 def test_get_success(self):
     with self.expect_get('layer', 'namnam:cfr:verver:lablab',
                          {'layer': {
                              'some': 'body'
                          }}):
         self.assertEqual(ESLayers().get('namnam', 'cfr', 'verver:lablab'),
                          {"some": "body"})
    def test_bulk_insert(self):
        layers = [{
            '111-22': [],
            '111-22-a': [],
            'doc_id': 'verver:111-22'
        }, {
            '111-23': [],
            'doc_id': 'verver:111-23'
        }]
        with self.expect_bulk_insert('layer', 2) as bulk_insert:
            ESLayers().bulk_insert(layers, 'name', 'cfr')

        del layers[0]['doc_id']
        del layers[1]['doc_id']
        transformed = [{
            'id': 'name:cfr:verver:111-22',
            'layer': layers[0]
        }, {
            'id': 'name:cfr:verver:111-23',
            'layer': layers[1]
        }]
        self.assertEqual(transformed, bulk_insert.call_args[0][2])
 def test_get_404(self):
     with self.expect_get('layer', 'namnam:cfr:verver:lablab'):
         self.assertIsNone(ESLayers().get('namnam', 'cfr', 'verver:lablab'))
Esempio n. 6
0
    def __init__(self):
        self.dm = DMLayers()
        self.es = ESLayers()

        self.get = self.dm.get