def _to_python(self, value, state): if isinstance(value, dict): value = value.get('id') entity = Entity.by_id(value) if entity is None: entity = Entity.by_name(state.dataset, value) if entity is None: raise Invalid('Entity does not exist: %s' % value, value, None) if entity == state.entity: return None if entity.dataset != state.dataset: raise Invalid('Entity belongs to a different dataset.', value, None) return entity
def import_upload(upload_id, account_id, mapping): upload = Upload.all().filter_by(id=upload_id).first() account = Account.by_id(account_id) mapped = mapping['columns'].values() rows = [apply_mapping(r, mapping) for r in upload.tab.dict] # put aliases second. rows = sorted(rows, key=lambda r: 2 if r.get('canonical') else 1) for i, row in enumerate(rows): try: entity = None if row.get('id'): entity = Entity.by_id(row.get('id')) if entity is None: entity = Entity.by_name(upload.dataset, row.get('name')) if entity is None: entity = Entity.create(upload.dataset, row, account) # restore some defaults: if entity.canonical_id and 'canonical' not in mapped: row['canonical'] = entity.canonical_id if entity.invalid and 'invalid' not in mapped: row['invalid'] = entity.invalid if entity.attributes: attributes = entity.attributes.copy() else: attributes = {} attributes.update(row['attributes']) row['attributes'] = attributes entity.update(row, account) print(entity) if i % 100 == 0: db.session.commit() logging.debug('Commit') except Invalid as inv: logging.warning('Exception during import: {}'.format(str(inv))) db.session.commit() logging.info('Import Completed')
def import_upload(upload_id, account_id, mapping): upload = Upload.all().filter_by(id=upload_id).first() account = Account.by_id(account_id) mapped = mapping['columns'].values() rows = [apply_mapping(r, mapping) for r in upload.tab.dict] # put aliases second. rows = sorted(rows, key=lambda r: 2 if r.get('canonical') else 1) for i, row in enumerate(rows): try: entity = None if row.get('id'): entity = Entity.by_id(row.get('id')) if entity is None: entity = Entity.by_name(upload.dataset, row.get('name')) if entity is None: entity = Entity.create(upload.dataset, row, account) # restore some defaults: if entity.canonical_id and 'canonical' not in mapped: row['canonical'] = entity.canonical_id if entity.invalid and 'invalid' not in mapped: row['invalid'] = entity.invalid if entity.attributes: attributes = entity.attributes.copy() else: attributes = {} attributes.update(row['attributes']) row['attributes'] = attributes entity.update(row, account) print entity if i % 100 == 0: print 'COMMIT' db.session.commit() except Invalid, inv: # TODO: logging. print inv
def update(id): entity = Entity.by_id(id) authz.require(authz.dataset_edit(entity.dataset)) entity.update(request_data(), request.account) db.session.commit() return redirect(url_for('.view', id=entity.id))
def aliases(id): entity = Entity.by_id(id) return query_pager(entity.aliases, id=id)
def view(id): entity = object_or_404(Entity.by_id(id)) return jsonify(entity)
def aliases(id): entity = Entity.by_id(id) pager = Pager(entity.aliases, id=id) return jsonify(pager.to_dict())
def update(id): entity = Entity.by_id(id) authz.require(authz.dataset_edit(entity.dataset)) entity.update(request_data(), request.account) db.session.commit() return redirect(url_for('.view', id=entity.id))
def aliases(id): entity = Entity.by_id(id) return query_pager(entity.aliases, id=id)
def view(id): entity = object_or_404(Entity.by_id(id)) return jsonify(entity)
def view(id): entity = Entity.by_id(id) return jsonify(entity)
def aliases(id): entity = Entity.by_id(id) pager = Pager(entity.aliases, id=id) return jsonify(pager.to_dict())