python-terminusgps 40.1.3__tar.gz → 41.0.0__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 (324) hide show
  1. {python_terminusgps-40.1.3 → python_terminusgps-41.0.0}/.gitignore +2 -2
  2. {python_terminusgps-40.1.3 → python_terminusgps-41.0.0}/PKG-INFO +1 -3
  3. {python_terminusgps-40.1.3 → python_terminusgps-41.0.0}/docs/source/conf.py +1 -1
  4. {python_terminusgps-40.1.3 → python_terminusgps-41.0.0}/pyproject.toml +1 -4
  5. {python_terminusgps-40.1.3 → python_terminusgps-41.0.0}/terminusgps/authorizenet/profiles/customers.py +2 -3
  6. python_terminusgps-41.0.0/terminusgps/wialon/constants.py +364 -0
  7. {python_terminusgps-40.1.3 → python_terminusgps-41.0.0}/terminusgps/wialon/items/__init__.py +1 -0
  8. python_terminusgps-41.0.0/terminusgps/wialon/items/account.py +208 -0
  9. python_terminusgps-41.0.0/terminusgps/wialon/items/base.py +247 -0
  10. python_terminusgps-41.0.0/terminusgps/wialon/items/resource.py +104 -0
  11. python_terminusgps-41.0.0/terminusgps/wialon/items/retranslator.py +49 -0
  12. python_terminusgps-41.0.0/terminusgps/wialon/items/route.py +32 -0
  13. python_terminusgps-41.0.0/terminusgps/wialon/items/unit.py +134 -0
  14. python_terminusgps-41.0.0/terminusgps/wialon/items/unit_group.py +51 -0
  15. python_terminusgps-41.0.0/terminusgps/wialon/items/user.py +127 -0
  16. {python_terminusgps-40.1.3 → python_terminusgps-41.0.0}/terminusgps/wialon/utils.py +47 -127
  17. {python_terminusgps-40.1.3 → python_terminusgps-41.0.0}/uv.lock +4 -179
  18. python_terminusgps-40.1.3/docs/build/coverage/c.txt +0 -4
  19. python_terminusgps-40.1.3/docs/build/coverage/python.txt +0 -58
  20. python_terminusgps-40.1.3/docs/build/coverage/undoc.pickle +0 -0
  21. python_terminusgps-40.1.3/docs/build/doctrees/authorizenet/auth.doctree +0 -0
  22. python_terminusgps-40.1.3/docs/build/doctrees/authorizenet/constants.doctree +0 -0
  23. python_terminusgps-40.1.3/docs/build/doctrees/authorizenet/controllers.doctree +0 -0
  24. python_terminusgps-40.1.3/docs/build/doctrees/authorizenet/examples.doctree +0 -0
  25. python_terminusgps-40.1.3/docs/build/doctrees/authorizenet/index.doctree +0 -0
  26. python_terminusgps-40.1.3/docs/build/doctrees/authorizenet/profiles.doctree +0 -0
  27. python_terminusgps-40.1.3/docs/build/doctrees/authorizenet/subscriptions.doctree +0 -0
  28. python_terminusgps-40.1.3/docs/build/doctrees/authorizenet/utils.doctree +0 -0
  29. python_terminusgps-40.1.3/docs/build/doctrees/authorizenet/validators.doctree +0 -0
  30. python_terminusgps-40.1.3/docs/build/doctrees/aws/index.doctree +0 -0
  31. python_terminusgps-40.1.3/docs/build/doctrees/aws/notifications.doctree +0 -0
  32. python_terminusgps-40.1.3/docs/build/doctrees/aws/secrets.doctree +0 -0
  33. python_terminusgps-40.1.3/docs/build/doctrees/aws/speech.doctree +0 -0
  34. python_terminusgps-40.1.3/docs/build/doctrees/aws/utils.doctree +0 -0
  35. python_terminusgps-40.1.3/docs/build/doctrees/django/forms.doctree +0 -0
  36. python_terminusgps-40.1.3/docs/build/doctrees/django/index.doctree +0 -0
  37. python_terminusgps-40.1.3/docs/build/doctrees/django/mixins.doctree +0 -0
  38. python_terminusgps-40.1.3/docs/build/doctrees/django/settings.doctree +0 -0
  39. python_terminusgps-40.1.3/docs/build/doctrees/django/validators.doctree +0 -0
  40. python_terminusgps-40.1.3/docs/build/doctrees/environment.pickle +0 -0
  41. python_terminusgps-40.1.3/docs/build/doctrees/index.doctree +0 -0
  42. python_terminusgps-40.1.3/docs/build/doctrees/mixins.doctree +0 -0
  43. python_terminusgps-40.1.3/docs/build/doctrees/settings.doctree +0 -0
  44. python_terminusgps-40.1.3/docs/build/doctrees/twilio/caller.doctree +0 -0
  45. python_terminusgps-40.1.3/docs/build/doctrees/twilio/examples.doctree +0 -0
  46. python_terminusgps-40.1.3/docs/build/doctrees/twilio/index.doctree +0 -0
  47. python_terminusgps-40.1.3/docs/build/doctrees/twilio/settings.doctree +0 -0
  48. python_terminusgps-40.1.3/docs/build/doctrees/validators.doctree +0 -0
  49. python_terminusgps-40.1.3/docs/build/doctrees/wialon/constants.doctree +0 -0
  50. python_terminusgps-40.1.3/docs/build/doctrees/wialon/errors.doctree +0 -0
  51. python_terminusgps-40.1.3/docs/build/doctrees/wialon/examples.doctree +0 -0
  52. python_terminusgps-40.1.3/docs/build/doctrees/wialon/flags.doctree +0 -0
  53. python_terminusgps-40.1.3/docs/build/doctrees/wialon/index.doctree +0 -0
  54. python_terminusgps-40.1.3/docs/build/doctrees/wialon/items.doctree +0 -0
  55. python_terminusgps-40.1.3/docs/build/doctrees/wialon/session.doctree +0 -0
  56. python_terminusgps-40.1.3/docs/build/doctrees/wialon/settings.doctree +0 -0
  57. python_terminusgps-40.1.3/docs/build/doctrees/wialon/utils.doctree +0 -0
  58. python_terminusgps-40.1.3/docs/build/html/_modules/index.html +0 -218
  59. python_terminusgps-40.1.3/docs/build/html/_modules/terminusgps/authorizenet/auth.html +0 -256
  60. python_terminusgps-40.1.3/docs/build/html/_modules/terminusgps/authorizenet/constants.html +0 -216
  61. python_terminusgps-40.1.3/docs/build/html/_modules/terminusgps/authorizenet/controllers.html +0 -292
  62. python_terminusgps-40.1.3/docs/build/html/_modules/terminusgps/authorizenet/errors.html +0 -227
  63. python_terminusgps-40.1.3/docs/build/html/_modules/terminusgps/authorizenet/profiles/addresses.html +0 -324
  64. python_terminusgps-40.1.3/docs/build/html/_modules/terminusgps/authorizenet/profiles/base.html +0 -346
  65. python_terminusgps-40.1.3/docs/build/html/_modules/terminusgps/authorizenet/profiles/customers.html +0 -318
  66. python_terminusgps-40.1.3/docs/build/html/_modules/terminusgps/authorizenet/profiles/payments.html +0 -356
  67. python_terminusgps-40.1.3/docs/build/html/_modules/terminusgps/authorizenet/profiles/subscriptions.html +0 -520
  68. python_terminusgps-40.1.3/docs/build/html/_modules/terminusgps/authorizenet/subscriptions/subscriptions.html +0 -410
  69. python_terminusgps-40.1.3/docs/build/html/_modules/terminusgps/authorizenet/subscriptions.html +0 -306
  70. python_terminusgps-40.1.3/docs/build/html/_modules/terminusgps/authorizenet/utils.html +0 -384
  71. python_terminusgps-40.1.3/docs/build/html/_modules/terminusgps/authorizenet/validators.html +0 -316
  72. python_terminusgps-40.1.3/docs/build/html/_modules/terminusgps/aws/notifications.html +0 -524
  73. python_terminusgps-40.1.3/docs/build/html/_modules/terminusgps/aws/secrets.html +0 -236
  74. python_terminusgps-40.1.3/docs/build/html/_modules/terminusgps/aws/speech.html +0 -361
  75. python_terminusgps-40.1.3/docs/build/html/_modules/terminusgps/django/forms/fields.html +0 -274
  76. python_terminusgps-40.1.3/docs/build/html/_modules/terminusgps/django/forms/renderer.html +0 -217
  77. python_terminusgps-40.1.3/docs/build/html/_modules/terminusgps/django/forms/widgets.html +0 -273
  78. python_terminusgps-40.1.3/docs/build/html/_modules/terminusgps/django/forms.html +0 -354
  79. python_terminusgps-40.1.3/docs/build/html/_modules/terminusgps/django/mixins.html +0 -233
  80. python_terminusgps-40.1.3/docs/build/html/_modules/terminusgps/django/validators.html +0 -296
  81. python_terminusgps-40.1.3/docs/build/html/_modules/terminusgps/mixins.html +0 -232
  82. python_terminusgps-40.1.3/docs/build/html/_modules/terminusgps/twilio/caller.html +0 -363
  83. python_terminusgps-40.1.3/docs/build/html/_modules/terminusgps/wialon/constants.html +0 -462
  84. python_terminusgps-40.1.3/docs/build/html/_modules/terminusgps/wialon/flags.html +0 -547
  85. python_terminusgps-40.1.3/docs/build/html/_modules/terminusgps/wialon/items/base.html +0 -603
  86. python_terminusgps-40.1.3/docs/build/html/_modules/terminusgps/wialon/items/geofence.html +0 -176
  87. python_terminusgps-40.1.3/docs/build/html/_modules/terminusgps/wialon/items/notification.html +0 -111
  88. python_terminusgps-40.1.3/docs/build/html/_modules/terminusgps/wialon/items/resource.html +0 -834
  89. python_terminusgps-40.1.3/docs/build/html/_modules/terminusgps/wialon/items/retranslator.html +0 -344
  90. python_terminusgps-40.1.3/docs/build/html/_modules/terminusgps/wialon/items/route.html +0 -246
  91. python_terminusgps-40.1.3/docs/build/html/_modules/terminusgps/wialon/items/unit.html +0 -586
  92. python_terminusgps-40.1.3/docs/build/html/_modules/terminusgps/wialon/items/unit_group.html +0 -346
  93. python_terminusgps-40.1.3/docs/build/html/_modules/terminusgps/wialon/items/user.html +0 -371
  94. python_terminusgps-40.1.3/docs/build/html/_modules/terminusgps/wialon/session.html +0 -400
  95. python_terminusgps-40.1.3/docs/build/html/_modules/terminusgps/wialon/utils.html +0 -587
  96. python_terminusgps-40.1.3/docs/build/html/_modules/wialon/api.html +0 -341
  97. python_terminusgps-40.1.3/docs/build/html/_sources/authorizenet/auth.rst.txt +0 -7
  98. python_terminusgps-40.1.3/docs/build/html/_sources/authorizenet/constants.rst.txt +0 -7
  99. python_terminusgps-40.1.3/docs/build/html/_sources/authorizenet/controllers.rst.txt +0 -7
  100. python_terminusgps-40.1.3/docs/build/html/_sources/authorizenet/examples.rst.txt +0 -165
  101. python_terminusgps-40.1.3/docs/build/html/_sources/authorizenet/index.rst.txt +0 -16
  102. python_terminusgps-40.1.3/docs/build/html/_sources/authorizenet/profiles.rst.txt +0 -23
  103. python_terminusgps-40.1.3/docs/build/html/_sources/authorizenet/subscriptions.rst.txt +0 -5
  104. python_terminusgps-40.1.3/docs/build/html/_sources/authorizenet/utils.rst.txt +0 -5
  105. python_terminusgps-40.1.3/docs/build/html/_sources/authorizenet/validators.rst.txt +0 -31
  106. python_terminusgps-40.1.3/docs/build/html/_sources/aws/index.rst.txt +0 -10
  107. python_terminusgps-40.1.3/docs/build/html/_sources/aws/notifications.rst.txt +0 -47
  108. python_terminusgps-40.1.3/docs/build/html/_sources/aws/secrets.rst.txt +0 -20
  109. python_terminusgps-40.1.3/docs/build/html/_sources/aws/speech.rst.txt +0 -25
  110. python_terminusgps-40.1.3/docs/build/html/_sources/aws/utils.rst.txt +0 -19
  111. python_terminusgps-40.1.3/docs/build/html/_sources/django/forms.rst.txt +0 -65
  112. python_terminusgps-40.1.3/docs/build/html/_sources/django/index.rst.txt +0 -13
  113. python_terminusgps-40.1.3/docs/build/html/_sources/django/mixins.rst.txt +0 -32
  114. python_terminusgps-40.1.3/docs/build/html/_sources/django/settings.rst.txt +0 -61
  115. python_terminusgps-40.1.3/docs/build/html/_sources/django/validators.rst.txt +0 -6
  116. python_terminusgps-40.1.3/docs/build/html/_sources/index.rst.txt +0 -38
  117. python_terminusgps-40.1.3/docs/build/html/_sources/mixins.rst.txt +0 -0
  118. python_terminusgps-40.1.3/docs/build/html/_sources/settings.rst.txt +0 -59
  119. python_terminusgps-40.1.3/docs/build/html/_sources/twilio/caller.rst.txt +0 -9
  120. python_terminusgps-40.1.3/docs/build/html/_sources/twilio/examples.rst.txt +0 -74
  121. python_terminusgps-40.1.3/docs/build/html/_sources/twilio/index.rst.txt +0 -11
  122. python_terminusgps-40.1.3/docs/build/html/_sources/twilio/settings.rst.txt +0 -3
  123. python_terminusgps-40.1.3/docs/build/html/_sources/validators.rst.txt +0 -4
  124. python_terminusgps-40.1.3/docs/build/html/_sources/wialon/constants.rst.txt +0 -20
  125. python_terminusgps-40.1.3/docs/build/html/_sources/wialon/errors.rst.txt +0 -10
  126. python_terminusgps-40.1.3/docs/build/html/_sources/wialon/examples.rst.txt +0 -339
  127. python_terminusgps-40.1.3/docs/build/html/_sources/wialon/flags.rst.txt +0 -16
  128. python_terminusgps-40.1.3/docs/build/html/_sources/wialon/index.rst.txt +0 -30
  129. python_terminusgps-40.1.3/docs/build/html/_sources/wialon/items.rst.txt +0 -37
  130. python_terminusgps-40.1.3/docs/build/html/_sources/wialon/session.rst.txt +0 -36
  131. python_terminusgps-40.1.3/docs/build/html/_sources/wialon/settings.rst.txt +0 -59
  132. python_terminusgps-40.1.3/docs/build/html/_sources/wialon/utils.rst.txt +0 -28
  133. python_terminusgps-40.1.3/docs/build/html/_static/0fc70aa4dfe4d16d7073.woff +0 -0
  134. python_terminusgps-40.1.3/docs/build/html/_static/583e3f428bf2362b546d.woff +0 -0
  135. python_terminusgps-40.1.3/docs/build/html/_static/5be6ec379613f10aea3f.woff +0 -0
  136. python_terminusgps-40.1.3/docs/build/html/_static/76c1862325ea6f70eeff.woff2 +0 -0
  137. python_terminusgps-40.1.3/docs/build/html/_static/83710c128240451d95af.woff +0 -0
  138. python_terminusgps-40.1.3/docs/build/html/_static/_sphinx_javascript_frameworks_compat.js +0 -123
  139. python_terminusgps-40.1.3/docs/build/html/_static/a63d39a1c104a2b3e87e.woff2 +0 -0
  140. python_terminusgps-40.1.3/docs/build/html/_static/autoclasstoc.css +0 -12
  141. python_terminusgps-40.1.3/docs/build/html/_static/awesome-docsearch.css +0 -1
  142. python_terminusgps-40.1.3/docs/build/html/_static/awesome-docsearch.js +0 -0
  143. python_terminusgps-40.1.3/docs/build/html/_static/awesome-sphinx-design.css +0 -1
  144. python_terminusgps-40.1.3/docs/build/html/_static/awesome-sphinx-design.js +0 -0
  145. python_terminusgps-40.1.3/docs/build/html/_static/b659956119f91f2342bc.woff2 +0 -0
  146. python_terminusgps-40.1.3/docs/build/html/_static/basic.css +0 -906
  147. python_terminusgps-40.1.3/docs/build/html/_static/bb50084be2b43ba7b98c.woff2 +0 -0
  148. python_terminusgps-40.1.3/docs/build/html/_static/ce1e40901d7a0d88d483.woff2 +0 -0
  149. python_terminusgps-40.1.3/docs/build/html/_static/css/badge_only.css +0 -1
  150. python_terminusgps-40.1.3/docs/build/html/_static/css/custom.css +0 -2
  151. python_terminusgps-40.1.3/docs/build/html/_static/css/custom.css.map +0 -1
  152. python_terminusgps-40.1.3/docs/build/html/_static/css/fonts/Roboto-Slab-Bold.woff +0 -0
  153. python_terminusgps-40.1.3/docs/build/html/_static/css/fonts/Roboto-Slab-Bold.woff2 +0 -0
  154. python_terminusgps-40.1.3/docs/build/html/_static/css/fonts/Roboto-Slab-Regular.woff +0 -0
  155. python_terminusgps-40.1.3/docs/build/html/_static/css/fonts/Roboto-Slab-Regular.woff2 +0 -0
  156. python_terminusgps-40.1.3/docs/build/html/_static/css/fonts/fontawesome-webfont.eot +0 -0
  157. python_terminusgps-40.1.3/docs/build/html/_static/css/fonts/fontawesome-webfont.svg +0 -2671
  158. python_terminusgps-40.1.3/docs/build/html/_static/css/fonts/fontawesome-webfont.ttf +0 -0
  159. python_terminusgps-40.1.3/docs/build/html/_static/css/fonts/fontawesome-webfont.woff +0 -0
  160. python_terminusgps-40.1.3/docs/build/html/_static/css/fonts/fontawesome-webfont.woff2 +0 -0
  161. python_terminusgps-40.1.3/docs/build/html/_static/css/fonts/lato-bold-italic.woff +0 -0
  162. python_terminusgps-40.1.3/docs/build/html/_static/css/fonts/lato-bold-italic.woff2 +0 -0
  163. python_terminusgps-40.1.3/docs/build/html/_static/css/fonts/lato-bold.woff +0 -0
  164. python_terminusgps-40.1.3/docs/build/html/_static/css/fonts/lato-bold.woff2 +0 -0
  165. python_terminusgps-40.1.3/docs/build/html/_static/css/fonts/lato-normal-italic.woff +0 -0
  166. python_terminusgps-40.1.3/docs/build/html/_static/css/fonts/lato-normal-italic.woff2 +0 -0
  167. python_terminusgps-40.1.3/docs/build/html/_static/css/fonts/lato-normal.woff +0 -0
  168. python_terminusgps-40.1.3/docs/build/html/_static/css/fonts/lato-normal.woff2 +0 -0
  169. python_terminusgps-40.1.3/docs/build/html/_static/css/theme.css +0 -2751
  170. python_terminusgps-40.1.3/docs/build/html/_static/css/theme.css.map +0 -1
  171. python_terminusgps-40.1.3/docs/build/html/_static/css/theme.min.css +0 -2
  172. python_terminusgps-40.1.3/docs/build/html/_static/css/theme.min.css.map +0 -1
  173. python_terminusgps-40.1.3/docs/build/html/_static/d04352f240062b100fba.woff2 +0 -0
  174. python_terminusgps-40.1.3/docs/build/html/_static/doctools.js +0 -149
  175. python_terminusgps-40.1.3/docs/build/html/_static/documentation_options.js +0 -13
  176. python_terminusgps-40.1.3/docs/build/html/_static/f1cdf5c21de970ee0592.woff +0 -0
  177. python_terminusgps-40.1.3/docs/build/html/_static/fd994e8d90d9cab651b0.woff +0 -0
  178. python_terminusgps-40.1.3/docs/build/html/_static/file.png +0 -0
  179. python_terminusgps-40.1.3/docs/build/html/_static/font/fontello.eot +0 -0
  180. python_terminusgps-40.1.3/docs/build/html/_static/font/fontello.svg +0 -32
  181. python_terminusgps-40.1.3/docs/build/html/_static/font/fontello.ttf +0 -0
  182. python_terminusgps-40.1.3/docs/build/html/_static/font/fontello.woff +0 -0
  183. python_terminusgps-40.1.3/docs/build/html/_static/font/fontello.woff2 +0 -0
  184. python_terminusgps-40.1.3/docs/build/html/_static/fonts/Lato/lato-bold.eot +0 -0
  185. python_terminusgps-40.1.3/docs/build/html/_static/fonts/Lato/lato-bold.ttf +0 -0
  186. python_terminusgps-40.1.3/docs/build/html/_static/fonts/Lato/lato-bold.woff +0 -0
  187. python_terminusgps-40.1.3/docs/build/html/_static/fonts/Lato/lato-bold.woff2 +0 -0
  188. python_terminusgps-40.1.3/docs/build/html/_static/fonts/Lato/lato-bolditalic.eot +0 -0
  189. python_terminusgps-40.1.3/docs/build/html/_static/fonts/Lato/lato-bolditalic.ttf +0 -0
  190. python_terminusgps-40.1.3/docs/build/html/_static/fonts/Lato/lato-bolditalic.woff +0 -0
  191. python_terminusgps-40.1.3/docs/build/html/_static/fonts/Lato/lato-bolditalic.woff2 +0 -0
  192. python_terminusgps-40.1.3/docs/build/html/_static/fonts/Lato/lato-italic.eot +0 -0
  193. python_terminusgps-40.1.3/docs/build/html/_static/fonts/Lato/lato-italic.ttf +0 -0
  194. python_terminusgps-40.1.3/docs/build/html/_static/fonts/Lato/lato-italic.woff +0 -0
  195. python_terminusgps-40.1.3/docs/build/html/_static/fonts/Lato/lato-italic.woff2 +0 -0
  196. python_terminusgps-40.1.3/docs/build/html/_static/fonts/Lato/lato-regular.eot +0 -0
  197. python_terminusgps-40.1.3/docs/build/html/_static/fonts/Lato/lato-regular.ttf +0 -0
  198. python_terminusgps-40.1.3/docs/build/html/_static/fonts/Lato/lato-regular.woff +0 -0
  199. python_terminusgps-40.1.3/docs/build/html/_static/fonts/Lato/lato-regular.woff2 +0 -0
  200. python_terminusgps-40.1.3/docs/build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.eot +0 -0
  201. python_terminusgps-40.1.3/docs/build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.ttf +0 -0
  202. python_terminusgps-40.1.3/docs/build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff +0 -0
  203. python_terminusgps-40.1.3/docs/build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff2 +0 -0
  204. python_terminusgps-40.1.3/docs/build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.eot +0 -0
  205. python_terminusgps-40.1.3/docs/build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.ttf +0 -0
  206. python_terminusgps-40.1.3/docs/build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff +0 -0
  207. python_terminusgps-40.1.3/docs/build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff2 +0 -0
  208. python_terminusgps-40.1.3/docs/build/html/_static/jquery.js +0 -2
  209. python_terminusgps-40.1.3/docs/build/html/_static/js/badge_only.js +0 -1
  210. python_terminusgps-40.1.3/docs/build/html/_static/js/theme.js +0 -68
  211. python_terminusgps-40.1.3/docs/build/html/_static/js/versions.js +0 -228
  212. python_terminusgps-40.1.3/docs/build/html/_static/language_data.js +0 -192
  213. python_terminusgps-40.1.3/docs/build/html/_static/minus.png +0 -0
  214. python_terminusgps-40.1.3/docs/build/html/_static/plus.png +0 -0
  215. python_terminusgps-40.1.3/docs/build/html/_static/pygments.css +0 -150
  216. python_terminusgps-40.1.3/docs/build/html/_static/searchtools.js +0 -635
  217. python_terminusgps-40.1.3/docs/build/html/_static/sphinx_highlight.js +0 -154
  218. python_terminusgps-40.1.3/docs/build/html/_static/theme.css +0 -9
  219. python_terminusgps-40.1.3/docs/build/html/_static/theme.js +0 -2
  220. python_terminusgps-40.1.3/docs/build/html/_static/theme.js.LICENSE.txt +0 -6
  221. python_terminusgps-40.1.3/docs/build/html/authorizenet/auth.html +0 -191
  222. python_terminusgps-40.1.3/docs/build/html/authorizenet/constants.html +0 -192
  223. python_terminusgps-40.1.3/docs/build/html/authorizenet/controllers.html +0 -182
  224. python_terminusgps-40.1.3/docs/build/html/authorizenet/examples.html +0 -303
  225. python_terminusgps-40.1.3/docs/build/html/authorizenet/index.html +0 -194
  226. python_terminusgps-40.1.3/docs/build/html/authorizenet/profiles.html +0 -442
  227. python_terminusgps-40.1.3/docs/build/html/authorizenet/subscriptions.html +0 -239
  228. python_terminusgps-40.1.3/docs/build/html/authorizenet/utils.html +0 -303
  229. python_terminusgps-40.1.3/docs/build/html/authorizenet/validators.html +0 -245
  230. python_terminusgps-40.1.3/docs/build/html/aws/index.html +0 -162
  231. python_terminusgps-40.1.3/docs/build/html/aws/notifications.html +0 -193
  232. python_terminusgps-40.1.3/docs/build/html/aws/secrets.html +0 -189
  233. python_terminusgps-40.1.3/docs/build/html/aws/speech.html +0 -285
  234. python_terminusgps-40.1.3/docs/build/html/aws/utils.html +0 -171
  235. python_terminusgps-40.1.3/docs/build/html/django/forms.html +0 -272
  236. python_terminusgps-40.1.3/docs/build/html/django/index.html +0 -176
  237. python_terminusgps-40.1.3/docs/build/html/django/mixins.html +0 -244
  238. python_terminusgps-40.1.3/docs/build/html/django/settings.html +0 -255
  239. python_terminusgps-40.1.3/docs/build/html/django/validators.html +0 -154
  240. python_terminusgps-40.1.3/docs/build/html/genindex.html +0 -1340
  241. python_terminusgps-40.1.3/docs/build/html/index.html +0 -183
  242. python_terminusgps-40.1.3/docs/build/html/mixins.html +0 -139
  243. python_terminusgps-40.1.3/docs/build/html/objects.inv +0 -0
  244. python_terminusgps-40.1.3/docs/build/html/py-modindex.html +0 -234
  245. python_terminusgps-40.1.3/docs/build/html/search.html +0 -199
  246. python_terminusgps-40.1.3/docs/build/html/searchindex.js +0 -1
  247. python_terminusgps-40.1.3/docs/build/html/settings.html +0 -249
  248. python_terminusgps-40.1.3/docs/build/html/twilio/caller.html +0 -304
  249. python_terminusgps-40.1.3/docs/build/html/twilio/examples.html +0 -226
  250. python_terminusgps-40.1.3/docs/build/html/twilio/index.html +0 -167
  251. python_terminusgps-40.1.3/docs/build/html/twilio/settings.html +0 -137
  252. python_terminusgps-40.1.3/docs/build/html/validators.html +0 -142
  253. python_terminusgps-40.1.3/docs/build/html/wialon/constants.html +0 -598
  254. python_terminusgps-40.1.3/docs/build/html/wialon/errors.html +0 -155
  255. python_terminusgps-40.1.3/docs/build/html/wialon/examples.html +0 -473
  256. python_terminusgps-40.1.3/docs/build/html/wialon/flags.html +0 -1084
  257. python_terminusgps-40.1.3/docs/build/html/wialon/index.html +0 -212
  258. python_terminusgps-40.1.3/docs/build/html/wialon/items.html +0 -2421
  259. python_terminusgps-40.1.3/docs/build/html/wialon/session.html +0 -359
  260. python_terminusgps-40.1.3/docs/build/html/wialon/settings.html +0 -248
  261. python_terminusgps-40.1.3/docs/build/html/wialon/utils.html +0 -417
  262. python_terminusgps-40.1.3/docs/build/linkcheck/output.json +0 -41
  263. python_terminusgps-40.1.3/docs/build/linkcheck/output.txt +0 -0
  264. python_terminusgps-40.1.3/terminusgps/wialon/constants.py +0 -246
  265. python_terminusgps-40.1.3/terminusgps/wialon/items/base.py +0 -369
  266. python_terminusgps-40.1.3/terminusgps/wialon/items/resource.py +0 -567
  267. python_terminusgps-40.1.3/terminusgps/wialon/items/retranslator.py +0 -119
  268. python_terminusgps-40.1.3/terminusgps/wialon/items/route.py +0 -36
  269. python_terminusgps-40.1.3/terminusgps/wialon/items/unit.py +0 -355
  270. python_terminusgps-40.1.3/terminusgps/wialon/items/unit_group.py +0 -124
  271. python_terminusgps-40.1.3/terminusgps/wialon/items/user.py +0 -146
  272. python_terminusgps-40.1.3/terminusgps/wialon/renderer.py +0 -188
  273. {python_terminusgps-40.1.3 → python_terminusgps-41.0.0}/COPYING +0 -0
  274. {python_terminusgps-40.1.3 → python_terminusgps-41.0.0}/README.md +0 -0
  275. {python_terminusgps-40.1.3 → python_terminusgps-41.0.0}/docs/Makefile +0 -0
  276. {python_terminusgps-40.1.3 → python_terminusgps-41.0.0}/docs/make.bat +0 -0
  277. {python_terminusgps-40.1.3 → python_terminusgps-41.0.0}/docs/source/authorizenet/auth.rst +0 -0
  278. {python_terminusgps-40.1.3 → python_terminusgps-41.0.0}/docs/source/authorizenet/constants.rst +0 -0
  279. {python_terminusgps-40.1.3 → python_terminusgps-41.0.0}/docs/source/authorizenet/controllers.rst +0 -0
  280. {python_terminusgps-40.1.3 → python_terminusgps-41.0.0}/docs/source/authorizenet/examples.rst +0 -0
  281. {python_terminusgps-40.1.3 → python_terminusgps-41.0.0}/docs/source/authorizenet/index.rst +0 -0
  282. {python_terminusgps-40.1.3 → python_terminusgps-41.0.0}/docs/source/authorizenet/profiles.rst +0 -0
  283. {python_terminusgps-40.1.3 → python_terminusgps-41.0.0}/docs/source/authorizenet/subscriptions.rst +0 -0
  284. {python_terminusgps-40.1.3 → python_terminusgps-41.0.0}/docs/source/authorizenet/utils.rst +0 -0
  285. {python_terminusgps-40.1.3 → python_terminusgps-41.0.0}/docs/source/authorizenet/validators.rst +0 -0
  286. {python_terminusgps-40.1.3 → python_terminusgps-41.0.0}/docs/source/django/forms.rst +0 -0
  287. {python_terminusgps-40.1.3 → python_terminusgps-41.0.0}/docs/source/django/index.rst +0 -0
  288. {python_terminusgps-40.1.3 → python_terminusgps-41.0.0}/docs/source/django/mixins.rst +0 -0
  289. {python_terminusgps-40.1.3 → python_terminusgps-41.0.0}/docs/source/django/settings.rst +0 -0
  290. {python_terminusgps-40.1.3 → python_terminusgps-41.0.0}/docs/source/django/validators.rst +0 -0
  291. {python_terminusgps-40.1.3 → python_terminusgps-41.0.0}/docs/source/index.rst +0 -0
  292. {python_terminusgps-40.1.3 → python_terminusgps-41.0.0}/docs/source/wialon/constants.rst +0 -0
  293. {python_terminusgps-40.1.3 → python_terminusgps-41.0.0}/docs/source/wialon/errors.rst +0 -0
  294. {python_terminusgps-40.1.3 → python_terminusgps-41.0.0}/docs/source/wialon/examples.rst +0 -0
  295. {python_terminusgps-40.1.3 → python_terminusgps-41.0.0}/docs/source/wialon/flags.rst +0 -0
  296. {python_terminusgps-40.1.3 → python_terminusgps-41.0.0}/docs/source/wialon/index.rst +0 -0
  297. {python_terminusgps-40.1.3 → python_terminusgps-41.0.0}/docs/source/wialon/items.rst +0 -0
  298. {python_terminusgps-40.1.3 → python_terminusgps-41.0.0}/docs/source/wialon/session.rst +0 -0
  299. {python_terminusgps-40.1.3 → python_terminusgps-41.0.0}/docs/source/wialon/utils.rst +0 -0
  300. {python_terminusgps-40.1.3 → python_terminusgps-41.0.0}/terminusgps/__init__.py +0 -0
  301. {python_terminusgps-40.1.3 → python_terminusgps-41.0.0}/terminusgps/authorizenet/__init__.py +0 -0
  302. {python_terminusgps-40.1.3 → python_terminusgps-41.0.0}/terminusgps/authorizenet/auth.py +0 -0
  303. {python_terminusgps-40.1.3 → python_terminusgps-41.0.0}/terminusgps/authorizenet/constants.py +0 -0
  304. {python_terminusgps-40.1.3 → python_terminusgps-41.0.0}/terminusgps/authorizenet/controllers.py +0 -0
  305. {python_terminusgps-40.1.3 → python_terminusgps-41.0.0}/terminusgps/authorizenet/profiles/__init__.py +0 -0
  306. {python_terminusgps-40.1.3 → python_terminusgps-41.0.0}/terminusgps/authorizenet/profiles/addresses.py +0 -0
  307. {python_terminusgps-40.1.3 → python_terminusgps-41.0.0}/terminusgps/authorizenet/profiles/payments.py +0 -0
  308. {python_terminusgps-40.1.3 → python_terminusgps-41.0.0}/terminusgps/authorizenet/subscriptions.py +0 -0
  309. {python_terminusgps-40.1.3 → python_terminusgps-41.0.0}/terminusgps/authorizenet/utils.py +0 -0
  310. {python_terminusgps-40.1.3 → python_terminusgps-41.0.0}/terminusgps/authorizenet/validators.py +0 -0
  311. {python_terminusgps-40.1.3 → python_terminusgps-41.0.0}/terminusgps/django/__init__.py +0 -0
  312. {python_terminusgps-40.1.3 → python_terminusgps-41.0.0}/terminusgps/django/forms/__init__.py +0 -0
  313. {python_terminusgps-40.1.3 → python_terminusgps-41.0.0}/terminusgps/django/forms/fields.py +0 -0
  314. {python_terminusgps-40.1.3 → python_terminusgps-41.0.0}/terminusgps/django/forms/forms.py +0 -0
  315. {python_terminusgps-40.1.3 → python_terminusgps-41.0.0}/terminusgps/django/forms/renderer.py +0 -0
  316. {python_terminusgps-40.1.3 → python_terminusgps-41.0.0}/terminusgps/django/forms/widgets.py +0 -0
  317. {python_terminusgps-40.1.3 → python_terminusgps-41.0.0}/terminusgps/django/mixins.py +0 -0
  318. {python_terminusgps-40.1.3 → python_terminusgps-41.0.0}/terminusgps/django/settings.py +0 -0
  319. {python_terminusgps-40.1.3 → python_terminusgps-41.0.0}/terminusgps/django/utils.py +0 -0
  320. {python_terminusgps-40.1.3 → python_terminusgps-41.0.0}/terminusgps/django/validators.py +0 -0
  321. {python_terminusgps-40.1.3 → python_terminusgps-41.0.0}/terminusgps/wialon/__init__.py +0 -0
  322. {python_terminusgps-40.1.3 → python_terminusgps-41.0.0}/terminusgps/wialon/flags.py +0 -0
  323. {python_terminusgps-40.1.3 → python_terminusgps-41.0.0}/terminusgps/wialon/session.py +0 -0
  324. {python_terminusgps-40.1.3 → python_terminusgps-41.0.0}/terminusgps/wialon/validators.py +0 -0
