Exemple #1
0
 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'])
Exemple #2
0
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}
Exemple #3
0
 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'])
Exemple #4
0
    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, {})
Exemple #5
0
 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'])
Exemple #6
0
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)
Exemple #7
0
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)
Exemple #8
0
 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'])
Exemple #9
0
 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'])
Exemple #10
0
    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, {})
Exemple #11
0
    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)
            })
Exemple #12
0
    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)
        })
Exemple #13
0
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}
Exemple #14
0
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}
Exemple #15
0
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}
Exemple #16
0
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}
Exemple #17
0
 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'])