def create(owner_name, data): owner = account.find(owner_name) require.resource.create(owner) state = NodeSchemaState(owner_name, None) data_ = ResourceSchema().to_python(data, state=state) resource = Resource(owner, data_['name'], data_['url'], data_['summary'], data_['meta']) db.session.add(resource) db.session.flush() index_add(resource) event_ = ResourceCreatedEvent(current_user, resource) event.emit(event_, [resource]) if 'dataset' in data: from datahub.logic.dataset import add_resource reference = {'owner': owner_name, 'name': resource.name} add_resource(data['dataset']['owner'], data['dataset']['name'], reference, in_tx=True) db.session.commit() return resource
def delete(owner_name, dataset_name): dataset = find(owner_name, dataset_name) require.dataset.delete(dataset) event_ = DatasetDeletedEvent(current_user, dataset) event.emit(event_, [dataset]) db.session.delete(dataset) index_delete(dataset) db.session.commit()
def delete(owner_name, resource_name): resource = find(owner_name, resource_name) require.resource.delete(resource) event_ = ResourceDeletedEvent(current_user, resource) event.emit(event_, [resource]) db.session.delete(resource) index_delete(resource) db.session.commit()
def remove_resource(owner_name, dataset_name, resource_owner, resource_name): dataset = find(owner_name, dataset_name) require.dataset.remove_resource(dataset) res = resource.find(resource_owner, resource_name) if res in dataset.resources: dataset.resources.remove(res) event_ = DatasetRemoveResourceEvent(dataset.owner, dataset, res) event.emit(event_, [dataset, res]) db.session.commit()
def add_resource(owner_name, dataset_name, data, in_tx=False): dataset = find(owner_name, dataset_name) require.dataset.add_resource(dataset) data = NodeReference().to_python(data) res = resource.find(data['owner'], data['name']) if not res in dataset.resources: dataset.resources.append(res) event_ = DatasetAddResourceEvent(current_user, dataset, res) event.emit(event_, [dataset, res]) if not in_tx: db.session.commit()
def update(owner_name, dataset_name, data): dataset = find(owner_name, dataset_name) require.dataset.update(dataset) # tell availablename about our current name: state = NodeSchemaState(owner_name, dataset_name) data = DatasetSchema().to_python(data, state=state) dataset.name = data['name'] dataset.summary = data['summary'] dataset.meta = data['meta'] index_add(dataset) event_ = DatasetUpdatedEvent(current_user, dataset) event.emit(event_, [dataset]) db.session.commit() return dataset
def register(data): require.account.create() state = AccountSchemaState(None) data = RegistrationSchema().to_python(data, state=state) user = User(data['name'], data['full_name'], data['email'], hash_password(data['password'])) db.session.add(user) db.session.flush() index_add(user) event_ = AccountCreatedEvent(user) event.emit(event_) send_activation(user) db.session.commit() return user
def update(owner_name, resource_name, data): resource = find(owner_name, resource_name) require.resource.update(resource) # tell availablename about our current name: state = NodeSchemaState(owner_name, resource_name) data = ResourceSchema().to_python(data, state=state) resource.name = data['name'] resource.url = data['url'] resource.summary = data['summary'] resource.meta = data['meta'] index_add(resource) event_ = ResourceUpdatedEvent(current_user, resource) event.emit(event_, [resource]) db.session.commit() return resource
def update(account_name, data): """ Update an account's data. """ account = find(account_name) require.account.update(account) # tell availablename about our current name: state = AccountSchemaState(account_name) data = AccountSchema().to_python(data, state=state) account.name = data['name'] account.full_name = data['full_name'] if 'email' in data and data['email'] is not None: account.email = data['email'] index_add(account) # FIXME: use current_user, not owner. event_ = AccountUpdatedEvent(account) event.emit(event_) db.session.commit() return account
def create(owner_name, data): owner = account.find(owner_name) require.dataset.create(owner) state = NodeSchemaState(owner_name, None) data_ = DatasetSchema().to_python(data, state=state) dataset = Dataset(owner, data_['name'], data_['summary'], data_['meta']) db.session.add(dataset) db.session.flush() index_add(dataset) event_ = DatasetCreatedEvent(current_user, dataset) event.emit(event_, [dataset]) if 'resource' in data: add_resource(dataset.owner.name, dataset.name, data['resource'], in_tx=True) db.session.commit() return dataset
def update(user, data): require.account.update(user) # TODO combine with account.update state = AccountSchemaState(user.name) data = ProfileSchema().to_python(data, state=state) user.name = data['name'] user.full_name = data['full_name'] user.email = data['email'] if data['password']: user.password = hash_password(data['password']) db.session.add(user) index_add(user) event_ = AccountUpdatedEvent(current_user) event.emit(event_) db.session.commit() return user