Exemplo n.º 1
0
 def test_entity_manage__unmanageable(self):
     project, permission = _project_and_permission(admin=False)
     entity_source = \
         Entity(project=project, status=authz.PUBLISHED_THRESHOLD)
     entity_target = \
         Entity(project=project, status=authz.PUBLISHED_THRESHOLD)
     db.session.add(entity_source)
     db.session.add(entity_target)
     rel = Relation(source=entity_source, target=entity_target)
     db.session.add(rel)
     db.session.commit()
     with self.app.test_request_context():
         flask.session['id'] = 1
         self.app.preprocess_request()
         self.assertFalse(authz.relation_manage(rel))
Exemplo n.º 2
0
def save(data, files=None, entity=None):
    """ Save or update an entity. """
    data = validate(data, entity)

    operation = 'create' if entity is None else 'update'
    if entity is None:
        entity = Entity()
        entity.project = data.get('project')
        entity.author = data.get('author')
        db.session.add(entity)

    entity.schema = data.get('schema')

    prop_names = set()
    for name, prop in data.get('properties').items():
        prop_names.add(name)
        prop['project'] = entity.project
        prop['name'] = name
        prop['author'] = data.get('author')
        properties_logic.save(entity, prop, files=files)

    for prop in entity.properties:
        if prop.name not in prop_names:
            prop.active = False

    db.session.flush()
    _entity_changed.delay(entity.id, operation)
    return entity
Exemplo n.º 3
0
 def setUp(self):
     self.app = make_test_app()
     Entity.all().delete()
     # Consistently include an extra private project with Entity
     # that should not show in any test results
     project, permission = _project_and_permission(private=True)
     entity = Entity(project=project, status=authz.PUBLISHED_THRESHOLD)
     db.session.add(entity)
Exemplo n.º 4
0
 def test_private_project_entity_read__draft_status_admin(self):
     project, permission = _project_and_permission(private=True, admin=True)
     entity = Entity(project=project, status=authz.PUBLISHED_THRESHOLD - 1)
     db.session.add(entity)
     db.session.commit()
     with self.app.test_request_context():
         flask.session['id'] = 1
         self.app.preprocess_request()
         self.assertTrue(authz.entity_read(entity))
Exemplo n.º 5
0
 def test_public_project_entity_read__publish_status(self):
     project, permission = _project_and_permission()
     entity = Entity(project=project, status=authz.PUBLISHED_THRESHOLD)
     db.session.add(entity)
     db.session.commit()
     with self.app.test_request_context():
         flask.session['id'] = 1
         self.app.preprocess_request()
         self.assertTrue(authz.entity_read(entity))
Exemplo n.º 6
0
 def test_public_project_entity_read__default_status(self):
     project, permission = _project_and_permission()
     entity = Entity(project=project)
     db.session.add(entity)
     db.session.commit()
     with self.app.test_request_context():
         flask.session['id'] = 1
         self.app.preprocess_request()
         self.assertFalse(authz.entity_read(entity))
Exemplo n.º 7
0
 def test_all_entities__not_private_published(self):
     project, permission = _project_and_permission(private=False)
     entity = Entity(project=project, status=authz.PUBLISHED_THRESHOLD)
     db.session.add(entity)
     db.session.commit()
     with self.app.test_request_context():
         flask.session['id'] = 1
         self.app.preprocess_request()
         q = db.session.query(Entity)
         self.assertEqual(filters.for_entities(q, Entity).count(), 1)
Exemplo n.º 8
0
 def test_all_entities__private_reader_draft(self):
     project, permission = _project_and_permission(reader=True,
                                                   private=True)
     entity = Entity(project=project, status=authz.PUBLISHED_THRESHOLD - 1)
     db.session.add(entity)
     db.session.commit()
     with self.app.test_request_context():
         flask.session['id'] = 1
         self.app.preprocess_request()
         q = db.session.query(Entity)
         self.assertEqual(filters.for_entities(q, Entity).count(), 0)
Exemplo n.º 9
0
def save(data, entity=None):
    """ Save or update an entity. """

    data = validate(data)

    if entity is None:
        entity = Entity()
        entity.project = data.get('project')
        entity.author = data.get('author')
        db.session.add(entity)

    entity.schemata = list(set(data.get('schemata')))
    properties_logic.set_many(entity, data.get('author'),
                              data.get('properties'))
    db.session.flush()

    _entity_changed.delay(entity.id)
    return entity