Skip to content

Commit

Permalink
Merge pull request #78 from unipoll/members
Browse files Browse the repository at this point in the history
Patch Policies
  • Loading branch information
mike-pisman authored Oct 23, 2023
2 parents 578c564 + 6f595ff commit a5100c0
Show file tree
Hide file tree
Showing 4 changed files with 14 additions and 14 deletions.
8 changes: 4 additions & 4 deletions src/unipoll_api/documents.py
Original file line number Diff line number Diff line change
Expand Up @@ -49,9 +49,9 @@ class Resource(Document):
def create_group(self) -> None:
Debug.info(f'New {self.get_document_type()} "{self.id}" has been created')

async def add_policy(self, member: "Group | Member", permissions, save: bool = True) -> "Policy":
new_policy = Policy(policy_holder_type='member',
policy_holder=(await create_link(member)),
async def add_policy(self, policy_holder: "Group | Member", permissions, save: bool = True) -> "Policy":
new_policy = Policy(policy_holder_type=policy_holder.get_document_type(), # type: ignore
policy_holder=(await create_link(policy_holder)),
permissions=permissions,
parent_resource=(await create_link(self))) # type: ignore

Expand Down Expand Up @@ -180,7 +180,7 @@ class Poll(Resource):
class Policy(Document):
id: ResourceID = Field(default_factory=ResourceID, alias="_id")
parent_resource: Link[Workspace] | Link[Group] | Link[Poll]
policy_holder_type: Literal["member", "group"]
policy_holder_type: Literal["Member", "Group"]
policy_holder: Link["Group"] | Link["Member"]
permissions: int

Expand Down
6 changes: 3 additions & 3 deletions src/unipoll_api/exceptions/resource.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from fastapi import status
from unipoll_api.documents import Account, Resource, ResourceID
from unipoll_api.documents import Account, Resource, ResourceID, Member
from unipoll_api.utils import Debug


Expand Down Expand Up @@ -81,6 +81,6 @@ def __init__(self, resource: Resource, user: Account):

# Error while removing member
class ErrorWhileRemovingMember(APIException):
def __init__(self, resource: Resource, user: Account):
def __init__(self, resource: Resource, member: Member):
super().__init__(code=status.HTTP_500_INTERNAL_SERVER_ERROR,
detail=f"Error while removing user {user.email} from {resource.name} #{resource.id}")
detail=f"Error while removing user {member.id} from {resource.name} #{resource.id}")
10 changes: 5 additions & 5 deletions src/unipoll_api/schemas/policy.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,14 @@

class Policy(BaseModel):
id: ResourceID
policy_holder_type: Literal["member", "group"]
policy_holder_type: Literal["Member", "Group"]
policy_holder: Member | Group
permissions: int


class PolicyShort(BaseModel):
id: ResourceID
policy_holder_type: Literal["member", "group"]
policy_holder_type: Literal["Member", "Group"]
policy_holder: Any = None
permissions: Optional[Any] = None

Expand Down Expand Up @@ -101,17 +101,17 @@ class AddPermission(BaseModel):
"example": {
"permissions": [
{
"type": "account",
"type": "Account",
"id": "1a2b3c4d5e6f7g8h9i0j",
"permission": "eff",
},
{
"type": "account",
"type": "Account",
"id": "2a3b4c5d6e7f8g9h0i1j",
"permission": "a3",
},
{
"type": "group",
"type": "Group",
"id": "3a4b5c6d7e8f9g0h1i2j",
"permission": "1",
},
Expand Down
4 changes: 2 additions & 2 deletions src/unipoll_api/utils/permissions.py
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ async def get_all_permissions(resource, member) -> Permissions:
# Get policies for the resource
for policy in resource.policies:
# Get policy for the user
if policy.policy_holder_type == "member":
if policy.policy_holder_type == "Member":
policy_holder_id = None
if hasattr(policy.policy_holder, "id"): # In case the policy_holder is an Account Document
policy_holder_id = policy.policy_holder.id
Expand All @@ -111,7 +111,7 @@ async def get_all_permissions(resource, member) -> Permissions:
permission_sum |= policy.permissions
# print("User permissions: ", policy.permissions)
# If there is a group that user is a member of, add group permissions to the user permissions
elif policy.policy_holder_type == "group":
elif policy.policy_holder_type == "Group":
# Try to fetch the group
group = await policy.policy_holder.fetch()
# BUG: sometimes links are not fetched properly
Expand Down

0 comments on commit a5100c0

Please sign in to comment.