def test_remove(self): original = invert_permissions_matrix( {"alexis": ["create_record", "read_permissions"]}) specified = {"alexis": ["-read_permissions"]} result = merge_permissions(original, specified) self.assertNotIn('alexis', result['read_permissions']) self.assertIn('alexis', result['create_record'])
def post_models(request): """Creates a model with the given definition and records, if any.""" if request.credentials_id: credentials_id = request.credentials_id else: credentials_id = Everyone specified_perms = request.data_clean['permissions'] default_perms = default_model_permissions(credentials_id) permissions = merge_permissions(default_perms, specified_perms) model_id = request.db.put_model( definition=request.data_clean['definition'], permissions=permissions) request.notify('ModelCreated', model_id) for record in request.data_clean['records']: record_id = request.db.put_record(model_id, record, [credentials_id]) request.notify('RecordCreated', model_id, record_id) request.response.status = "201 Created" location = '%s/models/%s' % (request.application_url, model_id) request.response.headers['location'] = str(location) return {'id': model_id}
def test_remove_not_present(self): original = invert_permissions_matrix( {"alexis": ["create_record", "read_permissions"]}) specified = {"alexis": ["-update_permissions"]} result = merge_permissions(original, specified) self.assertEqual(result['create_record'], ['alexis']) self.assertEqual(result['read_permissions'], ['alexis'])
def test_remove_all(self): original = invert_permissions_matrix({"alexis": PERMISSIONS_SET}) specified = {"alexis": ["-ALL"]} result = merge_permissions(original, specified) result = invert_permissions_matrix(result) self.assertDictEqual(result, {})
def test_from_empty_set(self): specified = { "alexis": ["read_permissions"], "remy": ["update_permissions"] } result = merge_permissions({}, specified) self.assertEqual(result['read_permissions'], ['alexis']) self.assertEqual(result['update_permissions'], ['remy'])
def put_permissions(request): """Update a model permissions.""" model_id = request.matchdict['model_id'] definition = request.db.get_model_definition(model_id) permissions = merge_permissions({}, request.data_clean) request.db.put_model(definition, permissions, model_id) return invert_permissions_matrix(permissions)
def test_remove_not_present(self): original = invert_permissions_matrix({ "alexis": ["create_record", "read_permissions"] }) specified = { "alexis": ["-update_permissions"] } result = merge_permissions(original, specified) self.assertEqual(result['create_record'], ['alexis']) self.assertEqual(result['read_permissions'], ['alexis'])
def test_remove(self): original = invert_permissions_matrix({ "alexis": ["create_record", "read_permissions"] }) specified = { "alexis": ["-read_permissions"] } result = merge_permissions(original, specified) self.assertNotIn('alexis', result['read_permissions']) self.assertIn('alexis', result['create_record'])
def test_remove_all(self): original = invert_permissions_matrix({ "alexis": PERMISSIONS_SET }) specified = { "alexis": ["-ALL"] } result = merge_permissions(original, specified) result = invert_permissions_matrix(result) self.assertDictEqual(result, {})
def test_add_all(self): original = invert_permissions_matrix( {"alexis": ["create_record", "read_permissions"]}) specified = {"remy": ["ALL"]} result = merge_permissions(original, specified) result = invert_permissions_matrix(result) self.assertDictEqual( result, { "alexis": ["create_record", "read_permissions"], "remy": sorted(PERMISSIONS_SET) })
def test_add_all(self): original = invert_permissions_matrix({ "alexis": ["create_record", "read_permissions"] }) specified = { "remy": ["ALL"] } result = merge_permissions(original, specified) result = invert_permissions_matrix(result) self.assertDictEqual(result, { "alexis": ["create_record", "read_permissions"], "remy": sorted(PERMISSIONS_SET) })
def handle_put_model(request, create=False): model_id = request.matchdict["model_id"] if request.credentials_id: credentials_id = request.credentials_id else: credentials_id = Everyone specified_perms = request.data_clean["permissions"] default_perms = default_model_permissions(credentials_id) permissions = merge_permissions(default_perms, specified_perms) request.db.put_model(request.data_clean["definition"], permissions, model_id) event = "ModelCreated" if create else "ModelUpdated" request.notify(event, model_id) for record in request.data_clean["records"]: record_id = request.db.put_record(model_id, record, [credentials_id]) request.notify("RecordCreated", model_id, record_id) return {"id": model_id}
def handle_put_model(request, create=False): model_id = request.matchdict['model_id'] if request.credentials_id: credentials_id = request.credentials_id else: credentials_id = Everyone specified_perms = request.data_clean['permissions'] default_perms = default_model_permissions(credentials_id) permissions = merge_permissions(default_perms, specified_perms) request.db.put_model(request.data_clean['definition'], permissions, model_id) event = 'ModelCreated' if create else 'ModelUpdated' request.notify(event, model_id) for record in request.data_clean['records']: record_id = request.db.put_record(model_id, record, [credentials_id]) request.notify('RecordCreated', model_id, record_id) return {"id": model_id}
def test_from_empty_set(self): specified = {"alexis": ["read_permissions"], "remy": ["update_permissions"]} result = merge_permissions({}, specified) self.assertEqual(result['read_permissions'], ['alexis']) self.assertEqual(result['update_permissions'], ['remy'])