def import_upload(dataset_name, sig, account_id, value_col, link_col): dataset = Dataset.find(dataset_name) account = Account.by_id(account_id) metadata, row_set = parse_upload(dataset, sig) headers = detect_headers(row_set) for row in row_set: data = dict([(c.column, c.value) for c in row]) value = data.pop(value_col) if value_col else None link = data.pop(link_col) if link_col else None if link_col: d = {'key': link, 'data': data} link_obj = Link.lookup(dataset, d, account, match_value=False) data = {} if value_col: d = {'value': value, 'data': data} value_obj = Value.by_value(dataset, value) if value_obj is None: value_obj = Value.create(dataset, d, account) value_obj.data = data if link_col and value_col: link_obj.match(dataset, {'choice': value_obj.id}, account) db.session.commit()
def create(dataset): dataset = Dataset.find(dataset) authz.require(authz.dataset_edit(dataset)) data = request_content() try: value = Value.create(dataset, data, request.account) db.session.commit() return redirect(url_for('.view', dataset=dataset.name, value=value.id)) except Invalid, inv: return handle_invalid(inv, view_dataset, data=data, args=[dataset.name])