@@ -1,7 +1,5 @@
1
1
  .*
2
2
  !.gitignore
3
- !.readthedocs.yaml
4
- logs/
5
3
 
6
4
  # Python-generated files
7
5
  __pycache__/
@@ -12,3 +10,5 @@ wheels/
12
10
 
13
11
  # Virtual environments
14
12
  .venv
13
+ venv
14
+ docs/build/
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: python-terminusgps
3
- Version: 40.1.3
3
+ Version: 41.0.0
4
4
  Summary: Provides abstractions/utilities for working with Wialon API, Authorize.NET API, AWS API, and more.
5
5
  Project-URL: Documentation, https://docs.terminusgps.com
6
6
  Project-URL: Repository, https://github.com/terminusgps/python-terminusgps
@@ -11,10 +11,8 @@ Classifier: Operating System :: OS Independent
11
11
  Classifier: Programming Language :: Python :: 3
12
12
  Classifier: Programming Language :: Python :: 3.12
13
13
  Requires-Python: >=3.12
14
- Requires-Dist: argparse>=1.4.0
15
14
  Requires-Dist: authorizenet>=1.1.5
16
15
  Requires-Dist: django>=5.1.5
17
- Requires-Dist: pandas>=2.2.3
18
16
  Requires-Dist: python-wialon>=1.2.4
