def label(self): if self.custom_label is not None: return self.custom_label # This is weird. Should live somewhere else. fragments = [] q = self.query.get('q') if q and len(q): fragments.append('matching "%s"' % ''.join(q)) entities = self.query.get('entity') if entities and len(entities): try: entities = Entity.by_id_set(entities) sub_fragments = [] for entity in entities.values(): sub_fragments.append('"%s"' % entity.name) fragment = ' and '.join(sub_fragments) fragments.append('mentioning %s' % fragment) except: pass for key in self.query.keys(): try: if not key.startswith('filter:'): continue _, field = key.split(':', 1) # TODO: source_id special handling? field = field.replace('_', ' ') value = '; '.join(self.query.get(key)) fragments.append('filtered by %s: %s' % (field, value)) except: pass if not len(fragments): return 'Everything' return 'Results %s' % ', '.join(fragments)
def convert_entities(entities): results = [] buckets = entities.get('buckets', []) entities = Entity.by_id_set([e.get('key') for e in buckets]) for bucket in buckets: entity = entities.get(bucket.get('key')) if entity is None: continue data = entity.to_dict() data['count'] = bucket.get('doc_count') results.append(data) return results