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
Exemple #7
0
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
Exemple #8
0
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
Exemple #10
0
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
Exemple #11
0
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
Exemple #13
0
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
Exemple #14
0
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