示例#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
     }
示例#2
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
        }
示例#3
0
 def lookup(cls, dataset, data, account, match_entity=True, readonly=False):
     data = AliasLookupSchema().to_python(data)
     if match_entity:
         entity = Entity.by_name(dataset, data['name'])
         if entity is not None:
             return entity
     else:
         entity = None
     alias = cls.by_name(dataset, data['name'])
     if alias is not None:
         return alias
     choices = match_op(data['name'], dataset)
     choices = filter(lambda (c, v, s): s > 99.9, choices)
     if len(choices) == 1:
         c, entity_id, s = choices.pop()
         entity = Entity.by_id(dataset, entity_id)
     if readonly:
         return entity
     alias = cls()
     alias.creator = account
     alias.dataset = dataset
     alias.entity = entity
     alias.is_matched = entity is not None
     alias.name = data['name']
     alias.data = data['data']
     db.session.add(alias)
     db.session.flush()
     if entity is not None:
         add_candidate_to_cache(dataset, alias.name, entity.id)
     return alias
示例#4
0
 def lookup(cls, dataset, data, account, match_entity=True,
         readonly=False):
     data = AliasLookupSchema().to_python(data)
     if match_entity:
         entity = Entity.by_name(dataset, data['name'])
         if entity is not None:
             return entity
     else:
         entity = None
     alias = cls.by_name(dataset, data['name'])
     if alias is not None:
         return alias
     choices = match_op(data['name'], dataset)
     choices = filter(lambda (c,v,s): s > 99.9, choices)
     if len(choices)==1:
         c, entity_id, s = choices.pop()
         entity = Entity.by_id(dataset, entity_id)
     if readonly:
         return entity
     alias = cls()
     alias.creator = account
     alias.dataset = dataset
     alias.entity = entity
     alias.is_matched = entity is not None
     alias.name = data['name']
     alias.data = data['data']
     db.session.add(alias)
     db.session.flush()
     if entity is not None:
         add_candidate_to_cache(dataset, alias.name, entity.id)
     return alias
示例#5
0
 def __iter__(self):
     rp = db.engine.execute(self.lq)
     rows = rp.fetchall()
     ids = [r[0] for r in rows]
     entities = Entity.id_map(ids)
     for (id, score) in rows:
         yield {'score': int(score), 'entity': entities.get(id)}
示例#6
0
 def __iter__(self):
     rp = db.engine.execute(self.lq)
     rows = rp.fetchall()
     ids = [r[0] for r in rows]
     entities = Entity.id_map(ids)
     for (id, score) in rows:
         yield {'score': int(score), 'entity': entities.get(id)}
示例#7
0
 def _to_python(self, value, state):
     if value == 'NEW':
         return value
     elif value == 'INVALID' and state.dataset.enable_invalid:
         return value
     entity = Entity.by_id(state.dataset, value)
     if entity is not None:
         return entity
     raise Invalid('No such entity.', value, None)
示例#8
0
 def _to_python(self, value, state):
     if value == 'NEW':
         return value
     elif value == 'INVALID' and state.dataset.enable_invalid:
         return value
     entity = Entity.by_id(state.dataset, value)
     if entity is not None:
         return entity
     raise Invalid('No such entity.', value, None)
示例#9
0
 def match(self, dataset, data, account):
     state = AliasMatchState(dataset)
     data = AliasMatchSchema().to_python(data, state)
     self.is_matched = True
     self.matcher = account
     if data['choice'] == 'INVALID':
         self.entity = None
         self.is_invalid = True
     elif data['choice'] == 'NEW':
         self.entity = Entity.create(dataset, data, account)
         self.is_invalid = False
     else:
         self.entity = data['choice']
         self.is_invalid = False
     db.session.add(self)
     db.session.flush()
示例#10
0
 def match(self, dataset, data, account):
     state = AliasMatchState(dataset)
     data = AliasMatchSchema().to_python(data, state)
     self.is_matched = True
     self.matcher = account
     if data['choice'] == 'INVALID':
         self.entity = None
         self.is_invalid = True
     elif data['choice'] == 'NEW':
         self.entity = Entity.create(dataset, data, account)
         self.is_invalid = False
     else:
         self.entity = data['choice']
         self.is_invalid = False
     db.session.add(self)
     db.session.flush()
示例#11
0
 def delete(self):
     from nomenklatura.model.entity import Entity
     Entity.all(self).delete()
     db.session.delete(self)
     db.session.flush()