Skip to content

Commit

Permalink
feat(python-sdk): add condition support to client
Browse files Browse the repository at this point in the history
  • Loading branch information
booniepepper committed Jan 6, 2024
1 parent 19eb501 commit 14ef33d
Show file tree
Hide file tree
Showing 5 changed files with 60 additions and 7 deletions.
2 changes: 2 additions & 0 deletions config/clients/python/template/client/client.mustache
Original file line number Diff line number Diff line change
Expand Up @@ -510,6 +510,7 @@ class OpenFgaClient():
relation=body.relation,
object=body.object,
),
context=body.context,
authorization_model_id=self._get_authorization_model_id(options),
)
if body.contextual_tuples:
Expand Down Expand Up @@ -620,6 +621,7 @@ class OpenFgaClient():
user=body.user,
relation=body.relation,
type=body.type,
context=body.context,
)
if body.contextual_tuples:
req_body.contextual_tuples = ContextualTupleKeys(
Expand Down
2 changes: 2 additions & 0 deletions config/clients/python/template/client/client_sync.mustache
Original file line number Diff line number Diff line change
Expand Up @@ -490,6 +490,7 @@ class OpenFgaClient():
relation=body.relation,
object=body.object,
),
context=body.context,
authorization_model_id=self._get_authorization_model_id(options),
)
if body.contextual_tuples:
Expand Down Expand Up @@ -590,6 +591,7 @@ class OpenFgaClient():
user=body.user,
relation=body.relation,
type=body.type,
context=body.context,
)
if body.contextual_tuples:
req_body.contextual_tuples = ContextualTupleKeys(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,23 +3,26 @@

from {{packageName}}.client.models.tuple import ClientTuple

from typing import List
from typing import List, Any

def construct_check_request(user: str, relation: str, object: str, contextual_tuples: List[ClientTuple]=None):

def construct_check_request(user: str, relation: str, object: str, context: Any = None, contextual_tuples: List[ClientTuple]=None):
"""
helper function to construct the check request body
"""
return ClientCheckRequest(user, relation, object, contextual_tuples)
return ClientCheckRequest(user, relation, object, context, contextual_tuples)


class ClientCheckRequest():
"""
ClientCheckRequest encapsulates the parameters for check request
"""

def __init__(self, user: str, relation: str, object: str, contextual_tuples: List[ClientTuple]=None):
def __init__(self, user: str, relation: str, object: str, context: Any = None, contextual_tuples: List[ClientTuple]=None):
self._user = user
self._relation = relation
self._object = object
self._context = context
self._contextual_tuples = None
if contextual_tuples:
self._contextual_tuples = contextual_tuples
Expand All @@ -45,6 +48,13 @@ class ClientCheckRequest():
"""
return self._object

@property
def context(self):
"""
Return context
"""
return self._context

@property
def contextual_tuples(self):
"""
Expand Down Expand Up @@ -73,6 +83,13 @@ class ClientCheckRequest():
"""
self._object = value

@context.setter
def context(self, value):
"""
Set context
"""
self._context = value

@contextual_tuples.setter
def contextual_tuples(self, value):
"""
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,17 +3,18 @@

from {{packageName}}.client.models.tuple import ClientTuple

from typing import List
from typing import List, Any

class ClientListObjectsRequest():
"""
ClientListObjectsRequest encapsulates the parameters required for list objects
"""

def __init__(self, user: str, relation: str, type: str, contextual_tuples: List[ClientTuple]=None):
def __init__(self, user: str, relation: str, type: str, context: Any = None, contextual_tuples: List[ClientTuple]=None):
self._user = user
self._relation = relation
self._type = type
self._context = context
self._contextual_tuples = contextual_tuples

@property
Expand All @@ -37,6 +38,13 @@ class ClientListObjectsRequest():
"""
return self._type

@property
def context(self):
"""
Return context
"""
return self._context

@property
def contextual_tuples(self):
"""
Expand Down Expand Up @@ -65,6 +73,13 @@ class ClientListObjectsRequest():
"""
self._type = value

@context.setter
def context(self, value):
"""
Set context
"""
self._context = value

@contextual_tuples.setter
def contextual_tuples(self, value):
"""
Expand Down
19 changes: 18 additions & 1 deletion config/clients/python/template/client/models/tuple.mustache
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
# coding: utf-8
{{>partial_header}}

from {{packageName}}.models.relationship_condition import RelationshipCondition
from {{packageName}}.models.tuple_key import TupleKey

from typing import List
Expand All @@ -10,10 +11,11 @@ class ClientTuple():
ClientTuple encapsulates the client tuple
"""

def __init__(self, user: str, relation: str, object: str):
def __init__(self, user: str, relation: str, object: str, condition: RelationshipCondition = None):
self._user = user
self._relation = relation
self._object = object
self._condition = condition

def __eq__(self, other):
return self.user == other.user and self.relation == other.relation and self.object == other.object
Expand All @@ -39,6 +41,13 @@ class ClientTuple():
"""
return self._object

@property
def condition(self):
"""
Return condition
"""
return self._condition

@user.setter
def user(self, value):
"""
Expand All @@ -60,6 +69,13 @@ class ClientTuple():
"""
self._object = value

@condition.setter
def condition(self, value):
"""
Set condition
"""
self._condition = value

@property
def tuple_key(self):
"""
Expand All @@ -69,6 +85,7 @@ class ClientTuple():
object=self.object,
relation=self.relation,
user=self.user,
condition=self.condition
)


Expand Down

0 comments on commit 14ef33d

Please sign in to comment.