python-terminusgps 40.1.4__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.4 → python_terminusgps-41.0.0}/.gitignore +2 -2
  2. {python_terminusgps-40.1.4 → python_terminusgps-41.0.0}/PKG-INFO +1 -3
  3. {python_terminusgps-40.1.4 → python_terminusgps-41.0.0}/docs/source/conf.py +1 -1
  4. {python_terminusgps-40.1.4 → python_terminusgps-41.0.0}/pyproject.toml +1 -4
  5. python_terminusgps-41.0.0/terminusgps/wialon/constants.py +364 -0
  6. {python_terminusgps-40.1.4 → python_terminusgps-41.0.0}/terminusgps/wialon/items/__init__.py +1 -0
  7. python_terminusgps-41.0.0/terminusgps/wialon/items/account.py +208 -0
  8. python_terminusgps-41.0.0/terminusgps/wialon/items/base.py +247 -0
  9. python_terminusgps-41.0.0/terminusgps/wialon/items/resource.py +104 -0
  10. python_terminusgps-41.0.0/terminusgps/wialon/items/retranslator.py +49 -0
  11. python_terminusgps-41.0.0/terminusgps/wialon/items/route.py +32 -0
  12. python_terminusgps-41.0.0/terminusgps/wialon/items/unit.py +134 -0
  13. python_terminusgps-41.0.0/terminusgps/wialon/items/unit_group.py +51 -0
  14. python_terminusgps-41.0.0/terminusgps/wialon/items/user.py +127 -0
  15. {python_terminusgps-40.1.4 → python_terminusgps-41.0.0}/terminusgps/wialon/utils.py +47 -127
  16. {python_terminusgps-40.1.4 → python_terminusgps-41.0.0}/uv.lock +4 -179
  17. python_terminusgps-40.1.4/docs/build/coverage/c.txt +0 -4
  18. python_terminusgps-40.1.4/docs/build/coverage/python.txt +0 -58
  19. python_terminusgps-40.1.4/docs/build/coverage/undoc.pickle +0 -0
  20. python_terminusgps-40.1.4/docs/build/doctrees/authorizenet/auth.doctree +0 -0
  21. python_terminusgps-40.1.4/docs/build/doctrees/authorizenet/constants.doctree +0 -0
  22. python_terminusgps-40.1.4/docs/build/doctrees/authorizenet/controllers.doctree +0 -0
  23. python_terminusgps-40.1.4/docs/build/doctrees/authorizenet/examples.doctree +0 -0
  24. python_terminusgps-40.1.4/docs/build/doctrees/authorizenet/index.doctree +0 -0
  25. python_terminusgps-40.1.4/docs/build/doctrees/authorizenet/profiles.doctree +0 -0
  26. python_terminusgps-40.1.4/docs/build/doctrees/authorizenet/subscriptions.doctree +0 -0
  27. python_terminusgps-40.1.4/docs/build/doctrees/authorizenet/utils.doctree +0 -0
  28. python_terminusgps-40.1.4/docs/build/doctrees/authorizenet/validators.doctree +0 -0
  29. python_terminusgps-40.1.4/docs/build/doctrees/aws/index.doctree +0 -0
  30. python_terminusgps-40.1.4/docs/build/doctrees/aws/notifications.doctree +0 -0
  31. python_terminusgps-40.1.4/docs/build/doctrees/aws/secrets.doctree +0 -0
  32. python_terminusgps-40.1.4/docs/build/doctrees/aws/speech.doctree +0 -0
  33. python_terminusgps-40.1.4/docs/build/doctrees/aws/utils.doctree +0 -0
  34. python_terminusgps-40.1.4/docs/build/doctrees/django/forms.doctree +0 -0
  35. python_terminusgps-40.1.4/docs/build/doctrees/django/index.doctree +0 -0
  36. python_terminusgps-40.1.4/docs/build/doctrees/django/mixins.doctree +0 -0
  37. python_terminusgps-40.1.4/docs/build/doctrees/django/settings.doctree +0 -0
  38. python_terminusgps-40.1.4/docs/build/doctrees/django/validators.doctree +0 -0
  39. python_terminusgps-40.1.4/docs/build/doctrees/environment.pickle +0 -0
  40. python_terminusgps-40.1.4/docs/build/doctrees/index.doctree +0 -0
  41. python_terminusgps-40.1.4/docs/build/doctrees/mixins.doctree +0 -0
  42. python_terminusgps-40.1.4/docs/build/doctrees/settings.doctree +0 -0
  43. python_terminusgps-40.1.4/docs/build/doctrees/twilio/caller.doctree +0 -0
  44. python_terminusgps-40.1.4/docs/build/doctrees/twilio/examples.doctree +0 -0
  45. python_terminusgps-40.1.4/docs/build/doctrees/twilio/index.doctree +0 -0
  46. python_terminusgps-40.1.4/docs/build/doctrees/twilio/settings.doctree +0 -0
  47. python_terminusgps-40.1.4/docs/build/doctrees/validators.doctree +0 -0
  48. python_terminusgps-40.1.4/docs/build/doctrees/wialon/constants.doctree +0 -0
  49. python_terminusgps-40.1.4/docs/build/doctrees/wialon/errors.doctree +0 -0
  50. python_terminusgps-40.1.4/docs/build/doctrees/wialon/examples.doctree +0 -0
  51. python_terminusgps-40.1.4/docs/build/doctrees/wialon/flags.doctree +0 -0
  52. python_terminusgps-40.1.4/docs/build/doctrees/wialon/index.doctree +0 -0
  53. python_terminusgps-40.1.4/docs/build/doctrees/wialon/items.doctree +0 -0
  54. python_terminusgps-40.1.4/docs/build/doctrees/wialon/session.doctree +0 -0
  55. python_terminusgps-40.1.4/docs/build/doctrees/wialon/settings.doctree +0 -0
  56. python_terminusgps-40.1.4/docs/build/doctrees/wialon/utils.doctree +0 -0
  57. python_terminusgps-40.1.4/docs/build/html/_modules/index.html +0 -218
  58. python_terminusgps-40.1.4/docs/build/html/_modules/terminusgps/authorizenet/auth.html +0 -256
  59. python_terminusgps-40.1.4/docs/build/html/_modules/terminusgps/authorizenet/constants.html +0 -216
  60. python_terminusgps-40.1.4/docs/build/html/_modules/terminusgps/authorizenet/controllers.html +0 -292
  61. python_terminusgps-40.1.4/docs/build/html/_modules/terminusgps/authorizenet/errors.html +0 -227
  62. python_terminusgps-40.1.4/docs/build/html/_modules/terminusgps/authorizenet/profiles/addresses.html +0 -324
  63. python_terminusgps-40.1.4/docs/build/html/_modules/terminusgps/authorizenet/profiles/base.html +0 -346
  64. python_terminusgps-40.1.4/docs/build/html/_modules/terminusgps/authorizenet/profiles/customers.html +0 -318
  65. python_terminusgps-40.1.4/docs/build/html/_modules/terminusgps/authorizenet/profiles/payments.html +0 -356
  66. python_terminusgps-40.1.4/docs/build/html/_modules/terminusgps/authorizenet/profiles/subscriptions.html +0 -520
  67. python_terminusgps-40.1.4/docs/build/html/_modules/terminusgps/authorizenet/subscriptions/subscriptions.html +0 -410
  68. python_terminusgps-40.1.4/docs/build/html/_modules/terminusgps/authorizenet/subscriptions.html +0 -306
  69. python_terminusgps-40.1.4/docs/build/html/_modules/terminusgps/authorizenet/utils.html +0 -384
  70. python_terminusgps-40.1.4/docs/build/html/_modules/terminusgps/authorizenet/validators.html +0 -316
  71. python_terminusgps-40.1.4/docs/build/html/_modules/terminusgps/aws/notifications.html +0 -524
  72. python_terminusgps-40.1.4/docs/build/html/_modules/terminusgps/aws/secrets.html +0 -236
  73. python_terminusgps-40.1.4/docs/build/html/_modules/terminusgps/aws/speech.html +0 -361
  74. python_terminusgps-40.1.4/docs/build/html/_modules/terminusgps/django/forms/fields.html +0 -274
  75. python_terminusgps-40.1.4/docs/build/html/_modules/terminusgps/django/forms/renderer.html +0 -217
  76. python_terminusgps-40.1.4/docs/build/html/_modules/terminusgps/django/forms/widgets.html +0 -273
  77. python_terminusgps-40.1.4/docs/build/html/_modules/terminusgps/django/forms.html +0 -354
  78. python_terminusgps-40.1.4/docs/build/html/_modules/terminusgps/django/mixins.html +0 -233
  79. python_terminusgps-40.1.4/docs/build/html/_modules/terminusgps/django/validators.html +0 -296
  80. python_terminusgps-40.1.4/docs/build/html/_modules/terminusgps/mixins.html +0 -232
  81. python_terminusgps-40.1.4/docs/build/html/_modules/terminusgps/twilio/caller.html +0 -363
  82. python_terminusgps-40.1.4/docs/build/html/_modules/terminusgps/wialon/constants.html +0 -462
  83. python_terminusgps-40.1.4/docs/build/html/_modules/terminusgps/wialon/flags.html +0 -547
  84. python_terminusgps-40.1.4/docs/build/html/_modules/terminusgps/wialon/items/base.html +0 -603
  85. python_terminusgps-40.1.4/docs/build/html/_modules/terminusgps/wialon/items/geofence.html +0 -176
  86. python_terminusgps-40.1.4/docs/build/html/_modules/terminusgps/wialon/items/notification.html +0 -111
  87. python_terminusgps-40.1.4/docs/build/html/_modules/terminusgps/wialon/items/resource.html +0 -834
  88. python_terminusgps-40.1.4/docs/build/html/_modules/terminusgps/wialon/items/retranslator.html +0 -344
  89. python_terminusgps-40.1.4/docs/build/html/_modules/terminusgps/wialon/items/route.html +0 -246
  90. python_terminusgps-40.1.4/docs/build/html/_modules/terminusgps/wialon/items/unit.html +0 -586
  91. python_terminusgps-40.1.4/docs/build/html/_modules/terminusgps/wialon/items/unit_group.html +0 -346
  92. python_terminusgps-40.1.4/docs/build/html/_modules/terminusgps/wialon/items/user.html +0 -371
  93. python_terminusgps-40.1.4/docs/build/html/_modules/terminusgps/wialon/session.html +0 -400
  94. python_terminusgps-40.1.4/docs/build/html/_modules/terminusgps/wialon/utils.html +0 -587
  95. python_terminusgps-40.1.4/docs/build/html/_modules/wialon/api.html +0 -341
  96. python_terminusgps-40.1.4/docs/build/html/_sources/authorizenet/auth.rst.txt +0 -7
  97. python_terminusgps-40.1.4/docs/build/html/_sources/authorizenet/constants.rst.txt +0 -7
  98. python_terminusgps-40.1.4/docs/build/html/_sources/authorizenet/controllers.rst.txt +0 -7
  99. python_terminusgps-40.1.4/docs/build/html/_sources/authorizenet/examples.rst.txt +0 -165
  100. python_terminusgps-40.1.4/docs/build/html/_sources/authorizenet/index.rst.txt +0 -16
  101. python_terminusgps-40.1.4/docs/build/html/_sources/authorizenet/profiles.rst.txt +0 -23
  102. python_terminusgps-40.1.4/docs/build/html/_sources/authorizenet/subscriptions.rst.txt +0 -5
  103. python_terminusgps-40.1.4/docs/build/html/_sources/authorizenet/utils.rst.txt +0 -5
  104. python_terminusgps-40.1.4/docs/build/html/_sources/authorizenet/validators.rst.txt +0 -31
  105. python_terminusgps-40.1.4/docs/build/html/_sources/aws/index.rst.txt +0 -10
  106. python_terminusgps-40.1.4/docs/build/html/_sources/aws/notifications.rst.txt +0 -47
  107. python_terminusgps-40.1.4/docs/build/html/_sources/aws/secrets.rst.txt +0 -20
  108. python_terminusgps-40.1.4/docs/build/html/_sources/aws/speech.rst.txt +0 -25
  109. python_terminusgps-40.1.4/docs/build/html/_sources/aws/utils.rst.txt +0 -19
  110. python_terminusgps-40.1.4/docs/build/html/_sources/django/forms.rst.txt +0 -65
  111. python_terminusgps-40.1.4/docs/build/html/_sources/django/index.rst.txt +0 -13
  112. python_terminusgps-40.1.4/docs/build/html/_sources/django/mixins.rst.txt +0 -32
  113. python_terminusgps-40.1.4/docs/build/html/_sources/django/settings.rst.txt +0 -61
  114. python_terminusgps-40.1.4/docs/build/html/_sources/django/validators.rst.txt +0 -6
  115. python_terminusgps-40.1.4/docs/build/html/_sources/index.rst.txt +0 -38
  116. python_terminusgps-40.1.4/docs/build/html/_sources/mixins.rst.txt +0 -0
  117. python_terminusgps-40.1.4/docs/build/html/_sources/settings.rst.txt +0 -59
  118. python_terminusgps-40.1.4/docs/build/html/_sources/twilio/caller.rst.txt +0 -9
  119. python_terminusgps-40.1.4/docs/build/html/_sources/twilio/examples.rst.txt +0 -74
  120. python_terminusgps-40.1.4/docs/build/html/_sources/twilio/index.rst.txt +0 -11
  121. python_terminusgps-40.1.4/docs/build/html/_sources/twilio/settings.rst.txt +0 -3
  122. python_terminusgps-40.1.4/docs/build/html/_sources/validators.rst.txt +0 -4
  123. python_terminusgps-40.1.4/docs/build/html/_sources/wialon/constants.rst.txt +0 -20
  124. python_terminusgps-40.1.4/docs/build/html/_sources/wialon/errors.rst.txt +0 -10
  125. python_terminusgps-40.1.4/docs/build/html/_sources/wialon/examples.rst.txt +0 -339
  126. python_terminusgps-40.1.4/docs/build/html/_sources/wialon/flags.rst.txt +0 -16
  127. python_terminusgps-40.1.4/docs/build/html/_sources/wialon/index.rst.txt +0 -30
  128. python_terminusgps-40.1.4/docs/build/html/_sources/wialon/items.rst.txt +0 -37
  129. python_terminusgps-40.1.4/docs/build/html/_sources/wialon/session.rst.txt +0 -36
  130. python_terminusgps-40.1.4/docs/build/html/_sources/wialon/settings.rst.txt +0 -59
  131. python_terminusgps-40.1.4/docs/build/html/_sources/wialon/utils.rst.txt +0 -28
  132. python_terminusgps-40.1.4/docs/build/html/_static/0fc70aa4dfe4d16d7073.woff +0 -0
  133. python_terminusgps-40.1.4/docs/build/html/_static/583e3f428bf2362b546d.woff +0 -0
  134. python_terminusgps-40.1.4/docs/build/html/_static/5be6ec379613f10aea3f.woff +0 -0
  135. python_terminusgps-40.1.4/docs/build/html/_static/76c1862325ea6f70eeff.woff2 +0 -0
  136. python_terminusgps-40.1.4/docs/build/html/_static/83710c128240451d95af.woff +0 -0
  137. python_terminusgps-40.1.4/docs/build/html/_static/_sphinx_javascript_frameworks_compat.js +0 -123
  138. python_terminusgps-40.1.4/docs/build/html/_static/a63d39a1c104a2b3e87e.woff2 +0 -0
  139. python_terminusgps-40.1.4/docs/build/html/_static/autoclasstoc.css +0 -12
  140. python_terminusgps-40.1.4/docs/build/html/_static/awesome-docsearch.css +0 -1
  141. python_terminusgps-40.1.4/docs/build/html/_static/awesome-docsearch.js +0 -0
  142. python_terminusgps-40.1.4/docs/build/html/_static/awesome-sphinx-design.css +0 -1
  143. python_terminusgps-40.1.4/docs/build/html/_static/awesome-sphinx-design.js +0 -0
  144. python_terminusgps-40.1.4/docs/build/html/_static/b659956119f91f2342bc.woff2 +0 -0
  145. python_terminusgps-40.1.4/docs/build/html/_static/basic.css +0 -906
  146. python_terminusgps-40.1.4/docs/build/html/_static/bb50084be2b43ba7b98c.woff2 +0 -0
  147. python_terminusgps-40.1.4/docs/build/html/_static/ce1e40901d7a0d88d483.woff2 +0 -0
  148. python_terminusgps-40.1.4/docs/build/html/_static/css/badge_only.css +0 -1
  149. python_terminusgps-40.1.4/docs/build/html/_static/css/custom.css +0 -2
  150. python_terminusgps-40.1.4/docs/build/html/_static/css/custom.css.map +0 -1
  151. python_terminusgps-40.1.4/docs/build/html/_static/css/fonts/Roboto-Slab-Bold.woff +0 -0
  152. python_terminusgps-40.1.4/docs/build/html/_static/css/fonts/Roboto-Slab-Bold.woff2 +0 -0
  153. python_terminusgps-40.1.4/docs/build/html/_static/css/fonts/Roboto-Slab-Regular.woff +0 -0
  154. python_terminusgps-40.1.4/docs/build/html/_static/css/fonts/Roboto-Slab-Regular.woff2 +0 -0
  155. python_terminusgps-40.1.4/docs/build/html/_static/css/fonts/fontawesome-webfont.eot +0 -0
  156. python_terminusgps-40.1.4/docs/build/html/_static/css/fonts/fontawesome-webfont.svg +0 -2671
  157. python_terminusgps-40.1.4/docs/build/html/_static/css/fonts/fontawesome-webfont.ttf +0 -0
  158. python_terminusgps-40.1.4/docs/build/html/_static/css/fonts/fontawesome-webfont.woff +0 -0
  159. python_terminusgps-40.1.4/docs/build/html/_static/css/fonts/fontawesome-webfont.woff2 +0 -0
  160. python_terminusgps-40.1.4/docs/build/html/_static/css/fonts/lato-bold-italic.woff +0 -0
  161. python_terminusgps-40.1.4/docs/build/html/_static/css/fonts/lato-bold-italic.woff2 +0 -0
  162. python_terminusgps-40.1.4/docs/build/html/_static/css/fonts/lato-bold.woff +0 -0
  163. python_terminusgps-40.1.4/docs/build/html/_static/css/fonts/lato-bold.woff2 +0 -0
  164. python_terminusgps-40.1.4/docs/build/html/_static/css/fonts/lato-normal-italic.woff +0 -0
  165. python_terminusgps-40.1.4/docs/build/html/_static/css/fonts/lato-normal-italic.woff2 +0 -0
  166. python_terminusgps-40.1.4/docs/build/html/_static/css/fonts/lato-normal.woff +0 -0
  167. python_terminusgps-40.1.4/docs/build/html/_static/css/fonts/lato-normal.woff2 +0 -0
  168. python_terminusgps-40.1.4/docs/build/html/_static/css/theme.css +0 -2751
  169. python_terminusgps-40.1.4/docs/build/html/_static/css/theme.css.map +0 -1
  170. python_terminusgps-40.1.4/docs/build/html/_static/css/theme.min.css +0 -2
  171. python_terminusgps-40.1.4/docs/build/html/_static/css/theme.min.css.map +0 -1
  172. python_terminusgps-40.1.4/docs/build/html/_static/d04352f240062b100fba.woff2 +0 -0
  173. python_terminusgps-40.1.4/docs/build/html/_static/doctools.js +0 -149
  174. python_terminusgps-40.1.4/docs/build/html/_static/documentation_options.js +0 -13
  175. python_terminusgps-40.1.4/docs/build/html/_static/f1cdf5c21de970ee0592.woff +0 -0
  176. python_terminusgps-40.1.4/docs/build/html/_static/fd994e8d90d9cab651b0.woff +0 -0
  177. python_terminusgps-40.1.4/docs/build/html/_static/file.png +0 -0
  178. python_terminusgps-40.1.4/docs/build/html/_static/font/fontello.eot +0 -0
  179. python_terminusgps-40.1.4/docs/build/html/_static/font/fontello.svg +0 -32
  180. python_terminusgps-40.1.4/docs/build/html/_static/font/fontello.ttf +0 -0
  181. python_terminusgps-40.1.4/docs/build/html/_static/font/fontello.woff +0 -0
  182. python_terminusgps-40.1.4/docs/build/html/_static/font/fontello.woff2 +0 -0
  183. python_terminusgps-40.1.4/docs/build/html/_static/fonts/Lato/lato-bold.eot +0 -0
  184. python_terminusgps-40.1.4/docs/build/html/_static/fonts/Lato/lato-bold.ttf +0 -0
  185. python_terminusgps-40.1.4/docs/build/html/_static/fonts/Lato/lato-bold.woff +0 -0
  186. python_terminusgps-40.1.4/docs/build/html/_static/fonts/Lato/lato-bold.woff2 +0 -0
  187. python_terminusgps-40.1.4/docs/build/html/_static/fonts/Lato/lato-bolditalic.eot +0 -0
  188. python_terminusgps-40.1.4/docs/build/html/_static/fonts/Lato/lato-bolditalic.ttf +0 -0
  189. python_terminusgps-40.1.4/docs/build/html/_static/fonts/Lato/lato-bolditalic.woff +0 -0
  190. python_terminusgps-40.1.4/docs/build/html/_static/fonts/Lato/lato-bolditalic.woff2 +0 -0
  191. python_terminusgps-40.1.4/docs/build/html/_static/fonts/Lato/lato-italic.eot +0 -0
  192. python_terminusgps-40.1.4/docs/build/html/_static/fonts/Lato/lato-italic.ttf +0 -0
  193. python_terminusgps-40.1.4/docs/build/html/_static/fonts/Lato/lato-italic.woff +0 -0
  194. python_terminusgps-40.1.4/docs/build/html/_static/fonts/Lato/lato-italic.woff2 +0 -0
  195. python_terminusgps-40.1.4/docs/build/html/_static/fonts/Lato/lato-regular.eot +0 -0
  196. python_terminusgps-40.1.4/docs/build/html/_static/fonts/Lato/lato-regular.ttf +0 -0
  197. python_terminusgps-40.1.4/docs/build/html/_static/fonts/Lato/lato-regular.woff +0 -0
  198. python_terminusgps-40.1.4/docs/build/html/_static/fonts/Lato/lato-regular.woff2 +0 -0
  199. python_terminusgps-40.1.4/docs/build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.eot +0 -0
  200. python_terminusgps-40.1.4/docs/build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.ttf +0 -0
  201. python_terminusgps-40.1.4/docs/build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff +0 -0
  202. python_terminusgps-40.1.4/docs/build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff2 +0 -0
  203. python_terminusgps-40.1.4/docs/build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.eot +0 -0
  204. python_terminusgps-40.1.4/docs/build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.ttf +0 -0
  205. python_terminusgps-40.1.4/docs/build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff +0 -0
  206. python_terminusgps-40.1.4/docs/build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff2 +0 -0
  207. python_terminusgps-40.1.4/docs/build/html/_static/jquery.js +0 -2
  208. python_terminusgps-40.1.4/docs/build/html/_static/js/badge_only.js +0 -1
  209. python_terminusgps-40.1.4/docs/build/html/_static/js/theme.js +0 -68
  210. python_terminusgps-40.1.4/docs/build/html/_static/js/versions.js +0 -228
  211. python_terminusgps-40.1.4/docs/build/html/_static/language_data.js +0 -192
  212. python_terminusgps-40.1.4/docs/build/html/_static/minus.png +0 -0
  213. python_terminusgps-40.1.4/docs/build/html/_static/plus.png +0 -0
  214. python_terminusgps-40.1.4/docs/build/html/_static/pygments.css +0 -150
  215. python_terminusgps-40.1.4/docs/build/html/_static/searchtools.js +0 -635
  216. python_terminusgps-40.1.4/docs/build/html/_static/sphinx_highlight.js +0 -154
  217. python_terminusgps-40.1.4/docs/build/html/_static/theme.css +0 -9
  218. python_terminusgps-40.1.4/docs/build/html/_static/theme.js +0 -2
  219. python_terminusgps-40.1.4/docs/build/html/_static/theme.js.LICENSE.txt +0 -6
  220. python_terminusgps-40.1.4/docs/build/html/authorizenet/auth.html +0 -191
  221. python_terminusgps-40.1.4/docs/build/html/authorizenet/constants.html +0 -192
  222. python_terminusgps-40.1.4/docs/build/html/authorizenet/controllers.html +0 -182
  223. python_terminusgps-40.1.4/docs/build/html/authorizenet/examples.html +0 -303
  224. python_terminusgps-40.1.4/docs/build/html/authorizenet/index.html +0 -194
  225. python_terminusgps-40.1.4/docs/build/html/authorizenet/profiles.html +0 -442
  226. python_terminusgps-40.1.4/docs/build/html/authorizenet/subscriptions.html +0 -239
  227. python_terminusgps-40.1.4/docs/build/html/authorizenet/utils.html +0 -303
  228. python_terminusgps-40.1.4/docs/build/html/authorizenet/validators.html +0 -245
  229. python_terminusgps-40.1.4/docs/build/html/aws/index.html +0 -162
  230. python_terminusgps-40.1.4/docs/build/html/aws/notifications.html +0 -193
  231. python_terminusgps-40.1.4/docs/build/html/aws/secrets.html +0 -189
  232. python_terminusgps-40.1.4/docs/build/html/aws/speech.html +0 -285
  233. python_terminusgps-40.1.4/docs/build/html/aws/utils.html +0 -171
  234. python_terminusgps-40.1.4/docs/build/html/django/forms.html +0 -272
  235. python_terminusgps-40.1.4/docs/build/html/django/index.html +0 -176
  236. python_terminusgps-40.1.4/docs/build/html/django/mixins.html +0 -244
  237. python_terminusgps-40.1.4/docs/build/html/django/settings.html +0 -255
  238. python_terminusgps-40.1.4/docs/build/html/django/validators.html +0 -154
  239. python_terminusgps-40.1.4/docs/build/html/genindex.html +0 -1340
  240. python_terminusgps-40.1.4/docs/build/html/index.html +0 -183
  241. python_terminusgps-40.1.4/docs/build/html/mixins.html +0 -139
  242. python_terminusgps-40.1.4/docs/build/html/objects.inv +0 -0
  243. python_terminusgps-40.1.4/docs/build/html/py-modindex.html +0 -234
  244. python_terminusgps-40.1.4/docs/build/html/search.html +0 -199
  245. python_terminusgps-40.1.4/docs/build/html/searchindex.js +0 -1
  246. python_terminusgps-40.1.4/docs/build/html/settings.html +0 -249
  247. python_terminusgps-40.1.4/docs/build/html/twilio/caller.html +0 -304
  248. python_terminusgps-40.1.4/docs/build/html/twilio/examples.html +0 -226
  249. python_terminusgps-40.1.4/docs/build/html/twilio/index.html +0 -167
  250. python_terminusgps-40.1.4/docs/build/html/twilio/settings.html +0 -137
  251. python_terminusgps-40.1.4/docs/build/html/validators.html +0 -142
  252. python_terminusgps-40.1.4/docs/build/html/wialon/constants.html +0 -598
  253. python_terminusgps-40.1.4/docs/build/html/wialon/errors.html +0 -155
  254. python_terminusgps-40.1.4/docs/build/html/wialon/examples.html +0 -473
  255. python_terminusgps-40.1.4/docs/build/html/wialon/flags.html +0 -1084
  256. python_terminusgps-40.1.4/docs/build/html/wialon/index.html +0 -212
  257. python_terminusgps-40.1.4/docs/build/html/wialon/items.html +0 -2421
  258. python_terminusgps-40.1.4/docs/build/html/wialon/session.html +0 -359
  259. python_terminusgps-40.1.4/docs/build/html/wialon/settings.html +0 -248
  260. python_terminusgps-40.1.4/docs/build/html/wialon/utils.html +0 -417
  261. python_terminusgps-40.1.4/docs/build/linkcheck/output.json +0 -41
  262. python_terminusgps-40.1.4/docs/build/linkcheck/output.txt +0 -0
  263. python_terminusgps-40.1.4/terminusgps/wialon/constants.py +0 -246
  264. python_terminusgps-40.1.4/terminusgps/wialon/items/base.py +0 -369
  265. python_terminusgps-40.1.4/terminusgps/wialon/items/resource.py +0 -567
  266. python_terminusgps-40.1.4/terminusgps/wialon/items/retranslator.py +0 -119
  267. python_terminusgps-40.1.4/terminusgps/wialon/items/route.py +0 -36
  268. python_terminusgps-40.1.4/terminusgps/wialon/items/unit.py +0 -355
  269. python_terminusgps-40.1.4/terminusgps/wialon/items/unit_group.py +0 -124
  270. python_terminusgps-40.1.4/terminusgps/wialon/items/user.py +0 -146
  271. python_terminusgps-40.1.4/terminusgps/wialon/renderer.py +0 -188
  272. {python_terminusgps-40.1.4 → python_terminusgps-41.0.0}/COPYING +0 -0
  273. {python_terminusgps-40.1.4 → python_terminusgps-41.0.0}/README.md +0 -0
  274. {python_terminusgps-40.1.4 → python_terminusgps-41.0.0}/docs/Makefile +0 -0
  275. {python_terminusgps-40.1.4 → python_terminusgps-41.0.0}/docs/make.bat +0 -0
  276. {python_terminusgps-40.1.4 → python_terminusgps-41.0.0}/docs/source/authorizenet/auth.rst +0 -0
  277. {python_terminusgps-40.1.4 → python_terminusgps-41.0.0}/docs/source/authorizenet/constants.rst +0 -0
  278. {python_terminusgps-40.1.4 → python_terminusgps-41.0.0}/docs/source/authorizenet/controllers.rst +0 -0
  279. {python_terminusgps-40.1.4 → python_terminusgps-41.0.0}/docs/source/authorizenet/examples.rst +0 -0
  280. {python_terminusgps-40.1.4 → python_terminusgps-41.0.0}/docs/source/authorizenet/index.rst +0 -0
  281. {python_terminusgps-40.1.4 → python_terminusgps-41.0.0}/docs/source/authorizenet/profiles.rst +0 -0
  282. {python_terminusgps-40.1.4 → python_terminusgps-41.0.0}/docs/source/authorizenet/subscriptions.rst +0 -0
  283. {python_terminusgps-40.1.4 → python_terminusgps-41.0.0}/docs/source/authorizenet/utils.rst +0 -0
  284. {python_terminusgps-40.1.4 → python_terminusgps-41.0.0}/docs/source/authorizenet/validators.rst +0 -0
  285. {python_terminusgps-40.1.4 → python_terminusgps-41.0.0}/docs/source/django/forms.rst +0 -0
  286. {python_terminusgps-40.1.4 → python_terminusgps-41.0.0}/docs/source/django/index.rst +0 -0
  287. {python_terminusgps-40.1.4 → python_terminusgps-41.0.0}/docs/source/django/mixins.rst +0 -0
  288. {python_terminusgps-40.1.4 → python_terminusgps-41.0.0}/docs/source/django/settings.rst +0 -0
  289. {python_terminusgps-40.1.4 → python_terminusgps-41.0.0}/docs/source/django/validators.rst +0 -0
  290. {python_terminusgps-40.1.4 → python_terminusgps-41.0.0}/docs/source/index.rst +0 -0
  291. {python_terminusgps-40.1.4 → python_terminusgps-41.0.0}/docs/source/wialon/constants.rst +0 -0
  292. {python_terminusgps-40.1.4 → python_terminusgps-41.0.0}/docs/source/wialon/errors.rst +0 -0
  293. {python_terminusgps-40.1.4 → python_terminusgps-41.0.0}/docs/source/wialon/examples.rst +0 -0
  294. {python_terminusgps-40.1.4 → python_terminusgps-41.0.0}/docs/source/wialon/flags.rst +0 -0
  295. {python_terminusgps-40.1.4 → python_terminusgps-41.0.0}/docs/source/wialon/index.rst +0 -0
  296. {python_terminusgps-40.1.4 → python_terminusgps-41.0.0}/docs/source/wialon/items.rst +0 -0
  297. {python_terminusgps-40.1.4 → python_terminusgps-41.0.0}/docs/source/wialon/session.rst +0 -0
  298. {python_terminusgps-40.1.4 → python_terminusgps-41.0.0}/docs/source/wialon/utils.rst +0 -0
  299. {python_terminusgps-40.1.4 → python_terminusgps-41.0.0}/terminusgps/__init__.py +0 -0
  300. {python_terminusgps-40.1.4 → python_terminusgps-41.0.0}/terminusgps/authorizenet/__init__.py +0 -0
  301. {python_terminusgps-40.1.4 → python_terminusgps-41.0.0}/terminusgps/authorizenet/auth.py +0 -0
  302. {python_terminusgps-40.1.4 → python_terminusgps-41.0.0}/terminusgps/authorizenet/constants.py +0 -0
  303. {python_terminusgps-40.1.4 → python_terminusgps-41.0.0}/terminusgps/authorizenet/controllers.py +0 -0
  304. {python_terminusgps-40.1.4 → python_terminusgps-41.0.0}/terminusgps/authorizenet/profiles/__init__.py +0 -0
  305. {python_terminusgps-40.1.4 → python_terminusgps-41.0.0}/terminusgps/authorizenet/profiles/addresses.py +0 -0
  306. {python_terminusgps-40.1.4 → python_terminusgps-41.0.0}/terminusgps/authorizenet/profiles/customers.py +0 -0
  307. {python_terminusgps-40.1.4 → python_terminusgps-41.0.0}/terminusgps/authorizenet/profiles/payments.py +0 -0
  308. {python_terminusgps-40.1.4 → python_terminusgps-41.0.0}/terminusgps/authorizenet/subscriptions.py +0 -0
  309. {python_terminusgps-40.1.4 → python_terminusgps-41.0.0}/terminusgps/authorizenet/utils.py +0 -0
  310. {python_terminusgps-40.1.4 → python_terminusgps-41.0.0}/terminusgps/authorizenet/validators.py +0 -0
  311. {python_terminusgps-40.1.4 → python_terminusgps-41.0.0}/terminusgps/django/__init__.py +0 -0
  312. {python_terminusgps-40.1.4 → python_terminusgps-41.0.0}/terminusgps/django/forms/__init__.py +0 -0
  313. {python_terminusgps-40.1.4 → python_terminusgps-41.0.0}/terminusgps/django/forms/fields.py +0 -0
  314. {python_terminusgps-40.1.4 → python_terminusgps-41.0.0}/terminusgps/django/forms/forms.py +0 -0
  315. {python_terminusgps-40.1.4 → python_terminusgps-41.0.0}/terminusgps/django/forms/renderer.py +0 -0
  316. {python_terminusgps-40.1.4 → python_terminusgps-41.0.0}/terminusgps/django/forms/widgets.py +0 -0
  317. {python_terminusgps-40.1.4 → python_terminusgps-41.0.0}/terminusgps/django/mixins.py +0 -0
  318. {python_terminusgps-40.1.4 → python_terminusgps-41.0.0}/terminusgps/django/settings.py +0 -0
  319. {python_terminusgps-40.1.4 → python_terminusgps-41.0.0}/terminusgps/django/utils.py +0 -0
  320. {python_terminusgps-40.1.4 → python_terminusgps-41.0.0}/terminusgps/django/validators.py +0 -0
  321. {python_terminusgps-40.1.4 → python_terminusgps-41.0.0}/terminusgps/wialon/__init__.py +0 -0
  322. {python_terminusgps-40.1.4 → python_terminusgps-41.0.0}/terminusgps/wialon/flags.py +0 -0
  323. {python_terminusgps-40.1.4 → python_terminusgps-41.0.0}/terminusgps/wialon/session.py +0 -0
  324. {python_terminusgps-40.1.4 → 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.4
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.4"
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
  ]
@@ -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
+ )