Esempio n. 1
0
def save(data, project=None):
    """ Create or update a project with a given slug. """

    data = validate(data, project)

    operation = 'create' if project is None else 'update'
    if project is None:
        project = Project()
        project.slug = data.get('slug')
        project.author = data.get('author')

        from grano.logic import permissions as permissions_logic
        permissions_logic.save({
            'account': data.get('author'),
            'project': project,
            'admin': True
        })

    project.settings = data.get('settings')
    project.label = data.get('label')
    project.private = data.get('private')
    project.updated_at = datetime.utcnow()

    db.session.add(project)

    # TODO: make this nicer - separate files?
    from grano.logic.schemata import import_schema
    with app.open_resource('fixtures/base.yaml') as fh:
        import_schema(project, fh)

    db.session.flush()
    _project_changed(project.slug, operation)
    return project
Esempio n. 2
0
def _project_and_permission(private=False,
                            reader=False,
                            editor=False,
                            admin=False,
                            account_id=1):
    project = Project(private=private)
    db.session.add(project)
    db.session.commit()
    perm = Permission(account_id=account_id,
                      project_id=project.id,
                      reader=reader,
                      editor=editor,
                      admin=admin)
    db.session.add(perm)
    db.session.commit()
    return project, perm
Esempio n. 3
0
def save(data, project=None):
    """ Create or update a project with a given slug. """

    data = validate(data, project)

    if project is None:
        project = Project()
        project.slug = data.get('slug')
        project.author = data.get('author')

    project.settings = data.get('settings')
    project.label = data.get('label')
    project.updated_at = datetime.utcnow()

    db.session.add(project)

    # TODO: make this nicer - separate files?
    from grano.logic.schemata import import_schema
    with app.open_resource('fixtures/base.yaml') as fh:
        import_schema(project, fh)

    db.session.flush()
    return project
Esempio n. 4
0
 def test_create_project(self):
     project = Project(label='I am a banana!')
     assert 'banana' in project.label, project.to_json()