create_editor_group

This commit is contained in:
SvyatoslavArtymovych 2023-05-24 17:26:39 +03:00
parent 8ae2b8e009
commit 6abd2fad19
5 changed files with 158 additions and 60 deletions

View File

@ -14,6 +14,7 @@
"backref",
"bookname",
"Btns",
"CUDA",
"Divs",
"flowbite",
"jsonify",

View File

@ -0,0 +1,73 @@
from app import models as m
from app.logger import log
from .get_or_create_permission import get_or_create_permission
def create_moderator_group():
log(log.INFO, "Create moderator access group")
group: m.AccessGroup = m.AccessGroup(name="moderator").save()
permissions = []
comment_DA = get_or_create_permission(
access=m.Permission.Access.D | m.Permission.Access.A,
entity_type=m.Permission.Entity.COMMENT,
)
permissions.append(comment_DA)
interpretation_DA = get_or_create_permission(
access=m.Permission.Access.D | m.Permission.Access.A,
entity_type=m.Permission.Entity.INTERPRETATION,
)
permissions.append(interpretation_DA)
for permission in permissions:
log(log.INFO, "Add permission [%d] to group[%d]", permission.id, group.id)
m.PermissionAccessGroups(
permission_id=permission.id, access_group_id=group.id
).save()
return group
def create_editor_group():
log(log.INFO, "Create editor access group")
group: m.AccessGroup = m.AccessGroup(name="editor").save()
permissions = []
comment_DA = get_or_create_permission(
access=m.Permission.Access.D | m.Permission.Access.A,
entity_type=m.Permission.Entity.COMMENT,
)
permissions.append(comment_DA)
interpretation_DA = get_or_create_permission(
access=m.Permission.Access.D | m.Permission.Access.A,
entity_type=m.Permission.Entity.INTERPRETATION,
)
permissions.append(interpretation_DA)
section_CUD = get_or_create_permission(
access=m.Permission.Access.C | m.Permission.Access.U | m.Permission.Access.D,
entity_type=m.Permission.Entity.SECTION,
)
permissions.append(section_CUD)
collection_CUD = get_or_create_permission(
access=m.Permission.Access.C | m.Permission.Access.U | m.Permission.Access.D,
entity_type=m.Permission.Entity.COLLECTION,
)
permissions.append(collection_CUD)
book_U = get_or_create_permission(
access=m.Permission.Access.U,
entity_type=m.Permission.Entity.BOOK,
)
permissions.append(book_U)
for permission in permissions:
log(log.INFO, "Add permission [%d] to group[%d]", permission.id, group.id)
m.PermissionAccessGroups(
permission_id=permission.id, access_group_id=group.id
).save()
return group

View File

@ -1,29 +0,0 @@
from app import models as m
from app.logger import log
from .get_or_create_permission import get_or_create_permission
def create_moderator_group():
log(log.INFO, "Create moderator access group")
group: m.AccessGroup = m.AccessGroup(name="moderator").save()
interpretation_DA = get_or_create_permission(
access=m.Permission.Access.D | m.Permission.Access.A,
entity_type=m.Permission.Entity.INTERPRETATION,
)
comment_DA = get_or_create_permission(
access=m.Permission.Access.D | m.Permission.Access.A,
entity_type=m.Permission.Entity.COMMENT,
)
log(log.INFO, "Add permission [%d] to group[%d]", interpretation_DA.id, group.id)
m.PermissionAccessGroups(
permission_id=interpretation_DA.id, access_group_id=group.id
).save()
log(log.INFO, "Add permission [%d] to group[%d]", comment_DA.id, group.id)
m.PermissionAccessGroups(
permission_id=comment_DA.id, access_group_id=group.id
).save()
return group

View File

@ -0,0 +1,84 @@
from app.controllers.create_access_groups import (
create_moderator_group,
create_editor_group,
)
from app import models as m
def test_init_moderator_group(client):
create_moderator_group()
group: m.AccessGroup = m.AccessGroup.query.filter_by(name="moderator").first()
assert group
assert not group.users
assert group.permissions
permissions = group.permissions
access = m.Permission.Access
interpretation_DA: m.Permission = m.Permission.query.filter_by(
access=access.D | access.A, entity_type=m.Permission.Entity.INTERPRETATION
).first()
assert interpretation_DA
assert interpretation_DA in permissions
comment_DA: m.Permission = m.Permission.query.filter_by(
access=access.D | access.A, entity_type=m.Permission.Entity.COMMENT
).first()
assert comment_DA
assert comment_DA in permissions
create_moderator_group()
groups: list[m.AccessGroup] = m.AccessGroup.query.filter_by(name="moderator").all()
assert len(groups) == 2
def test_init_editor_group(client):
create_editor_group()
group: m.AccessGroup = m.AccessGroup.query.filter_by(name="editor").first()
assert group
assert not group.users
assert group.permissions
permissions = group.permissions
access = m.Permission.Access
interpretation_DA: m.Permission = m.Permission.query.filter_by(
access=access.D | access.A, entity_type=m.Permission.Entity.INTERPRETATION
).first()
assert interpretation_DA
assert interpretation_DA in permissions
comment_DA: m.Permission = m.Permission.query.filter_by(
access=access.D | access.A, entity_type=m.Permission.Entity.COMMENT
).first()
assert comment_DA
assert comment_DA in permissions
section_CUD: m.Permission = m.Permission.query.filter_by(
access=access.C | access.U | access.D,
entity_type=m.Permission.Entity.SECTION,
).first()
assert section_CUD
assert section_CUD in permissions
collection_CUD: m.Permission = m.Permission.query.filter_by(
access=access.C | access.U | access.D,
entity_type=m.Permission.Entity.COLLECTION,
).first()
assert collection_CUD
assert collection_CUD in permissions
book_U: m.Permission = m.Permission.query.filter_by(
access=access.U,
entity_type=m.Permission.Entity.BOOK,
).first()
assert book_U
assert book_U in permissions
create_editor_group()
groups: list[m.AccessGroup] = m.AccessGroup.query.filter_by(name="editor").all()
assert len(groups) == 2

View File

@ -1,31 +0,0 @@
from app.controllers.init_access_groups import create_moderator_group
from app import models as m
def test_init_moderator_group(client):
create_moderator_group()
group: m.AccessGroup = m.AccessGroup.query.filter_by(name="moderator").first()
assert group
assert not group.users
assert group.permissions
permissions = group.permissions
access = m.Permission.Access
interpretation_DA: m.Permission = m.Permission.query.filter_by(
access=access.D | access.A, entity_type=m.Permission.Entity.INTERPRETATION
).first()
assert interpretation_DA
assert interpretation_DA in permissions
comment_DA: m.Permission = m.Permission.query.filter_by(
access=access.D | access.A, entity_type=m.Permission.Entity.COMMENT
).first()
assert comment_DA
assert comment_DA in permissions
create_moderator_group()
groups: list[m.AccessGroup] = m.AccessGroup.query.filter_by(name="moderator").all()
assert len(groups) == 2