def to_dict(self): from nomenklatura.model.entity import Entity num_aliases = Entity.all(self).filter( Entity.canonical_id != None).count() num_review = Entity.all(self).filter_by(reviewed=False).count() num_entities = Entity.all(self).count() num_invalid = Entity.all(self).filter_by(invalid=True).count() return { 'id': self.id, 'name': self.name, 'label': self.label, 'owner': self.owner.to_dict(), 'stats': { 'num_aliases': num_aliases, 'num_entities': num_entities, 'num_review': num_review, 'num_invalid': num_invalid }, 'ignore_case': self.ignore_case, 'match_aliases': self.match_aliases, 'public_edit': self.public_edit, 'normalize_text': self.normalize_text, 'enable_invalid': self.enable_invalid, 'created_at': self.created_at, 'updated_at': self.updated_at }
def suggest(dataset): """ Suggest API, emulates Google Refine API. See: http://code.google.com/p/google-refine/wiki/SuggestApi """ dataset = Dataset.by_name(dataset) entities = Entity.all().filter(Entity.invalid!=True) query = request.args.get('prefix', '').strip() entities = entities.filter(Entity.name.ilike('%s%%' % query)) entities = entities.offset(get_offset(field='start')) entities = entities.limit(get_limit(default=20)) matches = [] for entity in entities: matches.append({ 'name': entity.name, 'n:type': { 'id': '/' + dataset.name, 'name': dataset.label }, 'id': entity.id }) return jsonify({ "code" : "/api/status/ok", "status" : "200 OK", "prefix" : query, "result" : matches })
def review(dataset): entities = Entity.all() dataset = Dataset.find(dataset) entities = entities.filter_by(dataset=dataset) entities = entities.filter(Entity.reviewed==False) entities = entities.offset(randint(0, entities.count()-1)) return jsonify(entities.first())
def index(dataset, format='json'): dataset = Dataset.find(dataset) q = Entity.all(dataset, eager=True) if format == 'csv': fn = csv_filename(dataset, 'entities') headers = {'Content-Disposition': 'attachment; filename=' + fn} return csvify(q, headers=headers) return jsonify(q)
def _get_candidates(dataset): for entity in Entity.all(dataset, eager_aliases=dataset.match_aliases): candidate = normalize(entity.name, dataset) yield candidate, entity.id if dataset.match_aliases: for link in entity.aliases_static: candidate = normalize(link.name, dataset) yield candidate, entity.id
def review(dataset): entities = Entity.all() dataset = Dataset.find(dataset) entities = entities.filter_by(dataset=dataset) entities = entities.filter(Entity.reviewed == False) review_count = entities.count() if review_count == 0: return jsonify(None) entities = entities.offset(randint(0, review_count - 1)) return jsonify(entities.first())
def index(dataset, format='json'): dataset = Dataset.find(dataset) q = Entity.all(dataset, eager=True) if format == 'csv': fn = csv_filename(dataset, 'entities') headers = { 'Content-Disposition': 'attachment; filename=' + fn } return csvify(q, headers=headers) return jsonify(q)
def review(dataset): entities = Entity.all() dataset = Dataset.find(dataset) entities = entities.filter_by(dataset=dataset) entities = entities.filter(Entity.reviewed == False) # noqa review_count = entities.count() if review_count == 0: return jsonify(None) entities = entities.offset(randint(0, review_count - 1)) return jsonify(entities.first())
def view(dataset): dataset = Dataset.find(dataset) format = response_format() if format == 'json': return jsonify(dataset) unmatched = Alias.all_unmatched(dataset).count() entities = Entity.all(dataset, query=request.args.get('query')) pager = Pager(entities, '.view', dataset=dataset.name, limit=10) return render_template('dataset/view.html', entities=pager, num_entities=len(pager), num_aliases=Alias.all(dataset).count(), invalid=Alias.all_invalid(dataset).count(), query=request.args.get('query', ''), dataset=dataset, unmatched=unmatched)
def view(dataset): dataset = Dataset.find(dataset) format = response_format() headers = { 'X-Dataset': dataset.name, 'Last-Modified': http_date(dataset.last_modified) } if format == 'json': return jsonify(dataset, headers=headers) unmatched = Alias.all_unmatched(dataset).count() entities = Entity.all(dataset, query=request.args.get('query')) pager = Pager(entities, '.view', dataset=dataset.name, limit=10) html = render_template('dataset/view.html', entities=pager, num_entities=len(pager), num_aliases=Alias.all(dataset).count(), invalid=Alias.all_invalid(dataset).count(), query=request.args.get('query', ''), dataset=dataset, unmatched=unmatched) return Response(html, headers=headers)
def index(): entities = Entity.all() dataset_arg = request.args.get('dataset') if dataset_arg is not None: dataset = Dataset.find(dataset_arg) entities = entities.filter_by(dataset=dataset) filter_name = request.args.get('filter_name', '') if len(filter_name): query = '%' + filter_name + '%' entities = entities.filter(Entity.name.ilike(query)) # TODO, other filters. format = request.args.get('format', 'json').lower().strip() if format == 'csv': res = csvify(entities) else: res = query_pager(entities) if arg_bool('download'): fn = dataset_filename(dataset, format) res.headers['Content-Disposition'] = 'attachment; filename=' + fn return res
def index(): entities = Entity.all() dataset_arg = request.args.get("dataset") if dataset_arg is not None: dataset = Dataset.find(dataset_arg) entities = entities.filter_by(dataset=dataset) filter_name = request.args.get("filter_name", "") if len(filter_name): query = "%" + filter_name + "%" entities = entities.filter(Entity.name.ilike(query)) # TODO, other filters. format = request.args.get("format", "json").lower().strip() if format == "csv": res = csvify(entities) else: pager = Pager(entities) res = jsonify(pager.to_dict()) if arg_bool("download"): fn = dataset_filename(dataset, format) res.headers["Content-Disposition"] = "attachment; filename=" + fn return res