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 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_nobody_can_change_permissions_of_anonymous_models(self): perms = default_model_permissions('system.Everyone') self.assertEqual(set(perms.keys()), PERMISSIONS_SET - set(['update_permissions']))
def test_default_model_permissions(self): perms = default_model_permissions('abc') self.assertEqual(set(perms.keys()), PERMISSIONS_SET) tokens = [t[0] for t in perms.values()] self.assertEqual(set(['abc']), set(tokens))