uiprotect 6.6.3__tar.gz → 6.6.5__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of uiprotect might be problematic. Click here for more details.
- {uiprotect-6.6.3 → uiprotect-6.6.5}/PKG-INFO +1 -1
- {uiprotect-6.6.3 → uiprotect-6.6.5}/pyproject.toml +1 -1
- {uiprotect-6.6.3 → uiprotect-6.6.5}/src/uiprotect/data/devices.py +24 -21
- {uiprotect-6.6.3 → uiprotect-6.6.5}/LICENSE +0 -0
- {uiprotect-6.6.3 → uiprotect-6.6.5}/README.md +0 -0
- {uiprotect-6.6.3 → uiprotect-6.6.5}/src/uiprotect/__init__.py +0 -0
- {uiprotect-6.6.3 → uiprotect-6.6.5}/src/uiprotect/__main__.py +0 -0
- {uiprotect-6.6.3 → uiprotect-6.6.5}/src/uiprotect/_compat.py +0 -0
- {uiprotect-6.6.3 → uiprotect-6.6.5}/src/uiprotect/api.py +0 -0
- {uiprotect-6.6.3 → uiprotect-6.6.5}/src/uiprotect/cli/__init__.py +0 -0
- {uiprotect-6.6.3 → uiprotect-6.6.5}/src/uiprotect/cli/backup.py +0 -0
- {uiprotect-6.6.3 → uiprotect-6.6.5}/src/uiprotect/cli/base.py +0 -0
- {uiprotect-6.6.3 → uiprotect-6.6.5}/src/uiprotect/cli/cameras.py +0 -0
- {uiprotect-6.6.3 → uiprotect-6.6.5}/src/uiprotect/cli/chimes.py +0 -0
- {uiprotect-6.6.3 → uiprotect-6.6.5}/src/uiprotect/cli/doorlocks.py +0 -0
- {uiprotect-6.6.3 → uiprotect-6.6.5}/src/uiprotect/cli/events.py +0 -0
- {uiprotect-6.6.3 → uiprotect-6.6.5}/src/uiprotect/cli/lights.py +0 -0
- {uiprotect-6.6.3 → uiprotect-6.6.5}/src/uiprotect/cli/liveviews.py +0 -0
- {uiprotect-6.6.3 → uiprotect-6.6.5}/src/uiprotect/cli/nvr.py +0 -0
- {uiprotect-6.6.3 → uiprotect-6.6.5}/src/uiprotect/cli/sensors.py +0 -0
- {uiprotect-6.6.3 → uiprotect-6.6.5}/src/uiprotect/cli/viewers.py +0 -0
- {uiprotect-6.6.3 → uiprotect-6.6.5}/src/uiprotect/data/__init__.py +0 -0
- {uiprotect-6.6.3 → uiprotect-6.6.5}/src/uiprotect/data/base.py +0 -0
- {uiprotect-6.6.3 → uiprotect-6.6.5}/src/uiprotect/data/bootstrap.py +0 -0
- {uiprotect-6.6.3 → uiprotect-6.6.5}/src/uiprotect/data/convert.py +0 -0
- {uiprotect-6.6.3 → uiprotect-6.6.5}/src/uiprotect/data/nvr.py +0 -0
- {uiprotect-6.6.3 → uiprotect-6.6.5}/src/uiprotect/data/types.py +0 -0
- {uiprotect-6.6.3 → uiprotect-6.6.5}/src/uiprotect/data/user.py +0 -0
- {uiprotect-6.6.3 → uiprotect-6.6.5}/src/uiprotect/data/websocket.py +0 -0
- {uiprotect-6.6.3 → uiprotect-6.6.5}/src/uiprotect/exceptions.py +0 -0
- {uiprotect-6.6.3 → uiprotect-6.6.5}/src/uiprotect/py.typed +0 -0
- {uiprotect-6.6.3 → uiprotect-6.6.5}/src/uiprotect/release_cache.json +0 -0
- {uiprotect-6.6.3 → uiprotect-6.6.5}/src/uiprotect/stream.py +0 -0
- {uiprotect-6.6.3 → uiprotect-6.6.5}/src/uiprotect/test_util/__init__.py +0 -0
- {uiprotect-6.6.3 → uiprotect-6.6.5}/src/uiprotect/test_util/anonymize.py +0 -0
- {uiprotect-6.6.3 → uiprotect-6.6.5}/src/uiprotect/utils.py +0 -0
- {uiprotect-6.6.3 → uiprotect-6.6.5}/src/uiprotect/websocket.py +0 -0
|
@@ -974,7 +974,8 @@ class Camera(ProtectMotionDeviceModel):
|
|
|
974
974
|
is_ptz: bool | None = None
|
|
975
975
|
# requires 2.11.13+
|
|
976
976
|
audio_settings: CameraAudioSettings | None = None
|
|
977
|
-
|
|
977
|
+
# requires 5.0.33+
|
|
978
|
+
is_third_party_camera: bool | None = None
|
|
978
979
|
# TODO: used for adopting
|
|
979
980
|
# apMac read only
|
|
980
981
|
# apRssi read only
|
|
@@ -2014,17 +2015,18 @@ class Camera(ProtectMotionDeviceModel):
|
|
|
2014
2015
|
Datetime of screenshot is approximate. It may be +/- a few seconds.
|
|
2015
2016
|
"""
|
|
2016
2017
|
# Use READ_LIVE if dt is None, otherwise READ_MEDIA
|
|
2017
|
-
|
|
2018
|
-
|
|
2019
|
-
|
|
2020
|
-
|
|
2021
|
-
|
|
2022
|
-
|
|
2023
|
-
|
|
2024
|
-
|
|
2025
|
-
|
|
2018
|
+
auth_user = self._api.bootstrap.auth_user
|
|
2019
|
+
if dt is None:
|
|
2020
|
+
if not (
|
|
2021
|
+
auth_user.can(ModelType.CAMERA, PermissionNode.READ_LIVE, self)
|
|
2022
|
+
or auth_user.can(ModelType.CAMERA, PermissionNode.READ_MEDIA, self)
|
|
2023
|
+
):
|
|
2024
|
+
raise NotAuthorized(
|
|
2025
|
+
f"Do not have permission to read live or media for camera: {self.id}"
|
|
2026
|
+
)
|
|
2027
|
+
elif not auth_user.can(ModelType.CAMERA, PermissionNode.READ_MEDIA, self):
|
|
2026
2028
|
raise NotAuthorized(
|
|
2027
|
-
f"Do not have permission to
|
|
2029
|
+
f"Do not have permission to read media for camera: {self.id}"
|
|
2028
2030
|
)
|
|
2029
2031
|
|
|
2030
2032
|
if height is None and width is None and self.high_camera_channel is not None:
|
|
@@ -2046,18 +2048,19 @@ class Camera(ProtectMotionDeviceModel):
|
|
|
2046
2048
|
if not self.feature_flags.has_package_camera:
|
|
2047
2049
|
raise BadRequest("Device does not have package camera")
|
|
2048
2050
|
|
|
2051
|
+
auth_user = self._api.bootstrap.auth_user
|
|
2049
2052
|
# Use READ_LIVE if dt is None, otherwise READ_MEDIA
|
|
2050
|
-
|
|
2051
|
-
|
|
2052
|
-
|
|
2053
|
-
|
|
2054
|
-
|
|
2055
|
-
|
|
2056
|
-
|
|
2057
|
-
|
|
2058
|
-
|
|
2053
|
+
if dt is None:
|
|
2054
|
+
if not (
|
|
2055
|
+
auth_user.can(ModelType.CAMERA, PermissionNode.READ_LIVE, self)
|
|
2056
|
+
or auth_user.can(ModelType.CAMERA, PermissionNode.READ_MEDIA, self)
|
|
2057
|
+
):
|
|
2058
|
+
raise NotAuthorized(
|
|
2059
|
+
f"Do not have permission to read live or media for camera: {self.id}"
|
|
2060
|
+
)
|
|
2061
|
+
elif not auth_user.can(ModelType.CAMERA, PermissionNode.READ_MEDIA, self):
|
|
2059
2062
|
raise NotAuthorized(
|
|
2060
|
-
f"Do not have permission to
|
|
2063
|
+
f"Do not have permission to read media for camera: {self.id}"
|
|
2061
2064
|
)
|
|
2062
2065
|
|
|
2063
2066
|
if height is None and width is None and self.package_camera_channel is not None:
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|