Skip to content

Commit fdd65eb

Browse files
committed
Journal permissions handler and check journal is public
1 parent 0971792 commit fdd65eb

File tree

4 files changed

+64
-1
lines changed

4 files changed

+64
-1
lines changed

bugout/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
__email__ = "engineering@bugout.dev"
99
__license__ = "MIT"
10-
__version__ = "0.1.11"
10+
__version__ = "0.1.12"
1111

1212
__all__ = (
1313
"__author__",

bugout/app.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -300,6 +300,18 @@ def list_scopes(
300300
self.journal.timeout = timeout
301301
return self.journal.list_scopes(token=token, api=api)
302302

303+
def get_journal_permissions(
304+
self,
305+
token: Union[str, uuid.UUID],
306+
journal_id: Union[str, uuid.UUID],
307+
holder_ids: Optional[List[Union[str, uuid.UUID]]] = None,
308+
timeout: float = REQUESTS_TIMEOUT,
309+
) -> data.BugoutJournalPermissions:
310+
self.journal.timeout = timeout
311+
return self.journal.get_journal_permissions(
312+
token=token, journal_id=journal_id, holder_ids=holder_ids
313+
)
314+
303315
def get_journal_scopes(
304316
self,
305317
token: Union[str, uuid.UUID],
@@ -579,6 +591,15 @@ def search(
579591
token, journal_id, query, filters, limit, offset, content
580592
)
581593

594+
# Public
595+
def check_journal_public(
596+
self,
597+
journal_id: Union[str, uuid.UUID],
598+
timeout: float = REQUESTS_TIMEOUT,
599+
) -> bool:
600+
self.journal.timeout = timeout
601+
return self.journal.check_journal_public(journal_id=journal_id)
602+
582603
# Humbug
583604
def get_humbug_integrations(
584605
self,

bugout/data.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,17 @@ class BugoutGroupMembers(BaseModel):
9797
users: List[BugoutUserShort]
9898

9999

100+
class BugoutJournalPermission(BaseModel):
101+
holder_type: HolderType
102+
holder_id: str
103+
permissions: List[str] = Field(default_factory=list)
104+
105+
106+
class BugoutJournalPermissions(BaseModel):
107+
journal_id: uuid.UUID
108+
permissions: List[BugoutJournalPermission] = Field(default_factory=list)
109+
110+
100111
class BugoutScope(BaseModel):
101112
api: str
102113
scope: str

bugout/journal.py

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
from .data import (
66
BugoutJournal,
77
BugoutJournals,
8+
BugoutJournalPermissions,
89
BugoutScopes,
910
BugoutJournalScopeSpecs,
1011
BugoutJournalEntry,
@@ -52,6 +53,29 @@ def list_scopes(self, token: Union[str, uuid.UUID], api: str) -> BugoutScopes:
5253
)
5354
return BugoutScopes(**result)
5455

56+
def get_journal_permissions(
57+
self,
58+
token: Union[str, uuid.UUID],
59+
journal_id: Union[str, uuid.UUID],
60+
holder_ids: Optional[List[Union[str, uuid.UUID]]] = None,
61+
) -> BugoutJournalPermissions:
62+
journal_scopes_path = f"journals/{journal_id}/permissions"
63+
headers = {
64+
"Authorization": f"Bearer {token}",
65+
}
66+
query_params = {}
67+
if holder_ids is not None:
68+
holder_ids_string = [str(holder_id) for holder_id in holder_ids]
69+
holder_ids_param = ",".join(holder_ids_string)
70+
query_params = {"holder_ids": holder_ids_param}
71+
result = self._call(
72+
method=Method.get,
73+
path=journal_scopes_path,
74+
params=query_params,
75+
headers=headers,
76+
)
77+
return BugoutJournalPermissions(**result)
78+
5579
def get_journal_scopes(
5680
self, token: Union[str, uuid.UUID], journal_id: Union[str, uuid.UUID]
5781
) -> BugoutJournalScopeSpecs:
@@ -401,3 +425,10 @@ def search(
401425
method=Method.get, path=search_path, params=query_params, headers=headers
402426
)
403427
return BugoutSearchResults(**result)
428+
429+
# Public module
430+
def check_journal_public(self, journal_id: Union[str, uuid.UUID]) -> bool:
431+
journal_path = "public/check"
432+
query_params = {"journal_id": journal_id}
433+
result = self._call(method=Method.get, path=journal_path, params=query_params)
434+
return result

0 commit comments

Comments
 (0)