Ejemplo n.º 1
0
    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
        }
Ejemplo n.º 2
0
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
        })
Ejemplo n.º 3
0
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())
Ejemplo n.º 4
0
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)
Ejemplo n.º 5
0
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
Ejemplo n.º 6
0
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())
Ejemplo n.º 7
0
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)
Ejemplo n.º 8
0
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())
Ejemplo n.º 9
0
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)
Ejemplo n.º 10
0
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)
Ejemplo n.º 11
0
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)
Ejemplo n.º 12
0
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
Ejemplo n.º 13
0
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
Ejemplo n.º 14
0
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