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

add type parameter to access_codes.create #127

Merged
merged 1 commit into from
Nov 7, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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
Loading