pyGuardPoint 2.0.2__tar.gz → 2.0.4__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.
Files changed (66) hide show
  1. {pyguardpoint-2.0.2 → pyguardpoint-2.0.4}/PKG-INFO +1 -1
  2. {pyguardpoint-2.0.2 → pyguardpoint-2.0.4}/pyGuardPoint/_guardpoint_cardholders.py +11 -8
  3. {pyguardpoint-2.0.2 → pyguardpoint-2.0.4}/pyGuardPoint/_guardpoint_customizedfields.py +1 -1
  4. {pyguardpoint-2.0.2 → pyguardpoint-2.0.4}/pyGuardPoint/gp_asyncio/_async_guardpoint_cardholders.py +12 -9
  5. {pyguardpoint-2.0.2 → pyguardpoint-2.0.4}/pyGuardPoint/guardpoint.py +1 -1
  6. {pyguardpoint-2.0.2 → pyguardpoint-2.0.4}/pyGuardPoint/guardpoint_asyncio.py +5 -5
  7. {pyguardpoint-2.0.2 → pyguardpoint-2.0.4}/pyGuardPoint.egg-info/PKG-INFO +1 -1
  8. {pyguardpoint-2.0.2 → pyguardpoint-2.0.4}/setup.py +1 -1
  9. {pyguardpoint-2.0.2 → pyguardpoint-2.0.4}/LICENSE.txt +0 -0
  10. {pyguardpoint-2.0.2 → pyguardpoint-2.0.4}/README.rst +0 -0
  11. {pyguardpoint-2.0.2 → pyguardpoint-2.0.4}/pyGuardPoint/CustomWebsocketTransport.py +0 -0
  12. {pyguardpoint-2.0.2 → pyguardpoint-2.0.4}/pyGuardPoint/CustomWebsocketTransportOld.py +0 -0
  13. {pyguardpoint-2.0.2 → pyguardpoint-2.0.4}/pyGuardPoint/__init__.py +0 -0
  14. {pyguardpoint-2.0.2 → pyguardpoint-2.0.4}/pyGuardPoint/_guardpoint_accessgroups.py +0 -0
  15. {pyguardpoint-2.0.2 → pyguardpoint-2.0.4}/pyGuardPoint/_guardpoint_alarmstates.py +0 -0
  16. {pyguardpoint-2.0.2 → pyguardpoint-2.0.4}/pyGuardPoint/_guardpoint_alarmzones.py +0 -0
  17. {pyguardpoint-2.0.2 → pyguardpoint-2.0.4}/pyGuardPoint/_guardpoint_areas.py +0 -0
  18. {pyguardpoint-2.0.2 → pyguardpoint-2.0.4}/pyGuardPoint/_guardpoint_cardholdertypes.py +0 -0
  19. {pyguardpoint-2.0.2 → pyguardpoint-2.0.4}/pyGuardPoint/_guardpoint_cards.py +0 -0
  20. {pyguardpoint-2.0.2 → pyguardpoint-2.0.4}/pyGuardPoint/_guardpoint_controllers.py +0 -0
  21. {pyguardpoint-2.0.2 → pyguardpoint-2.0.4}/pyGuardPoint/_guardpoint_departments.py +0 -0
  22. {pyguardpoint-2.0.2 → pyguardpoint-2.0.4}/pyGuardPoint/_guardpoint_diagnostic.py +0 -0
  23. {pyguardpoint-2.0.2 → pyguardpoint-2.0.4}/pyGuardPoint/_guardpoint_events.py +0 -0
  24. {pyguardpoint-2.0.2 → pyguardpoint-2.0.4}/pyGuardPoint/_guardpoint_genericinformation.py +0 -0
  25. {pyguardpoint-2.0.2 → pyguardpoint-2.0.4}/pyGuardPoint/_guardpoint_inputs.py +0 -0
  26. {pyguardpoint-2.0.2 → pyguardpoint-2.0.4}/pyGuardPoint/_guardpoint_manualevents.py +0 -0
  27. {pyguardpoint-2.0.2 → pyguardpoint-2.0.4}/pyGuardPoint/_guardpoint_ouputs.py +0 -0
  28. {pyguardpoint-2.0.2 → pyguardpoint-2.0.4}/pyGuardPoint/_guardpoint_personaldetails.py +0 -0
  29. {pyguardpoint-2.0.2 → pyguardpoint-2.0.4}/pyGuardPoint/_guardpoint_readers.py +0 -0
  30. {pyguardpoint-2.0.2 → pyguardpoint-2.0.4}/pyGuardPoint/_guardpoint_scheduledmags.py +0 -0
  31. {pyguardpoint-2.0.2 → pyguardpoint-2.0.4}/pyGuardPoint/_guardpoint_securitygroups.py +0 -0
  32. {pyguardpoint-2.0.2 → pyguardpoint-2.0.4}/pyGuardPoint/_guardpoint_sites.py +0 -0
  33. {pyguardpoint-2.0.2 → pyguardpoint-2.0.4}/pyGuardPoint/_odata_filter.py +0 -0
  34. {pyguardpoint-2.0.2 → pyguardpoint-2.0.4}/pyGuardPoint/_str_match_algo.py +0 -0
  35. {pyguardpoint-2.0.2 → pyguardpoint-2.0.4}/pyGuardPoint/gp_asyncio/__init__.py +0 -0
  36. {pyguardpoint-2.0.2 → pyguardpoint-2.0.4}/pyGuardPoint/gp_asyncio/_async_guardpoint_accessgroups.py +0 -0
  37. {pyguardpoint-2.0.2 → pyguardpoint-2.0.4}/pyGuardPoint/gp_asyncio/_async_guardpoint_alarmstates.py +0 -0
  38. {pyguardpoint-2.0.2 → pyguardpoint-2.0.4}/pyGuardPoint/gp_asyncio/_async_guardpoint_alarmzones.py +0 -0
  39. {pyguardpoint-2.0.2 → pyguardpoint-2.0.4}/pyGuardPoint/gp_asyncio/_async_guardpoint_areas.py +0 -0
  40. {pyguardpoint-2.0.2 → pyguardpoint-2.0.4}/pyGuardPoint/gp_asyncio/_async_guardpoint_cardholdertypes.py +0 -0
  41. {pyguardpoint-2.0.2 → pyguardpoint-2.0.4}/pyGuardPoint/gp_asyncio/_async_guardpoint_cards.py +0 -0
  42. {pyguardpoint-2.0.2 → pyguardpoint-2.0.4}/pyGuardPoint/gp_asyncio/_async_guardpoint_controllers.py +0 -0
  43. {pyguardpoint-2.0.2 → pyguardpoint-2.0.4}/pyGuardPoint/gp_asyncio/_async_guardpoint_customizedfields.py +0 -0
  44. {pyguardpoint-2.0.2 → pyguardpoint-2.0.4}/pyGuardPoint/gp_asyncio/_async_guardpoint_departments.py +0 -0
  45. {pyguardpoint-2.0.2 → pyguardpoint-2.0.4}/pyGuardPoint/gp_asyncio/_async_guardpoint_diagnostic.py +0 -0
  46. {pyguardpoint-2.0.2 → pyguardpoint-2.0.4}/pyGuardPoint/gp_asyncio/_async_guardpoint_events.py +0 -0
  47. {pyguardpoint-2.0.2 → pyguardpoint-2.0.4}/pyGuardPoint/gp_asyncio/_async_guardpoint_genericinformation.py +0 -0
  48. {pyguardpoint-2.0.2 → pyguardpoint-2.0.4}/pyGuardPoint/gp_asyncio/_async_guardpoint_manualevents.py +0 -0
  49. {pyguardpoint-2.0.2 → pyguardpoint-2.0.4}/pyGuardPoint/gp_asyncio/_async_guardpoint_ouputs.py +0 -0
  50. {pyguardpoint-2.0.2 → pyguardpoint-2.0.4}/pyGuardPoint/gp_asyncio/_async_guardpoint_personaldetails.py +0 -0
  51. {pyguardpoint-2.0.2 → pyguardpoint-2.0.4}/pyGuardPoint/gp_asyncio/_async_guardpoint_readers.py +0 -0
  52. {pyguardpoint-2.0.2 → pyguardpoint-2.0.4}/pyGuardPoint/gp_asyncio/_async_guardpoint_scheduledmags.py +0 -0
  53. {pyguardpoint-2.0.2 → pyguardpoint-2.0.4}/pyGuardPoint/gp_asyncio/_async_guardpoint_securitygroups.py +0 -0
  54. {pyguardpoint-2.0.2 → pyguardpoint-2.0.4}/pyGuardPoint/gp_asyncio/_async_guardpoint_sites.py +0 -0
  55. {pyguardpoint-2.0.2 → pyguardpoint-2.0.4}/pyGuardPoint/gp_asyncio/guardpoint_connection_asyncio.py +0 -0
  56. {pyguardpoint-2.0.2 → pyguardpoint-2.0.4}/pyGuardPoint/guardpoint_connection.py +0 -0
  57. {pyguardpoint-2.0.2 → pyguardpoint-2.0.4}/pyGuardPoint/guardpoint_dataclasses.py +0 -0
  58. {pyguardpoint-2.0.2 → pyguardpoint-2.0.4}/pyGuardPoint/guardpoint_error.py +0 -0
  59. {pyguardpoint-2.0.2 → pyguardpoint-2.0.4}/pyGuardPoint/guardpoint_threaded.py +0 -0
  60. {pyguardpoint-2.0.2 → pyguardpoint-2.0.4}/pyGuardPoint/guardpoint_utils.py +0 -0
  61. {pyguardpoint-2.0.2 → pyguardpoint-2.0.4}/pyGuardPoint.egg-info/SOURCES.txt +0 -0
  62. {pyguardpoint-2.0.2 → pyguardpoint-2.0.4}/pyGuardPoint.egg-info/dependency_links.txt +0 -0
  63. {pyguardpoint-2.0.2 → pyguardpoint-2.0.4}/pyGuardPoint.egg-info/not-zip-safe +0 -0
  64. {pyguardpoint-2.0.2 → pyguardpoint-2.0.4}/pyGuardPoint.egg-info/requires.txt +0 -0
  65. {pyguardpoint-2.0.2 → pyguardpoint-2.0.4}/pyGuardPoint.egg-info/top_level.txt +0 -0
  66. {pyguardpoint-2.0.2 → pyguardpoint-2.0.4}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pyGuardPoint
