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.

Files changed (37) hide show
  1. {uiprotect-6.6.3 → uiprotect-6.6.5}/PKG-INFO +1 -1
  2. {uiprotect-6.6.3 → uiprotect-6.6.5}/pyproject.toml +1 -1
  3. {uiprotect-6.6.3 → uiprotect-6.6.5}/src/uiprotect/data/devices.py +24 -21
  4. {uiprotect-6.6.3 → uiprotect-6.6.5}/LICENSE +0 -0
  5. {uiprotect-6.6.3 → uiprotect-6.6.5}/README.md +0 -0
  6. {uiprotect-6.6.3 → uiprotect-6.6.5}/src/uiprotect/__init__.py +0 -0
  7. {uiprotect-6.6.3 → uiprotect-6.6.5}/src/uiprotect/__main__.py +0 -0
  8. {uiprotect-6.6.3 → uiprotect-6.6.5}/src/uiprotect/_compat.py +0 -0
  9. {uiprotect-6.6.3 → uiprotect-6.6.5}/src/uiprotect/api.py +0 -0
  10. {uiprotect-6.6.3 → uiprotect-6.6.5}/src/uiprotect/cli/__init__.py +0 -0
  11. {uiprotect-6.6.3 → uiprotect-6.6.5}/src/uiprotect/cli/backup.py +0 -0
  12. {uiprotect-6.6.3 → uiprotect-6.6.5}/src/uiprotect/cli/base.py +0 -0
  13. {uiprotect-6.6.3 → uiprotect-6.6.5}/src/uiprotect/cli/cameras.py +0 -0
  14. {uiprotect-6.6.3 → uiprotect-6.6.5}/src/uiprotect/cli/chimes.py +0 -0
  15. {uiprotect-6.6.3 → uiprotect-6.6.5}/src/uiprotect/cli/doorlocks.py +0 -0
  16. {uiprotect-6.6.3 → uiprotect-6.6.5}/src/uiprotect/cli/events.py +0 -0
  17. {uiprotect-6.6.3 → uiprotect-6.6.5}/src/uiprotect/cli/lights.py +0 -0
  18. {uiprotect-6.6.3 → uiprotect-6.6.5}/src/uiprotect/cli/liveviews.py +0 -0
  19. {uiprotect-6.6.3 → uiprotect-6.6.5}/src/uiprotect/cli/nvr.py +0 -0
  20. {uiprotect-6.6.3 → uiprotect-6.6.5}/src/uiprotect/cli/sensors.py +0 -0
  21. {uiprotect-6.6.3 → uiprotect-6.6.5}/src/uiprotect/cli/viewers.py +0 -0
  22. {uiprotect-6.6.3 → uiprotect-6.6.5}/src/uiprotect/data/__init__.py +0 -0
  23. {uiprotect-6.6.3 → uiprotect-6.6.5}/src/uiprotect/data/base.py +0 -0
  24. {uiprotect-6.6.3 → uiprotect-6.6.5}/src/uiprotect/data/bootstrap.py +0 -0
  25. {uiprotect-6.6.3 → uiprotect-6.6.5}/src/uiprotect/data/convert.py +0 -0
  26. {uiprotect-6.6.3 → uiprotect-6.6.5}/src/uiprotect/data/nvr.py +0 -0
  27. {uiprotect-6.6.3 → uiprotect-6.6.5}/src/uiprotect/data/types.py +0 -0
  28. {uiprotect-6.6.3 → uiprotect-6.6.5}/src/uiprotect/data/user.py +0 -0
  29. {uiprotect-6.6.3 → uiprotect-6.6.5}/src/uiprotect/data/websocket.py +0 -0
  30. {uiprotect-6.6.3 → uiprotect-6.6.5}/src/uiprotect/exceptions.py +0 -0
  31. {uiprotect-6.6.3 → uiprotect-6.6.5}/src/uiprotect/py.typed +0 -0
  32. {uiprotect-6.6.3 → uiprotect-6.6.5}/src/uiprotect/release_cache.json +0 -0
  33. {uiprotect-6.6.3 → uiprotect-6.6.5}/src/uiprotect/stream.py +0 -0
  34. {uiprotect-6.6.3 → uiprotect-6.6.5}/src/uiprotect/test_util/__init__.py +0 -0
  35. {uiprotect-6.6.3 → uiprotect-6.6.5}/src/uiprotect/test_util/anonymize.py +0 -0
  36. {uiprotect-6.6.3 → uiprotect-6.6.5}/src/uiprotect/utils.py +0 -0
  37. {uiprotect-6.6.3 → uiprotect-6.6.5}/src/uiprotect/websocket.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: uiprotect
3
- Version: 6.6.3
3
+ Version: 6.6.5
4
4
  Summary: Python API for Unifi Protect (Unofficial)
5
5
  Home-page: https://github.com/uilibs/uiprotect
6
6
  Author: UI Protect Maintainers
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "uiprotect"
3
- version = "6.6.3"
3
+ version = "6.6.5"
4
4
  description = "Python API for Unifi Protect (Unofficial)"
5
5
  authors = ["UI Protect Maintainers <ui@koston.org>"]
6
6
  readme = "README.md"
@@ -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
- permission = (
2018
- PermissionNode.READ_LIVE if dt is None else PermissionNode.READ_MEDIA
2019
- )
2020
- if not self._api.bootstrap.auth_user.can(
2021
- ModelType.CAMERA,
2022
- permission,
2023
- self,
2024
- ):
2025
- action = "read live" if dt is None else "read media"
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 {action} for camera: {self.id}"
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
- permission = (
2051
- PermissionNode.READ_LIVE if dt is None else PermissionNode.READ_MEDIA
2052
- )
2053
- if not self._api.bootstrap.auth_user.can(
2054
- ModelType.CAMERA,
2055
- permission,
2056
- self,
2057
- ):
2058
- action = "read live" if dt is None else "read media"
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 {action} for camera: {self.id}"
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