19
17
  Description-Content-Type: text/markdown
20
18
 
@@ -18,7 +18,7 @@ django.setup()
18
18
  project = "python-terminusgps"
19
19
  copyright = "2025, Terminus GPS, LLC"
20
20
  author = "Terminus GPS, LLC"
21
- release = "40.1.1"
21
+ release = "40.1.4"
22
22
 
23
23
  # -- General configuration ---------------------------------------------------
24
24
  # https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "python-terminusgps"
3
- version = "40.1.3"
3
+ version = "41.0.0"
4
4
  description = "Provides abstractions/utilities for working with Wialon API, Authorize.NET API, AWS API, and more."
5
5
  readme = "README.md"
6
6
  authors = [ {name = "Blake Nall", email = "blake@terminusgps.com" } ]
@@ -12,10 +12,8 @@ classifiers = [
12
12
  ]
13
13
  requires-python = ">=3.12"
14
14
  dependencies = [
15
- "argparse>=1.4.0",
16
15
  "authorizenet>=1.1.5",
17
16
  "django>=5.1.5",
18
- "pandas>=2.2.3",
19
17
  "python-wialon>=1.2.4",
20
18
  ]
21
19
 
@@ -76,5 +74,4 @@ dev = [
76
74
  "django-stubs>=5.1.3",
77
75
  "sphinx>=8.1.3",
78
76
  "sphinxawesome-theme>=5.3.2",
79
- "types-aiobotocore>=2.21.1",
80
77
  ]