3
- Version: 2.0.2
3
+ Version: 2.0.4
4
4
  Summary: Python wrapper for GuardPoint 10 Access Control System
5
5
  Author: John Owen
6
6
  Maintainer-email: sales@sensoraccess.co.uk
@@ -231,19 +231,22 @@ class CardholdersAPI:
231
231
  if code == 201: # HTTP CREATED
232
232
  new_cardholder = Cardholder(json_body)
233
233
  if cardholder.cardholderPersonalDetail:
234
- self.update_personal_details(cardholder_uid=new_cardholder.uid,
234
+ if len(cardholder.cardholderPersonalDetail.changed_attributes) > 0:
235
+ self.update_personal_details(cardholder_uid=new_cardholder.uid,
235
236
  personal_details=cardholder.cardholderPersonalDetail)
236
237
  if cardholder.cardholderCustomizedField:
237
- self.update_custom_fields(cardholder_uid=new_cardholder.uid,
238
- customFields=cardholder.cardholderCustomizedField)
238
+ if len(cardholder.cardholderCustomizedField.changed_attributes) > 0:
239
+ self.update_custom_fields(cardholder_uid=new_cardholder.uid,
240
+ customFields=cardholder.cardholderCustomizedField)
239
241
  if cardholder.cards:
240
242
  if isinstance(cardholder.cards, list):
241
243
  for card in cardholder.cards:
242
- if validators.uuid(card.uid):
243
- self.update_card(card)
244
- else:
245
- card.cardholderUID = new_cardholder.uid
246
- self.new_card(card)
244
+ if len(card.changed_attributes) > 0:
245
+ if validators.uuid(card.uid):
246
+ self.update_card(card)
247
+ else:
248
+ card.cardholderUID = new_cardholder.uid
249
+ self.new_card(card)
247
250
 
248
251
  return self._get_card_holder(new_cardholder.uid)
249
252
 
@@ -68,7 +68,7 @@ class CustomizedFieldsAPI:
68
68
  if not validators.uuid(cardholder_uid):
69
69
  raise ValueError(f'Malformed Cardholder UID {cardholder_uid}')
70
70
 
71
- url = "/odata/API_CustomizedFields"
71
+ url = "/odata/API_CardholderCustomizedFields"
72
72
  url_query_params = f"({cardholder_uid})"
73
73
 
74
74
  headers = {
@@ -160,19 +160,22 @@ class CardholdersAPI:
160
160
  if code == 201: # HTTP CREATED
161
161
  new_cardholder = Cardholder(json_body)
162
162
  if cardholder.cardholderPersonalDetail:
163
- await self.update_personal_details(cardholder_uid=new_cardholder.uid,
164
- personal_details=cardholder.cardholderPersonalDetail)
163
+ if len(cardholder.cardholderPersonalDetail.changed_attributes) > 0:
164
+ await self.update_personal_details(cardholder_uid=new_cardholder.uid,
165
+ personal_details=cardholder.cardholderPersonalDetail)
165
166
  if cardholder.cardholderCustomizedField:
166
- await self.update_custom_fields(cardholder_uid=new_cardholder.uid,
167
- customFields=cardholder.cardholderCustomizedField)
167
+ if len(cardholder.cardholderCustomizedField.changed_attributes) > 0:
168
+ await self.update_custom_fields(cardholder_uid=new_cardholder.uid,
169
+ customFields=cardholder.cardholderCustomizedField)
168
170
  if cardholder.cards:
169
171
  if isinstance(cardholder.cards, list):
170
172
  for card in cardholder.cards:
171
- if validators.uuid(card.uid):
172
- await self.update_card(card)
173
- else:
174
- card.cardholderUID = new_cardholder.uid
175
- await self.new_card(card)
173
+ if len(card.changed_attributes) > 0:
174
+ if validators.uuid(card.uid):
175
+ await self.update_card(card)
176
+ else:
177
+ card.cardholderUID = new_cardholder.uid
178
+ await self.new_card(card)
176
179
 
177
180
  return await self._get_card_holder(new_cardholder.uid)
178
181
 
@@ -44,7 +44,7 @@ def stop_listening(client: SignalRClient):
44
44
  class GuardPoint(GuardPointConnection, CardsAPI, CardholdersAPI, AreasAPI, SecurityGroupsAPI, CustomizedFieldsAPI,
45
45
  PersonalDetailsAPI, ScheduledMagsAPI, CardholderTypesAPI, OutputsAPI, DiagnosticAPI, ReadersAPI,
46
46
  ControllersAPI, AlarmStatesAPI, EventsAPI, DepartmentsAPI, SitesAPI, AccessGroupsAPI, GenericInfoAPI,
47
- AlarmZonesAPI, InputsAPI, ManualEventsAPI):
47
+ AlarmZonesAPI, InputsAPI, ManualEventsAPI, AccessGroupsAPI):
48
48
  """
49
49
  A class to interface with the GuardPoint system, providing various APIs for managing cards, cardholders, areas,
50
50
  security groups, customized fields, personal details, scheduled mags, cardholder types, outputs, diagnostics,
@@ -1,9 +1,8 @@
1
- import asyncio
1
+
2
2
  import logging
3
3
  import validators
4
- from .guardpoint import GuardPoint
5
- from pysignalr.client import SignalRClient
6
- from .CustomWebsocketTransport import CustomWebsocketTransport
4
+
5
+ from .gp_asyncio._async_guardpoint_accessgroups import AccessGroupsAPI
7
6
  from .gp_asyncio._async_guardpoint_manualevents import ManualEventsAPI
8
7
  from .gp_asyncio._async_guardpoint_alarmzones import AlarmZonesAPI
9
8
  from .gp_asyncio._async_guardpoint_cardholdertypes import CardholderTypesAPI
@@ -34,7 +33,8 @@ log = logging.getLogger(__name__)
34
33
  class GuardPointAsyncIO(GuardPointConnection, CardsAPI, CardholdersAPI, AreasAPI, SecurityGroupsAPI,
35
34
  CustomizedFieldsAPI, PersonalDetailsAPI, ScheduledMagsAPI, CardholderTypesAPI,
36
35
  OutputsAPI, DiagnosticAPI, ReadersAPI, ControllersAPI, AlarmStatesAPI, EventsAPI,
37
- DepartmentsAPI, SitesAPI, GenericInfoAPI, AlarmZonesAPI, ManualEventsAPI):
36
+ DepartmentsAPI, SitesAPI, GenericInfoAPI, AlarmZonesAPI, ManualEventsAPI,
37
+ AccessGroupsAPI):
38
38
  """
39
39
  Asynchronous interface for interacting with the GuardPoint system, providing various APIs for managing cards,
40
40
  cardholders, areas, security groups, customized fields, personal details, scheduled mags, cardholder types,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pyGuardPoint
3
- Version: 2.0.2
3
+ Version: 2.0.4
4
4
  Summary: Python wrapper for GuardPoint 10 Access Control System
5
5
  Author: John Owen
6
6
  Maintainer-email: sales@sensoraccess.co.uk
@@ -5,7 +5,7 @@ long_description = open('README.rst').read()
5
5
  setup(name="pyGuardPoint",
6
6
  python_requires='>3.9.0',
7
7
  packages=find_packages(),
8
- version="2.0.2",
8
+ version="2.0.4",
9
9
  author="John Owen",
10
10
  description="Python wrapper for GuardPoint 10 Access Control System",
11
11
  long_description_content_type='text/markdown',
File without changes
File without changes
File without changes