Skip to content
This repository has been archived by the owner on Jun 28, 2024. It is now read-only.

Commit

Permalink
fix: add type parameter to access_codes.create (#127)
Browse files Browse the repository at this point in the history
  • Loading branch information
seveibar authored Nov 7, 2023
1 parent 1be526b commit 655ffaf
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 58 deletions.
59 changes: 19 additions & 40 deletions seamapi/access_codes.py
Original file line number Diff line number Diff line change
Expand Up @@ -65,9 +65,7 @@ def __init__(self, seam: Seam):
def list(
self,
device: Optional[Union[DeviceId, Device]] = None,
access_codes: Optional[
Union[List[AccessCode], List[AccessCodeId]]
] = None,
access_codes: Optional[Union[List[AccessCode], List[AccessCodeId]]] = None,
) -> List[AccessCode]:
"""Gets a list of access codes for a device.
Expand All @@ -92,9 +90,7 @@ def list(
if device:
params["device_id"] = to_device_id(device)
if access_codes:
params["access_code_ids"] = [
to_access_code_id(ac) for ac in access_codes
]
params["access_code_ids"] = [to_access_code_id(ac) for ac in access_codes]

res = self.seam.make_request(
"GET",
Expand Down Expand Up @@ -150,6 +146,7 @@ def create(
device: Union[DeviceId, Device],
name: Optional[str] = None,
code: Optional[str] = None,
type: Optional[str] = None,
starts_at: Optional[str] = None,
ends_at: Optional[str] = None,
common_code_key: Optional[str] = None,
Expand All @@ -174,6 +171,8 @@ def create(
Access code name
code : str, optional
Access code value
type : str, optional
Access code type eg. ongoing or time_bound
starts_at : str, optional
Time when access code becomes effective
ends_at : str, optional
Expand Down Expand Up @@ -224,48 +223,32 @@ def create(
create_payload["ends_at"] = ends_at
if common_code_key is not None:
create_payload["common_code_key"] = common_code_key
if type is not None:
create_payload["type"] = type
if attempt_for_offline_device is not None:
create_payload[
"attempt_for_offline_device"
] = attempt_for_offline_device
create_payload["attempt_for_offline_device"] = attempt_for_offline_device
if allow_external_modification is not None:
create_payload[
"allow_external_modification"
] = allow_external_modification
create_payload["allow_external_modification"] = allow_external_modification
if prefer_native_scheduling is not None:
create_payload[
"prefer_native_scheduling"
] = prefer_native_scheduling
create_payload["prefer_native_scheduling"] = prefer_native_scheduling
if use_backup_access_code_pool is not None:
create_payload[
"use_backup_access_code_pool"
] = use_backup_access_code_pool
create_payload["use_backup_access_code_pool"] = use_backup_access_code_pool
if use_offline_access_code is not None:
create_payload[
"use_offline_access_code"
] = use_offline_access_code
create_payload["use_offline_access_code"] = use_offline_access_code
if is_offline_access_code is not None:
create_payload[
"is_offline_access_code"
] = is_offline_access_code
create_payload["is_offline_access_code"] = is_offline_access_code
if is_one_time_use is not None:
create_payload[
"is_one_time_use"
] = is_one_time_use
create_payload["is_one_time_use"] = is_one_time_use
if max_time_rounding is not None:
create_payload[
"max_time_rounding"
] = max_time_rounding
create_payload["max_time_rounding"] = max_time_rounding

if (
wait_for_code
and starts_at is not None
and datetime.fromisoformat(starts_at)
> datetime.now() + timedelta(seconds=5)
):
raise RuntimeError(
"Cannot use wait_for_code with a future time bound code"
)
raise RuntimeError("Cannot use wait_for_code with a future time bound code")

res = self.seam.make_request(
"POST",
Expand Down Expand Up @@ -422,9 +405,7 @@ def update(
if type is not None:
update_payload["type"] = type
if allow_external_modification is not None:
update_payload[
"allow_external_modification"
] = allow_external_modification
update_payload["allow_external_modification"] = allow_external_modification

res = self.seam.make_request(
"POST",
Expand Down Expand Up @@ -655,9 +636,7 @@ def convert_to_managed(
}

if allow_external_modification is not None:
payload[
"allow_external_modification"
] = allow_external_modification
payload["allow_external_modification"] = allow_external_modification

res = self.seam.make_request(
"POST",
Expand All @@ -668,5 +647,5 @@ def convert_to_managed(
action_attempt = self.seam.action_attempts.poll_until_ready(
res["action_attempt"]["action_attempt_id"]
)

return action_attempt
25 changes: 7 additions & 18 deletions seamapi/types.py
Original file line number Diff line number Diff line change
Expand Up @@ -53,9 +53,7 @@ def __init__(


class WaitForAccessCodeFailedException(Exception):
def __init__(
self, message: str, access_code_id: str, errors: Optional[list] = []
):
def __init__(self, message: str, access_code_id: str, errors: Optional[list] = []):
self.access_code_id = access_code_id
self.errors = errors
super().__init__(f"Failed while waiting for access code. ${message}")
Expand Down Expand Up @@ -363,9 +361,7 @@ class AbstractAccessCodes(abc.ABC):
def list(
self,
device: Optional[Union[DeviceId, Device]] = None,
access_codes: Optional[
Union[List[AccessCode], List[AccessCodeId]]
] = None,
access_codes: Optional[Union[List[AccessCode], List[AccessCodeId]]] = None,
) -> List[AccessCode]:
raise NotImplementedError

Expand Down Expand Up @@ -394,6 +390,7 @@ def create(
device: Union[DeviceId, Device],
name: Optional[str] = None,
code: Optional[str] = None,
type: Optional[str] = None,
starts_at: Optional[str] = None,
ends_at: Optional[str] = None,
common_code_key: Optional[str] = None,
Expand Down Expand Up @@ -486,9 +483,7 @@ def noise_thresholds(self) -> AbstractNoiseThresholds:
raise NotImplementedError

@abc.abstractmethod
def list_noise_levels(
self, starting_after=None, ending_before=None
) -> None:
def list_noise_levels(self, starting_after=None, ending_before=None) -> None:
raise NotImplementedError


Expand All @@ -505,9 +500,7 @@ def get(
def list(
self,
connected_account: Union[ConnectedAccountId, ConnectedAccount] = None,
connected_accounts: List[
Union[ConnectedAccountId, ConnectedAccount]
] = None,
connected_accounts: List[Union[ConnectedAccountId, ConnectedAccount]] = None,
connect_webview: Union[ConnectWebviewId, ConnectWebview] = None,
device_type: Optional[DeviceType] = None,
device_types: Optional[List[DeviceType]] = None,
Expand All @@ -534,9 +527,7 @@ class AbstractDevices(abc.ABC):
def list(
self,
connected_account: Union[ConnectedAccountId, ConnectedAccount] = None,
connected_accounts: List[
Union[ConnectedAccountId, ConnectedAccount]
] = None,
connected_accounts: List[Union[ConnectedAccountId, ConnectedAccount]] = None,
connect_webview: Union[ConnectWebviewId, ConnectWebview] = None,
device_type: Optional[DeviceType] = None,
device_types: Optional[List[DeviceType]] = None,
Expand Down Expand Up @@ -695,9 +686,7 @@ class AbstractThermostats(abc.ABC):
def list(
self,
connected_account: Union[ConnectedAccountId, ConnectedAccount] = None,
connected_accounts: List[
Union[ConnectedAccountId, ConnectedAccount]
] = None,
connected_accounts: List[Union[ConnectedAccountId, ConnectedAccount]] = None,
connect_webview: Union[ConnectWebviewId, ConnectWebview] = None,
device_type: Optional[DeviceType] = None,
device_types: Optional[List[DeviceType]] = None,
Expand Down

0 comments on commit 655ffaf

Please sign in to comment.