@@ -1,6 +1,6 @@
1
1
  from authorizenet import apicontractsv1, apicontrollers
2
2
 
3
- from terminusgps.authorizenet.auth import get_merchant_auth, get_validation_mode
3
+ from terminusgps.authorizenet.auth import get_merchant_auth
4
4
  from terminusgps.authorizenet.controllers import execute_controller
5
5
 
6
6
  __all__ = [
@@ -29,9 +29,8 @@ def create_customer_profile(merchant_id: int | str, email: str, description: str
29
29
  request = apicontractsv1.createCustomerProfileRequest(
30
30
  merchantAuthentication=get_merchant_auth(),
31
31
  profile=apicontractsv1.customerProfileType(
32
- merchantCustomerId=merchant_id, description=description, email=email
32
+ merchantCustomerId=str(merchant_id), description=description, email=email
33
33
  ),
34
- validationMode=get_validation_mode(),
35
34
  )
36
35
  return execute_controller(apicontrollers.createCustomerProfileController(request))
37
36
 
@@ -0,0 +1,364 @@
1
+ import enum
2
+
3
+ from . import flags
4
+
5
+
6
+ class WialonLogAction(enum.StrEnum):
7
+ """Wialon `log actions <https://wialon-help.link/28412fdb>`_."""
8
+
9
+ CUSTOM_MSG = "custom_msg"
10
+ """Manual record: '%s'."""
11
+ CREATE_UNIT = "create_unit"
12
+ """Unit '%s' created."""
13
+ UPDATE_NAME = "update_name"
14
+ """Name changed from '%s' to '%s'."""
15
+ UPDATE_ACCESS = "update_access"
16
+ """Access to %d '%s' changed."""
17
+ UPDATE_UNIT_ICON = "update_unit_icon"
18
+ """Unit icon changed."""
19
+ UPDATE_UNIT_PASS = "update_unit_pass"
20
+ """Access password changed."""
21
+ UPDATE_UNIT_PHONE = "update_unit_phone"
22
+ """Phone number changed from '%s' to '%s'."""
23
+ UPDATE_UNIT_PHONE2 = "update_unit_phone2"
24
+ """Second phone number changed from '%s' to '%s'."""
25
+ UPDATE_UNIT_CALCFLAGS = "update_unit_calcflags"
26
+ """Calculation flags changed."""
27
+ UPDATE_UNIT_DRAT = "update_unit_drat"
28
+ """Driver activity source changed."""
29
+ UPDATE_UNIT_MILCOUNTER = "update_unit_milcounter"
30
+ """Mileage counter changed from %d %s to %d %s."""
31
+ UPDATE_UNIT_BYTECOUNTER = "update_unit_bytecounter"
32
+ """GPRS traffic counter changed from %d KB to %d KB."""
33
+ UPDATE_UNIT_EHCOUNTER = "update_unit_ehcounter"
34
+ """Engine hours counter changed from %.2f h to %.2f h."""
35
+ UPDATE_UNIT_UID = "update_unit_uid"
36
+ """Unique ID changed from '%s' to '%s'."""
37
+ UPDATE_UNIT_UID2 = "update_unit_uid2"
38
+ """Second unique ID changed from '%s' to '%s'."""
39
+ UPDATE_UNIT_HW = "update_unit_hw"
40
+ """Device type changed from '%s' to '%s'."""
41
+ UPDATE_UNIT_HW_CFG = "update_unit_hw_cfg"
42
+ """Device configuration changed."""
43
+ UPDATE_UNIT_FUEL_CFG = "udpate_unit_fuel_cfg"
44
+ """Fuel consumption settings changed."""
45
+ CREATE_SENSOR = "create_sensor"
46
+ """Sensor '%s' created."""
47
+ UPDATE_SENSOR = "update_sensor"
48
+ """Sensor '%s' modified."""
49
+ DELETE_SENSOR = "delete_sensor"
50
+ """Sensor '%s' deleted."""
51
+ CREATE_ALIAS = "create_alias"
52
+ """Command '%s' created."""
53
+ UPDATE_ALIAS = "update_alias"
54
+ """Command '%s' modified."""
55
+ DELETE_ALIAS = "delete_alias"
56
+ """Command '%s' deleted."""
57
+ CREATE_SERVICE_INTERVAL = "create_service_interval"
58
+ """Service interval '%s' created."""
59
+ UPDATE_SERVICE_INTERVAL = "update_service_interval"
60
+ """Service interval '%s' modified."""
61
+ DELETE_SERVICE_INTERVAL = "delete_service_interval"
62
+ """Service interval '%s' deleted."""
63
+ CREATE_CUSTOM_FIELD = "create_custom_field"
64
+ """Custom field '%s' created."""
65
+ UPDATE_CUSTOM_FIELD = "update_custom_field"
66
+ """Custom field '%s' modified."""
67
+ DELETE_CUSTOM_FIELD = "delete_custom_field"
68
+ """Custom field '%s' deleted."""
69
+ CREATE_ADMIN_FIELD = "create_admin_field"
70
+ """Admin field '%s' created."""
71
+ UPDATE_ADMIN_FIELD = "update_admin_field"
72
+ """Admin field '%s' modified."""
73
+ DELETE_ADMIN_FIELD = "delete_admin_field"
74
+ """Admin field '%s' deleted."""
75
+ UPDATE_PROFILE_FIELD = "update_profile_field"
76
+ """Profile field '%s' modified."""
77
+ DELETE_PROFILE_FIELD = "delete_profile_field"
78
+ """Profile field '%s' deleted."""
79
+ IMPORT_ITEM_CFG = "import_item_cfg"
80
+ """Properties imported."""
81
+ IMPORT_UNIT_CFG = "import_unit_cfg"
82
+ """Properties imported."""
83
+ EXPORT_UNIT_MSGS = "export_unit_msgs"
84
+ """Messages exported."""
85
+ IMPORT_UNIT_MSGS = "import_unit_msgs"
86
+ """Messages imported."""
87
+ DELETE_UNIT_MSG = "delete_unit_msg"
88
+ """Deleted %d message dated %s."""
89
+ DELETE_UNIT_MSGS = "delete_unit_msgs"
90
+ """Deleted %s %d messages."""
91
+ BIND_UNIT_DRIVER = "bind_unit_driver"
92
+ """Driver '%s' was assigned at '%s'."""
93
+ UNBIND_UNIT_DRIVER = "unbind_unit_driver"
94
+ """Driver '%s' was separated at '%s'."""
95
+ BIND_UNIT_TAG = "bind_unit_tag"
96
+ """Passenger '%s' was assigned at '%s'."""
97
+ UNBIND_UNIT_TAG = "unbind_unit_tag"
98
+ """Passenger '%s' was separated at '%s'."""
99
+ BIND_UNIT_TRAILER = "bind_unit_trailer"
100
+ """Trailer '%s' was assigned at '%s'."""
101
+ UNBIND_UNIT_TRAILER = "unbind_unit_trailer"
102
+ """Trailer '%s' was separated at '%s'."""
103
+ UPDATE_UNIT_REPORT_CFG = "update_unit_report_cfg"
104
+ """Unit report settings changed."""
105
+ UPDATE_MSGS_FILTER_CFG = "update_msgs_filter_cfg"
106
+ """Message filtration settings changed."""
107
+ DELETE_ITEM = "delete_item"
108
+ """Item '%s' deleted."""
109
+ CREATE_USER = "create_user"
110
+ """User '%s' created."""
111
+ UPDATE_HOSTS_MASK = "update_hosts_mask"
112
+ """Host mask changed to '%s'."""
113
+ UPDATE_USER_PASS = "update_user_pass"
114
+ """User password changed."""
115
+ UPDATE_USER_FLAGS = "update_user_flags"
116
+ """User flags changed."""
117
+ UPDATE_USER_LOCALE = "update_user_locale"
118
+ """First day of week changed."""
119
+ CREATE_USER_NOTIFY = "create_user_notify"
120
+ """Notice to the user: '%s'."""
121
+ DELETE_USER_NOTIFY = "delete_user_notify"
122
+ """User notification '%s' deleted."""
123
+ CREATE_GROUP = "create_group"
124
+ """Unit group '%s' created."""
125
+ UNITS_GROUP = "units_group"
126
+ """
127
+ Unit added to the group '%s'.
128
+ Unit removed from the group '%s'.
129
+ Units in group updated.
130
+ """
131
+ UPDATE_DRIVER_UNITS = "update_driver_units"
132
+ """
133
+ Unit attached to the resource of drivers '%s'.
134
+ Unit removed from the resource of drivers '%s'.
135
+ Automatic assignment list of drivers updated.
136
+ """
137
+ UPDATE_TRAILER_UNITS = "update_trailer_units"
138
+ """
139
+ Unit attached to the resource of trailers '%s'.
140
+ Unit removed from the resource of trailers '%s'.
141
+ Automatic assignment list of trailers updated.
142
+ """
143
+ CREATE_RESOURCE = "create_resource"
144
+ """Resource '%s' created."""
145
+ CREATE_ZONE = "create_zone"
146
+ """Geofence '%s' created."""
147
+ UPDATE_ZONE = "update_zone"
148
+ """Geofence '%s' updated."""
149
+ DELETE_ZONE = "delete_zone"
150
+ """Geofence '%s' deleted."""
151
+ UPDATE_TRACK_COLOR_SETTING = "update_track_color_setting"
152
+ """
153
+ Track colour settings changed to "By trips".
154
+ Track colour settings changed to "Single".
155
+ Track colour settings changed to "By speed".
156
+ Track colour settings changed to "By sensor".
157
+ """
158
+ CREATE_JOB = "create_job"
159
+ """Job '%s' created."""
160
+ SWITCH_JOB = "switch_job"
161
+ """Job '%s switched on/off."""
162
+ UPDATE_JOB = "update_job"
163
+ """Job '%s' updated."""
164
+ DELETE_JOB = "delete_job"
165
+ """Job '%s' deleted."""
166
+ CREATE_NOTIFY = "create_notify"
167
+ """Notification '%s' created."""
168
+ SWITCH_NOTIFY = "switch_notify"
169
+ """Notification '%s' switched on/off."""
170
+ UPDATE_NOTIFY = "update_notify"
171
+ """Notification '%s' updated."""
172
+ DELETE_NOTIFY = "delete_notify"
173
+ """Notification '%s' deleted."""
174
+ CREATE_DRIVER = "create_driver"
175
+ """Driver '%s' created."""
176
+ UPDATE_DRIVER = "update_driver"
177
+ """Driver '%s' updated."""
178
+ DELETE_DRIVER = "delete_driver"
179
+ """Driver '%s' deleted."""
180
+ CREATE_TRAILER = "create_trailer"
181
+ """Trailer '%s' created."""
182
+ UPDATE_TRAILER = "update_trailer"
183
+ """Trailer '%s' updated."""
184
+ DELETE_TRAILER = "delete_trailer"
185
+ """Trailer '%s' deleted."""
186
+ CREATE_DRIVERS_GROUP = "create_drivers_group"
187
+ """Group of drivers '%s' created."""
188
+ UPDATE_DRIVERS_GROUP = "update_drivers_group"
189
+ """Group of drivers '%s' updated."""
190
+ DELETE_DRIVERS_GROUP = "delete_drivers_group"
191
+ """Group of drivers '%s' deleted."""
192
+ CREATE_TRAILERS_GROUP = "create_trailers_group"
193
+ """Group of trailers '%s' created."""
194
+ UPDATE_TRAILERS_GROUP = "update_trailers_group"
195
+ """Group of trailers '%s' updated."""
196
+ DELETE_TRAILERS_GROUP = "delete_trailers_group"
197
+ """Group of trailers '%s' deleted."""
198
+ CREATE_REPORT = "create_report"
199
+ """Report template '%s' created."""
200
+ UPDATE_REPORT = "update_report"
201
+ """Report template '%s' updated."""
202
+ DELETE_REPORT = "delete_report"
203
+ """Report template '%s' deleted."""
204
+ IMPORT_ZONES = "import_zones"
205
+ """Geofences imported."""
206
+ CREATE_RETRANSLATOR = "create_retranslator"
207
+ """Retranslator '%s' created."""
208
+ UPDATE_RETRANSLATOR = "update_retranslator"
209
+ """Properties updated."""
210
+ UNITS_RETRANSLATOR = "units_retranslator"
211
+ """Units updated."""
212
+ SWITCH_RETRANSLATOR = "switch_retranslator"
213
+ """Started/stopped."""
214
+ MSGS_HISTORY_RETRANSLATOR = "msgs_history_retranslator"
215
+ """Past period retranslator started/stopped."""
216
+ CREATE_ROUTE = "create_route"
217
+ """Route '%s' created."""
218
+ UPDATE_ROUTE_POINTS = "update_route_points"
219
+ """Check points updated."""
220
+ UPDATE_ROUTE_CFG = "update_route_cfg"
221
+ """Properties updated."""
222
+ CREATE_ROUND = "create_round"
223
+ """Ride '%s' created."""
224
+ UPDATE_ROUND = "update_round"
225
+ """Ride '%s' updated."""
226
+ DELETE_ROUND = "delete_round"
227
+ """Ride '%s' deleted."""
228
+ CREATE_SCHEDULE = "create_schedule"
229
+ """Schedule '%s' created."""
230
+ UPDATE_SCHEDULE = "update_schedule"
231
+ """Schedule '%s' updated."""
232
+ DELETE_SCHEDULE = "delete_schedule"
233
+ """Schedule '%s' deleted."""
234
+ CREATE_ACCOUNT = "create_account"
235
+ """Account '%s' created."""
236
+ DELETE_ACCOUNT = "delete_account"
237
+ """Account '%s' deleted."""
238
+ CHANGE_ACCOUNT = "change_account"
239
+ """Account changed from '%s' to '%s'."""
240
+ SWITCH_ACCOUNT = "switch_account"
241
+ """Account blocked/unblocked."""
242
+ UPDATE_DEALER_RIGHTS = "update_dealer_rights"
243
+ """Dealer rights enabled/disabled."""
244
+ DO_PAYMENT = "do_payment"
245
+ """Payment or days registered."""
246
+ UPDATE_ACCOUNT_FLAGS = "update_account_flags"
247
+ """Account flags changed."""
248
+ UPDATE_ACCOUNT_BLOCK_BALANCE = "update_account_block_balance"
249
+ """Balance to block account changed."""
250
+ UPDATE_ACCOUNT_DENY_BALANCE = "update_account_deny_balance"
251
+ """Balance to limit activity changed."""
252
+ UPDATE_ACCOUNT_MIN_DAYS = "update_account_min_days"
253
+ """Minimum days counter changed."""
254
+ UPDATE_ACCOUNT_PLAN = "update_account_plan"
255
+ """Billing plan changed to '%s'."""
256
+ UPDATE_ACCOUNT_HISTORY_PERIOD = "update_account_history_period"
257
+ """History period changed to '%s'."""
258
+ UPDATE_ACCOUNT_SUBPLANS = "update_account_subplans"
259
+ """List of subplans changed."""
260
+ UPDATE_SERVICE = "update_service"
261
+ """Service '%s' updated."""
262
+ DELETE_DRIVER_MSG = "delete_driver_msg"
263
+ """Message dated %s from driver '%s' deleted."""
264
+ DELETE_TRAILER_MSG = "delete_trailer_msg"
265
+ """Message dated %s from trailer '%s' deleted."""
266
+ CONVERT_MEASURE_UNITS = "convert_measure_units"
267
+ """
268
+ Measurement system changed to %s.
269
+ Conversion to the %s.
270
+ """
271
+ DELETE_ZONES_GROUP = "delete_zones_group"
272
+ """Group of geofences deleted."""
273
+ CREATE_ZONES_GROUP = "create_zones_group"
274
+ """Group of geofences '%s' created."""
275
+ UPDATE_ZONES_GROUP = "update_zones_group"
276
+ """Group of geofences '%s' updated."""
277
+ TRAILER_RESET_IMAGE = "trailer_reset_image"
278
+ """Trailer '%s' updated."""
279
+ DRIVER_RESET_IMAGE = "driver_reset_image"
280
+ """Driver '%s' updated."""
281
+ ZONE_RESET_IMAGE = "zone_reset_image"
282
+ """Geofence '%s' updated."""
283
+ CREATE_ORDER = "create_order"
284
+ """Order '%s' created."""
285
+ UPDATE_ORDER = "update_order"
286
+ """Order '%s' updated."""
287
+ DELETE_ORDER = "delete_order"
288
+ """Order '%s' deleted."""
289
+ CREATE_ORDER_ROUTE = "create_order_route"
290
+ """Order route '%s' created."""
291
+ UPDATE_ORDER_ROUTE = "update_order_route"
292
+ """Order route '%s' updated."""
293
+ DELETE_ORDER_ROUTE = "delete_order_route"
294
+ """Order route '%s' deleted."""
295
+ CREATE_TAG = "create_tag"
296
+ """Passenger '%s' created."""
297
+ UPDATE_TAG = "update_tag"
298
+ """Passenger '%s' updated."""
299
+ TAG_RESET_IMAGE = "tag_reset_image"
300
+ """Passenger '%s' updated."""
301
+ DELETE_TAG = "delete_tag"
302
+ """Passenger '%s' deleted."""
303
+ DELETE_TAG_MSG = "delete_tag_msg"
304
+ """Message dated %s from passenger '%s' deleted."""
305
+ UPDATE_TAG_UNITS = "update_tag_units"
306
+ """Automatic assignment list of passengers updated."""
307
+ CRITERIA_UPDATED = "criteria_updated"
308
+ """Criteria updated."""
309
+ SET_ACTIVE = "set_active"
310
+ """
311
+ Unit was deactivated.
312
+ Unit was activated.
313
+ Unit was activated automatically.
314
+ """
315
+
316
+
317
+ ACCESSMASK_RESOURCE_BASIC: int = sum(
318
+ [
319
+ flags.AccessFlag.MANAGE_CUSTOM_FIELDS,
320
+ flags.AccessFlag.RESOURCE_MANAGE_DRIVERS,
321
+ flags.AccessFlag.RESOURCE_MANAGE_GEOFENCES,
322
+ flags.AccessFlag.RESOURCE_MANAGE_NOTIFICATIONS,
323
+ flags.AccessFlag.RESOURCE_VIEW_DRIVERS,
324
+ flags.AccessFlag.RESOURCE_VIEW_GEOFENCES,
325
+ flags.AccessFlag.RESOURCE_VIEW_NOTIFICATIONS,
326
+ flags.AccessFlag.RESOURCE_VIEW_ORDERS,
327
+ flags.AccessFlag.RESOURCE_VIEW_POIS,
328
+ flags.AccessFlag.RESOURCE_VIEW_TRAILERS,
329
+ flags.AccessFlag.VIEW_ADMIN_FIELDS,
330
+ flags.AccessFlag.VIEW_CUSTOM_FIELDS,
331
+ flags.AccessFlag.VIEW_ITEM_BASIC,
332
+ ]
333
+ )
334
+ """Basic resource permissions"""
335
+
336
+ ACCESSMASK_UNIT_BASIC: int = sum(
337
+ [
338
+ flags.AccessFlag.MANAGE_CUSTOM_FIELDS,
339
+ flags.AccessFlag.MANAGE_ICON,
340
+ flags.AccessFlag.QUERY_REPORTS,
341
+ flags.AccessFlag.RENAME_ITEM,
342
+ flags.AccessFlag.UNIT_EXECUTE_COMMANDS,
343
+ flags.AccessFlag.UNIT_EXPORT_MESSAGES,
344
+ flags.AccessFlag.UNIT_IMPORT_MESSAGES,
345
+ flags.AccessFlag.UNIT_REGISTER_EVENTS,
346
+ flags.AccessFlag.UNIT_VIEW_SERVICE_INTERVALS,
347
+ flags.AccessFlag.VIEW_ATTACHED_FILES,
348
+ flags.AccessFlag.VIEW_CUSTOM_FIELDS,
349
+ flags.AccessFlag.VIEW_ITEM_BASIC,
350
+ flags.AccessFlag.VIEW_ITEM_DETAILED,
351
+ ]
352
+ )
353
+ """Basic unit permissions"""
354
+
355
+ ACCESSMASK_UNIT_MIGRATION: int = sum(
356
+ [
357
+ flags.AccessFlag.DELETE_ITEM,
358
+ flags.AccessFlag.MANAGE_ITEM_ACCESS,
359
+ flags.AccessFlag.UNIT_DELETE_MESSAGES,
360
+ flags.AccessFlag.UNIT_MANAGE_CONNECTIVITY,
361
+ flags.AccessFlag.VIEW_ITEM_BASIC,
362
+ ]
363
+ )
364
+ """Unit migration permissions"""
@@ -1,3 +1,4 @@
1
+ from .account import WialonAccount
1
2
  from .resource import WialonResource
2
3
  from .retranslator import WialonRetranslator
3
4
  from .route import WialonRoute
@@ -0,0 +1,208 @@
1
+ from collections.abc import Iterable
2
+ from decimal import Decimal
3
+ from typing import override
4
+
5
+ from terminusgps.wialon.items.base import WialonObject, requires_id
6
+
7
+
8
+ class WialonAccount(WialonObject):
9
+ """A Wialon `account <https://help.wialon.com/en/wialon-hosting/user-guide/management-system/accounts-and-resources>`_."""
10
+
11
+ def create(self, resource_id: int | str, billing_plan: str) -> dict[str, str]:
12
+ """
13
+ Creates the account in Wialon and sets its id.
14
+
15
+ :param resource_id: A Wialon resource id.
16
+ :type creator_id: :py:obj:`int` | :py:obj:`str`
17
+ :param billing_plan: A Wialon account billing plan.
18
+ :type billing_plan: :py:obj:`str`
19
+ :raises ValueError: If ``resource_id`` wasn't a digit.
20
+ :raises WialonAPIError: If something went wrong calling the Wialon API.
21
+ :returns: A Wialon object dictionary.
22
+ :rtype: :py:obj:`dict`[:py:obj:`str`, :py:obj:`str`]
23
+
24
+ """
25
+ if isinstance(resource_id, str) and not resource_id.isdigit():
26
+ raise ValueError(f"'resource_id' must be a digit, got '{resource_id}'.")
27
+ response = self.session.wialon_api.account_create_account(
28
+ **{"itemId": resource_id, "plan": billing_plan}
29
+ )
30
+ self.id = resource_id
31
+ return response
32
+
33
+ @override
34
+ @requires_id
35
+ def delete(self, reasons: Iterable[str] | None = None) -> dict[str, str]:
36
+ """
37
+ Deletes the account in Wialon.
38
+
39
+ :param reasons: An iterable of reason strings.
40
+ :type reasons: :py:obj:`~collections.abc.Iterable`[:py:obj:`str`]
41
+ :raises AssertionError: If the Wialon account id wasn't set.
42
+ :raises WialonAPIError: If something went wrong calling the Wialon API.
43
+ :returns: An empty dictionary.
44
+ :rtype: :py:obj:`dict`[:py:obj:`str`, :py:obj:`str`]
45
+
46
+ """
47
+ return self.session.wialon_api.account_delete_account(
48
+ **{"itemId": self.id, "reasons": reasons}
49
+ if reasons is not None
50
+ else {"itemId": self.id}
51
+ )
52
+
53
+ @requires_id
54
+ def activate(self) -> dict[str, str]:
55
+ """
56
+ Enables the account in Wialon.
57
+
58
+ :raises AssertionError: If the Wialon account id wasn't set.
59
+ :raises WialonAPIError: If something went wrong calling the Wialon API.
60
+ :returns: An empty dictionary.
61
+ :rtype: :py:obj:`dict`[:py:obj:`str`, :py:obj:`str`]
62
+
63
+ """
64
+ return self.session.wialon_api.account_enable_account(
65
+ **{"itemId": self.id, "enable": 1}
66
+ )
67
+
68
+ @requires_id
69
+ def deactivate(self) -> dict[str, str]:
70
+ """
71
+ Disables the account in Wialon.
72
+
73
+ :raises AssertionError: If the Wialon account id wasn't set.
74
+ :raises WialonAPIError: If something went wrong calling the Wialon API.
75
+ :returns: An empty dictionary.
76
+ :rtype: :py:obj:`dict`[:py:obj:`str`, :py:obj:`str`]
77
+
78
+ """
79
+ return self.session.wialon_api.account_enable_account(
80
+ **{"itemId": self.id, "enable": 0}
81
+ )
82
+
83
+ @requires_id
84
+ def do_payment(
85
+ self, balance_update: Decimal, days_update: int, description: str
86
+ ) -> dict[str, str]:
87
+ """
88
+ Makes an account payment in Wialon.
89
+
90
+ :param balance_update: Amount to update the account balance by. Can be negative.
91
+ :type balance_update: :py:obj:`~decimal.Decimal`
92
+ :param days_update: Amount of days to add to the account.
93
+ :type days_update: :py:obj:`int`
94
+ :param description: A description for the payment.
95
+ :type description: :py:obj:`str`
96
+ :raises AssertionError: If the Wialon account id wasn't set.
97
+ :raises WialonAPIError: If something went wrong calling the Wialon API.
98
+ :returns: An empty dictionary.
99
+ :rtype: :py:obj:`dict`[:py:obj:`str`, :py:obj:`str`]
100
+
101
+ """
102
+ return self.session.wialon_api.account_do_payment(
103
+ **{
104
+ "itemId": self.id,
105
+ "balanceUpdate": str(balance_update),
106
+ "daysUpdate": days_update,
107
+ "description": description,
108
+ }
109
+ )
110
+
111
+ @requires_id
112
+ def set_dealer_rights(self, enabled: bool) -> dict[str, str]:
113
+ """
114
+ Enables or disables the account's dealer rights in Wialon.
115
+
116
+ :param enabled: Whether to set the account as a dealer or not.
117
+ :type enabled: :py:obj:`bool`
118
+ :raises AssertionError: If the Wialon account id wasn't set.
119
+ :raises WialonAPIError: If something went wrong calling the Wialon API.
120
+ :returns: An empty dictionary.
121
+ :rtype: :py:obj:`dict`[:py:obj:`str`, :py:obj:`str`]
122
+
123
+ """
124
+ return self.session.wialon_api.account_update_dealer_rights(
125
+ **{"itemId": self.id, "enable": int(enabled)}
126
+ )
127
+
128
+ @requires_id
129
+ def set_flags(
130
+ self,
131
+ flags: int,
132
+ block_balance: Decimal = Decimal("0.00"),
133
+ deny_balance: Decimal = Decimal("0.00"),
134
+ ) -> dict[str, str]:
135
+ """
136
+ Sets settings flags for the account in Wialon.
137
+
138
+ :param flags: A Wialon account settings flag integer.
139
+ :type flags: :py:obj:`int`
140
+ :param block_balance: Balance required for account blocking. Default is ``"0.00"``.
141
+ :type block_balance: :py:obj:`~decimal.Decimal`
142
+ :param deny_balance: Balance required for service denial. Default is ``"0.00"``.
143
+ :type deny_balance: :py:obj:`~decimal.Decimal`
144
+ :raises AssertionError: If the Wialon account id wasn't set.
145
+ :raises WialonAPIError: If something went wrong calling the Wialon API.
146
+ :returns: An empty dictionary.
147
+ :rtype: :py:obj:`dict`[:py:obj:`str`, :py:obj:`str`]
148
+
149
+ """
150
+ return self.session.wialon_api.account_update_flags(
151
+ **{
152
+ "itemId": self.id,
153
+ "flags": flags,
154
+ "blockBalance": block_balance,
155
+ "denyBalance": deny_balance,
156
+ }
157
+ )
158
+
159
+ @requires_id
160
+ def set_plan(self, name: str) -> dict[str, str]:
161
+ """
162
+ Sets the account's billing plan to ``name``.
163
+
164
+ :param name: A Wialon billing plan name.
165
+ :type name: :py:obj:`str`
166
+ :raises AssertionError: If the Wialon account id wasn't set.
167
+ :raises WialonAPIError: If something went wrong calling the Wialon API.
168
+ :returns: An empty dictionary.
169
+ :rtype: :py:obj:`dict`[:py:obj:`str`, :py:obj:`str`]
170
+
171
+ """
172
+ return self.session.wialon_api.account_update_plan(
173
+ **{"itemId": self.id, "plan": name}
174
+ )
175
+
176
+ @requires_id
177
+ def set_minimum_days(self, days: int) -> dict[str, str]:
178
+ """
179
+ Sets the account's minimum days to ``days`` in Wialon.
180
+
181
+ :param days: Minimum number of days as an integer.
182
+ :type days: :py:obj:`int`
183
+ :raises AssertionError: If the Wialon account id wasn't set.
184
+ :raises WialonAPIError: If something went wrong calling the Wialon API.
185
+ :returns: An empty dictionary.
186
+ :rtype: :py:obj:`dict`[:py:obj:`str`, :py:obj:`str`]
187
+
188
+ """
189
+ return self.session.wialon_api.account_update_min_days(
190
+ **{"itemId": self.id, "minDays": days}
191
+ )
192
+
193
+ @requires_id
194
+ def get_data(self, response_type: int = 1) -> dict[str, str]:
195
+ """
196
+ Returns account data from Wialon.
197
+
198
+ :param response_type: A response flag integer. Default is ``1``.
199
+ :type response_type: :py:obj:`int`
200
+ :raises AssertionError: If the Wialon account id wasn't set.
201
+ :raises WialonAPIError: If something went wrong calling the Wialon API.
202
+ :returns: A dictionary containing the account's data from Wialon.
203
+ :rtype: :py:obj:`dict`[:py:obj:`str`, :py:obj:`str`]
204
+
205
+ """
206
+ return self.session.wialon_api.account_get_account_data(
207
+ **{"itemId": self.id, "type": response_type}
208
+ )