igs-slm 0.1.0b0__py3-none-any.whl

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 (447) hide show
  1. igs_slm-0.1.0b0.dist-info/LICENSE +21 -0
  2. igs_slm-0.1.0b0.dist-info/METADATA +151 -0
  3. igs_slm-0.1.0b0.dist-info/RECORD +447 -0
  4. igs_slm-0.1.0b0.dist-info/WHEEL +4 -0
  5. igs_slm-0.1.0b0.dist-info/entry_points.txt +3 -0
  6. igs_tools/__init__.py +0 -0
  7. igs_tools/connection.py +88 -0
  8. igs_tools/defines/__init__.py +8 -0
  9. igs_tools/defines/constellation.py +21 -0
  10. igs_tools/defines/data_center.py +75 -0
  11. igs_tools/defines/rinex.py +49 -0
  12. igs_tools/directory.py +247 -0
  13. igs_tools/utils.py +66 -0
  14. slm/__init__.py +21 -0
  15. slm/admin.py +674 -0
  16. slm/api/edit/__init__.py +0 -0
  17. slm/api/edit/serializers.py +316 -0
  18. slm/api/edit/views.py +1632 -0
  19. slm/api/fields.py +89 -0
  20. slm/api/filter.py +504 -0
  21. slm/api/pagination.py +55 -0
  22. slm/api/permissions.py +65 -0
  23. slm/api/public/__init__.py +0 -0
  24. slm/api/public/serializers.py +249 -0
  25. slm/api/public/views.py +606 -0
  26. slm/api/serializers.py +132 -0
  27. slm/api/views.py +148 -0
  28. slm/apps.py +323 -0
  29. slm/authentication.py +198 -0
  30. slm/bin/__init__.py +0 -0
  31. slm/bin/startproject.py +262 -0
  32. slm/bin/templates/{{ project_dir }}/pyproject.toml +35 -0
  33. slm/bin/templates/{{ project_dir }}/sites/__init__.py +0 -0
  34. slm/bin/templates/{{ project_dir }}/sites/{{ site }}/__init__.py +0 -0
  35. slm/bin/templates/{{ project_dir }}/sites/{{ site }}/base.py +15 -0
  36. slm/bin/templates/{{ project_dir }}/sites/{{ site }}/develop/__init__.py +56 -0
  37. slm/bin/templates/{{ project_dir }}/sites/{{ site }}/develop/local.py +4 -0
  38. slm/bin/templates/{{ project_dir }}/sites/{{ site }}/develop/wsgi.py +16 -0
  39. slm/bin/templates/{{ project_dir }}/sites/{{ site }}/manage.py +34 -0
  40. slm/bin/templates/{{ project_dir }}/sites/{{ site }}/production/__init__.py +61 -0
  41. slm/bin/templates/{{ project_dir }}/sites/{{ site }}/production/wsgi.py +16 -0
  42. slm/bin/templates/{{ project_dir }}/sites/{{ site }}/urls.py +7 -0
  43. slm/bin/templates/{{ project_dir }}/sites/{{ site }}/validation.py +11 -0
  44. slm/bin/templates/{{ project_dir }}/{{ extension_app }}/__init__.py +0 -0
  45. slm/bin/templates/{{ project_dir }}/{{ extension_app }}/admin.py +5 -0
  46. slm/bin/templates/{{ project_dir }}/{{ extension_app }}/apps.py +14 -0
  47. slm/bin/templates/{{ project_dir }}/{{ extension_app }}/management/__init__.py +0 -0
  48. slm/bin/templates/{{ project_dir }}/{{ extension_app }}/management/commands/__init__.py +0 -0
  49. slm/bin/templates/{{ project_dir }}/{{ extension_app }}/management/commands/import_archive.py +64 -0
  50. slm/bin/templates/{{ project_dir }}/{{ extension_app }}/migrations/__init__.py +0 -0
  51. slm/bin/templates/{{ project_dir }}/{{ extension_app }}/models.py +6 -0
  52. slm/bin/templates/{{ project_dir }}/{{ extension_app }}/templates/slm/base.html +8 -0
  53. slm/bin/templates/{{ project_dir }}/{{ extension_app }}/urls.py +10 -0
  54. slm/bin/templates/{{ project_dir }}/{{ extension_app }}/views.py +5 -0
  55. slm/defines/AlertLevel.py +24 -0
  56. slm/defines/AntennaCalibration.py +25 -0
  57. slm/defines/AntennaFeatures.py +27 -0
  58. slm/defines/AntennaReferencePoint.py +22 -0
  59. slm/defines/Aspiration.py +13 -0
  60. slm/defines/CardinalDirection.py +19 -0
  61. slm/defines/CollocationStatus.py +12 -0
  62. slm/defines/EquipmentState.py +22 -0
  63. slm/defines/FlagSeverity.py +14 -0
  64. slm/defines/FractureSpacing.py +15 -0
  65. slm/defines/FrequencyStandardType.py +15 -0
  66. slm/defines/GeodesyMLVersion.py +48 -0
  67. slm/defines/ISOCountry.py +1194 -0
  68. slm/defines/Instrumentation.py +19 -0
  69. slm/defines/LogEntryType.py +30 -0
  70. slm/defines/SLMFileType.py +18 -0
  71. slm/defines/SiteFileUploadStatus.py +61 -0
  72. slm/defines/SiteLogFormat.py +49 -0
  73. slm/defines/SiteLogStatus.py +78 -0
  74. slm/defines/TectonicPlates.py +28 -0
  75. slm/defines/__init__.py +46 -0
  76. slm/forms.py +1126 -0
  77. slm/jinja2/slm/sitelog/ascii_9char.log +346 -0
  78. slm/jinja2/slm/sitelog/legacy.log +346 -0
  79. slm/jinja2/slm/sitelog/xsd/0.4/collocationInformation.xml +12 -0
  80. slm/jinja2/slm/sitelog/xsd/0.4/condition.xml +12 -0
  81. slm/jinja2/slm/sitelog/xsd/0.4/contact.xml +52 -0
  82. slm/jinja2/slm/sitelog/xsd/0.4/formInformation.xml +5 -0
  83. slm/jinja2/slm/sitelog/xsd/0.4/frequencyStandard.xml +12 -0
  84. slm/jinja2/slm/sitelog/xsd/0.4/gnssAntenna.xml +16 -0
  85. slm/jinja2/slm/sitelog/xsd/0.4/gnssReceiver.xml +11 -0
  86. slm/jinja2/slm/sitelog/xsd/0.4/humiditySensor.xml +13 -0
  87. slm/jinja2/slm/sitelog/xsd/0.4/localEpisodicEffect.xml +10 -0
  88. slm/jinja2/slm/sitelog/xsd/0.4/moreInformation.xml +22 -0
  89. slm/jinja2/slm/sitelog/xsd/0.4/multipathSource.xml +10 -0
  90. slm/jinja2/slm/sitelog/xsd/0.4/otherInstrumentation.xml +5 -0
  91. slm/jinja2/slm/sitelog/xsd/0.4/pressureSensor.xml +12 -0
  92. slm/jinja2/slm/sitelog/xsd/0.4/radioInterference.xml +11 -0
  93. slm/jinja2/slm/sitelog/xsd/0.4/sensor.xml +16 -0
  94. slm/jinja2/slm/sitelog/xsd/0.4/signalObstruction.xml +10 -0
  95. slm/jinja2/slm/sitelog/xsd/0.4/siteIdentification.xml +22 -0
  96. slm/jinja2/slm/sitelog/xsd/0.4/siteLocation.xml +21 -0
  97. slm/jinja2/slm/sitelog/xsd/0.4/surveyedLocalTie.xml +20 -0
  98. slm/jinja2/slm/sitelog/xsd/0.4/temperatureSensor.xml +13 -0
  99. slm/jinja2/slm/sitelog/xsd/0.4/waterVaporSensor.xml +11 -0
  100. slm/jinja2/slm/sitelog/xsd/0.5/document.xml +10 -0
  101. slm/jinja2/slm/sitelog/xsd/geodesyml_0.4.xml +99 -0
  102. slm/jinja2/slm/sitelog/xsd/geodesyml_0.5.xml +112 -0
  103. slm/management/__init__.py +0 -0
  104. slm/management/commands/__init__.py +53 -0
  105. slm/management/commands/build_index.py +96 -0
  106. slm/management/commands/generate_sinex.py +675 -0
  107. slm/management/commands/head_from_index.py +541 -0
  108. slm/management/commands/import_archive.py +908 -0
  109. slm/management/commands/import_equipment.py +351 -0
  110. slm/management/commands/set_site.py +56 -0
  111. slm/management/commands/sitelog.py +144 -0
  112. slm/management/commands/synchronize.py +60 -0
  113. slm/management/commands/update_data_availability.py +167 -0
  114. slm/management/commands/validate_db.py +186 -0
  115. slm/management/commands/validate_gml.py +73 -0
  116. slm/map/__init__.py +1 -0
  117. slm/map/admin.py +5 -0
  118. slm/map/api/__init__.py +0 -0
  119. slm/map/api/edit/__init__.py +0 -0
  120. slm/map/api/edit/serializers.py +28 -0
  121. slm/map/api/edit/views.py +46 -0
  122. slm/map/api/public/__init__.py +0 -0
  123. slm/map/api/public/serializers.py +29 -0
  124. slm/map/api/public/views.py +64 -0
  125. slm/map/apps.py +7 -0
  126. slm/map/defines.py +53 -0
  127. slm/map/migrations/0001_initial.py +115 -0
  128. slm/map/migrations/__init__.py +0 -0
  129. slm/map/models.py +63 -0
  130. slm/map/static/slm/css/map.css +86 -0
  131. slm/map/static/slm/js/map.js +159 -0
  132. slm/map/templates/slm/map.html +374 -0
  133. slm/map/templates/slm/station/base.html +11 -0
  134. slm/map/templates/slm/station/edit.html +10 -0
  135. slm/map/templates/slm/top_nav.html +17 -0
  136. slm/map/templatetags/__init__.py +0 -0
  137. slm/map/templatetags/slm_map.py +18 -0
  138. slm/map/urls.py +25 -0
  139. slm/map/views.py +36 -0
  140. slm/middleware.py +29 -0
  141. slm/migrations/0001_alter_siteantenna_marker_enu_alter_sitelocation_llh_and_more.py +47 -0
  142. slm/migrations/0001_initial.py +4826 -0
  143. slm/migrations/0002_alter_dataavailability_site.py +22 -0
  144. slm/migrations/0003_remove_logentry_slm_logentr_site_lo_7a2af7_idx_and_more.py +80 -0
  145. slm/migrations/0004_alter_logentry_timestamp_and_more.py +25 -0
  146. slm/migrations/0005_alter_logentry_options_alter_logentry_section_and_more.py +46 -0
  147. slm/migrations/0006_alter_logentry_options_alter_logentry_index_together.py +24 -0
  148. slm/migrations/0007_alter_dataavailability_rate.py +23 -0
  149. slm/migrations/0008_alter_archiveindex_options_and_more.py +64 -0
  150. slm/migrations/0009_alter_archiveindex_end.py +21 -0
  151. slm/migrations/0010_alter_dataavailability_rinex_version_and_more.py +844 -0
  152. slm/migrations/0011_alter_siteidentification_fracture_spacing.py +33 -0
  153. slm/migrations/0012_alter_logentry_type.py +36 -0
  154. slm/migrations/0013_unpublishedfilesalert.py +48 -0
  155. slm/migrations/0014_sitelogpublished.py +48 -0
  156. slm/migrations/0015_alter_siteantenna_options_and_more.py +181 -0
  157. slm/migrations/0016_alter_antenna_description_alter_radome_description_and_more.py +42 -0
  158. slm/migrations/0017_alter_logentry_unique_together_and_more.py +54 -0
  159. slm/migrations/0018_afix_deleted.py +34 -0
  160. slm/migrations/0018_alter_siteantenna_options_and_more.py +244 -0
  161. slm/migrations/0019_remove_siteantenna_marker_enu_siteantenna_marker_une_and_more.py +101 -0
  162. slm/migrations/0020_alter_manufacturer_options.py +16 -0
  163. slm/migrations/0021_alter_siteform_report_type.py +23 -0
  164. slm/migrations/0022_rename_antcal_antenna_radome_slm_antcal_antenna_20827a_idx_and_more.py +297 -0
  165. slm/migrations/0023_archivedsitelog_gml_version_and_more.py +55 -0
  166. slm/migrations/0024_alter_agency_name_alter_agency_shortname.py +24 -0
  167. slm/migrations/0025_alter_archivedsitelog_log_format_and_more.py +61 -0
  168. slm/migrations/0026_alter_archivedsitelog_log_format_and_more.py +61 -0
  169. slm/migrations/0027_importalert_file_contents_importalert_findings_and_more.py +41 -0
  170. slm/migrations/0028_antenna_replaced_manufacturer_url_radome_replaced_and_more.py +46 -0
  171. slm/migrations/0029_manufacturer_full_name.py +17 -0
  172. slm/migrations/0030_alter_antenna_state_alter_radome_state_and_more.py +43 -0
  173. slm/migrations/__init__.py +0 -0
  174. slm/migrations/load_satellitesystems.py +27 -0
  175. slm/models/__init__.py +118 -0
  176. slm/models/about.py +14 -0
  177. slm/models/alerts.py +1204 -0
  178. slm/models/data.py +58 -0
  179. slm/models/equipment.py +229 -0
  180. slm/models/help.py +14 -0
  181. slm/models/index.py +428 -0
  182. slm/models/sitelog.py +4279 -0
  183. slm/models/system.py +723 -0
  184. slm/models/user.py +304 -0
  185. slm/parsing/__init__.py +786 -0
  186. slm/parsing/legacy/__init__.py +4 -0
  187. slm/parsing/legacy/binding.py +817 -0
  188. slm/parsing/legacy/parser.py +377 -0
  189. slm/parsing/xsd/__init__.py +34 -0
  190. slm/parsing/xsd/binding.py +86 -0
  191. slm/parsing/xsd/geodesyml/0.4/commonTypes.xsd +133 -0
  192. slm/parsing/xsd/geodesyml/0.4/contact.xsd +29 -0
  193. slm/parsing/xsd/geodesyml/0.4/dataStreams.xsd +129 -0
  194. slm/parsing/xsd/geodesyml/0.4/document.xsd +64 -0
  195. slm/parsing/xsd/geodesyml/0.4/equipment.xsd +427 -0
  196. slm/parsing/xsd/geodesyml/0.4/fieldMeasurement.xsd +170 -0
  197. slm/parsing/xsd/geodesyml/0.4/geodesyML.xsd +71 -0
  198. slm/parsing/xsd/geodesyml/0.4/geodeticEquipment.xsd +343 -0
  199. slm/parsing/xsd/geodesyml/0.4/geodeticMonument.xsd +147 -0
  200. slm/parsing/xsd/geodesyml/0.4/lineage.xsd +614 -0
  201. slm/parsing/xsd/geodesyml/0.4/localInterferences.xsd +131 -0
  202. slm/parsing/xsd/geodesyml/0.4/measurement.xsd +473 -0
  203. slm/parsing/xsd/geodesyml/0.4/monumentInfo.xsd +251 -0
  204. slm/parsing/xsd/geodesyml/0.4/observationSystem.xsd +429 -0
  205. slm/parsing/xsd/geodesyml/0.4/project.xsd +38 -0
  206. slm/parsing/xsd/geodesyml/0.4/quality.xsd +176 -0
  207. slm/parsing/xsd/geodesyml/0.4/referenceFrame.xsd +194 -0
  208. slm/parsing/xsd/geodesyml/0.4/siteLog.xsd +71 -0
  209. slm/parsing/xsd/geodesyml/0.5/commonTypes.xsd +133 -0
  210. slm/parsing/xsd/geodesyml/0.5/contact.xsd +29 -0
  211. slm/parsing/xsd/geodesyml/0.5/dataStreams.xsd +129 -0
  212. slm/parsing/xsd/geodesyml/0.5/document.xsd +64 -0
  213. slm/parsing/xsd/geodesyml/0.5/equipment.xsd +427 -0
  214. slm/parsing/xsd/geodesyml/0.5/fieldMeasurement.xsd +170 -0
  215. slm/parsing/xsd/geodesyml/0.5/geodesyML.xsd +71 -0
  216. slm/parsing/xsd/geodesyml/0.5/geodeticEquipment.xsd +343 -0
  217. slm/parsing/xsd/geodesyml/0.5/geodeticMonument.xsd +147 -0
  218. slm/parsing/xsd/geodesyml/0.5/lineage.xsd +614 -0
  219. slm/parsing/xsd/geodesyml/0.5/localInterferences.xsd +131 -0
  220. slm/parsing/xsd/geodesyml/0.5/measurement.xsd +473 -0
  221. slm/parsing/xsd/geodesyml/0.5/monumentInfo.xsd +306 -0
  222. slm/parsing/xsd/geodesyml/0.5/observationSystem.xsd +429 -0
  223. slm/parsing/xsd/geodesyml/0.5/project.xsd +38 -0
  224. slm/parsing/xsd/geodesyml/0.5/quality.xsd +176 -0
  225. slm/parsing/xsd/geodesyml/0.5/referenceFrame.xsd +194 -0
  226. slm/parsing/xsd/geodesyml/0.5/siteLog.xsd +73 -0
  227. slm/parsing/xsd/parser.py +116 -0
  228. slm/parsing/xsd/resolver.py +28 -0
  229. slm/receivers/__init__.py +11 -0
  230. slm/receivers/alerts.py +87 -0
  231. slm/receivers/cleanup.py +41 -0
  232. slm/receivers/event_loggers.py +175 -0
  233. slm/receivers/index.py +67 -0
  234. slm/settings/__init__.py +55 -0
  235. slm/settings/auth.py +15 -0
  236. slm/settings/ckeditor.py +14 -0
  237. slm/settings/debug.py +47 -0
  238. slm/settings/internationalization.py +12 -0
  239. slm/settings/logging.py +113 -0
  240. slm/settings/platform/__init__.py +0 -0
  241. slm/settings/platform/darwin.py +10 -0
  242. slm/settings/rest.py +21 -0
  243. slm/settings/root.py +152 -0
  244. slm/settings/routines.py +43 -0
  245. slm/settings/secrets.py +37 -0
  246. slm/settings/security.py +5 -0
  247. slm/settings/slm.py +188 -0
  248. slm/settings/static_templates.py +53 -0
  249. slm/settings/templates.py +29 -0
  250. slm/settings/uploads.py +8 -0
  251. slm/settings/urls.py +126 -0
  252. slm/settings/validation.py +196 -0
  253. slm/signals.py +250 -0
  254. slm/singleton.py +49 -0
  255. slm/static/rest_framework/css/bootstrap-tweaks.css +204 -0
  256. slm/static/rest_framework/css/bootstrap.min.css +7 -0
  257. slm/static/rest_framework/css/bootstrap.min.css.map +1 -0
  258. slm/static/rest_framework/css/default.css +82 -0
  259. slm/static/rest_framework/css/prettify.css +30 -0
  260. slm/static/rest_framework/docs/css/base.css +344 -0
  261. slm/static/rest_framework/docs/css/highlight.css +125 -0
  262. slm/static/rest_framework/docs/css/jquery.json-view.min.css +11 -0
  263. slm/static/rest_framework/docs/img/favicon.ico +0 -0
  264. slm/static/rest_framework/docs/img/grid.png +0 -0
  265. slm/static/rest_framework/docs/js/api.js +321 -0
  266. slm/static/rest_framework/docs/js/highlight.pack.js +2 -0
  267. slm/static/rest_framework/docs/js/jquery.json-view.min.js +7 -0
  268. slm/static/rest_framework/img/grid.png +0 -0
  269. slm/static/rest_framework/js/ajax-form.js +127 -0
  270. slm/static/rest_framework/js/bootstrap.bundle.min.js +7 -0
  271. slm/static/rest_framework/js/bootstrap.bundle.min.js.map +1 -0
  272. slm/static/rest_framework/js/bootstrap.min.js.map +1 -0
  273. slm/static/rest_framework/js/coreapi-0.1.1.js +2043 -0
  274. slm/static/rest_framework/js/csrf.js +52 -0
  275. slm/static/rest_framework/js/default.js +47 -0
  276. slm/static/rest_framework/js/jquery-3.5.1.min.js +2 -0
  277. slm/static/rest_framework/js/prettify-min.js +28 -0
  278. slm/static/slm/css/admin.css +3 -0
  279. slm/static/slm/css/defines.css +82 -0
  280. slm/static/slm/css/forms.css +1 -0
  281. slm/static/slm/css/style.css +1004 -0
  282. slm/static/slm/img/email-branding.png +0 -0
  283. slm/static/slm/img/favicon.ico +0 -0
  284. slm/static/slm/img/login-bg.jpg +0 -0
  285. slm/static/slm/img/slm-logo.svg +4 -0
  286. slm/static/slm/js/autocomplete.js +341 -0
  287. slm/static/slm/js/enums.js +322 -0
  288. slm/static/slm/js/fileIcons.js +30 -0
  289. slm/static/slm/js/form.js +404 -0
  290. slm/static/slm/js/formWidget.js +23 -0
  291. slm/static/slm/js/persistable.js +33 -0
  292. slm/static/slm/js/slm.js +1028 -0
  293. slm/static/slm/js/time24.js +212 -0
  294. slm/static_templates/slm/css/defines.css +26 -0
  295. slm/static_templates/slm/js/enums.js +28 -0
  296. slm/static_templates/slm/js/fileIcons.js +16 -0
  297. slm/static_templates/slm/js/urls.js +5 -0
  298. slm/templates/account/base.html +20 -0
  299. slm/templates/account/email/base.html +43 -0
  300. slm/templates/account/email/base_message.txt +7 -0
  301. slm/templates/account/email/email_confirmation_message.html +16 -0
  302. slm/templates/account/email/email_confirmation_message.txt +7 -0
  303. slm/templates/account/email/email_confirmation_signup_message.html +1 -0
  304. slm/templates/account/email/email_confirmation_signup_message.txt +1 -0
  305. slm/templates/account/email/email_confirmation_signup_subject.txt +1 -0
  306. slm/templates/account/email/email_confirmation_subject.txt +4 -0
  307. slm/templates/account/email/password_reset_key_message.html +28 -0
  308. slm/templates/account/email/password_reset_key_message.txt +9 -0
  309. slm/templates/account/email/password_reset_key_subject.txt +4 -0
  310. slm/templates/account/email/unknown_account_message.html +25 -0
  311. slm/templates/account/email/unknown_account_message.txt +12 -0
  312. slm/templates/account/email/unknown_account_subject.txt +4 -0
  313. slm/templates/account/login.html +67 -0
  314. slm/templates/account/logout.html +38 -0
  315. slm/templates/account/password_change.html +48 -0
  316. slm/templates/account/password_reset.html +51 -0
  317. slm/templates/account/password_reset_done.html +20 -0
  318. slm/templates/account/password_reset_from_key.html +52 -0
  319. slm/templates/account/password_reset_from_key_done.html +17 -0
  320. slm/templates/admin/base.html +7 -0
  321. slm/templates/messages.html +8 -0
  322. slm/templates/rest_framework/README +16 -0
  323. slm/templates/rest_framework/admin/detail.html +10 -0
  324. slm/templates/rest_framework/admin/dict_value.html +11 -0
  325. slm/templates/rest_framework/admin/list.html +32 -0
  326. slm/templates/rest_framework/admin/list_value.html +11 -0
  327. slm/templates/rest_framework/admin/simple_list_value.html +2 -0
  328. slm/templates/rest_framework/admin.html +282 -0
  329. slm/templates/rest_framework/api.html +3 -0
  330. slm/templates/rest_framework/base.html +334 -0
  331. slm/templates/rest_framework/docs/auth/basic.html +42 -0
  332. slm/templates/rest_framework/docs/auth/session.html +40 -0
  333. slm/templates/rest_framework/docs/auth/token.html +41 -0
  334. slm/templates/rest_framework/docs/document.html +37 -0
  335. slm/templates/rest_framework/docs/error.html +71 -0
  336. slm/templates/rest_framework/docs/index.html +55 -0
  337. slm/templates/rest_framework/docs/interact.html +57 -0
  338. slm/templates/rest_framework/docs/langs/javascript-intro.html +5 -0
  339. slm/templates/rest_framework/docs/langs/javascript.html +15 -0
  340. slm/templates/rest_framework/docs/langs/python-intro.html +3 -0
  341. slm/templates/rest_framework/docs/langs/python.html +13 -0
  342. slm/templates/rest_framework/docs/langs/shell-intro.html +3 -0
  343. slm/templates/rest_framework/docs/langs/shell.html +6 -0
  344. slm/templates/rest_framework/docs/link.html +113 -0
  345. slm/templates/rest_framework/docs/sidebar.html +78 -0
  346. slm/templates/rest_framework/filters/base.html +16 -0
  347. slm/templates/rest_framework/filters/ordering.html +17 -0
  348. slm/templates/rest_framework/filters/search.html +13 -0
  349. slm/templates/rest_framework/horizontal/checkbox.html +23 -0
  350. slm/templates/rest_framework/horizontal/checkbox_multiple.html +32 -0
  351. slm/templates/rest_framework/horizontal/dict_field.html +11 -0
  352. slm/templates/rest_framework/horizontal/fieldset.html +16 -0
  353. slm/templates/rest_framework/horizontal/form.html +6 -0
  354. slm/templates/rest_framework/horizontal/input.html +21 -0
  355. slm/templates/rest_framework/horizontal/list_field.html +11 -0
  356. slm/templates/rest_framework/horizontal/list_fieldset.html +13 -0
  357. slm/templates/rest_framework/horizontal/radio.html +42 -0
  358. slm/templates/rest_framework/horizontal/select.html +36 -0
  359. slm/templates/rest_framework/horizontal/select_multiple.html +38 -0
  360. slm/templates/rest_framework/horizontal/textarea.html +21 -0
  361. slm/templates/rest_framework/inline/checkbox.html +8 -0
  362. slm/templates/rest_framework/inline/checkbox_multiple.html +14 -0
  363. slm/templates/rest_framework/inline/dict_field.html +9 -0
  364. slm/templates/rest_framework/inline/fieldset.html +6 -0
  365. slm/templates/rest_framework/inline/form.html +8 -0
  366. slm/templates/rest_framework/inline/input.html +9 -0
  367. slm/templates/rest_framework/inline/list_field.html +9 -0
  368. slm/templates/rest_framework/inline/list_fieldset.html +3 -0
  369. slm/templates/rest_framework/inline/radio.html +25 -0
  370. slm/templates/rest_framework/inline/select.html +24 -0
  371. slm/templates/rest_framework/inline/select_multiple.html +25 -0
  372. slm/templates/rest_framework/inline/textarea.html +9 -0
  373. slm/templates/rest_framework/login.html +3 -0
  374. slm/templates/rest_framework/login_base.html +65 -0
  375. slm/templates/rest_framework/pagination/numbers.html +47 -0
  376. slm/templates/rest_framework/pagination/previous_and_next.html +21 -0
  377. slm/templates/rest_framework/raw_data_form.html +11 -0
  378. slm/templates/rest_framework/schema.js +3 -0
  379. slm/templates/rest_framework/vertical/checkbox.html +16 -0
  380. slm/templates/rest_framework/vertical/checkbox_multiple.html +30 -0
  381. slm/templates/rest_framework/vertical/dict_field.html +7 -0
  382. slm/templates/rest_framework/vertical/fieldset.html +13 -0
  383. slm/templates/rest_framework/vertical/form.html +6 -0
  384. slm/templates/rest_framework/vertical/input.html +17 -0
  385. slm/templates/rest_framework/vertical/list_field.html +7 -0
  386. slm/templates/rest_framework/vertical/list_fieldset.html +7 -0
  387. slm/templates/rest_framework/vertical/radio.html +40 -0
  388. slm/templates/rest_framework/vertical/select.html +34 -0
  389. slm/templates/rest_framework/vertical/select_multiple.html +31 -0
  390. slm/templates/rest_framework/vertical/textarea.html +17 -0
  391. slm/templates/slm/about.html +21 -0
  392. slm/templates/slm/alerts/alert.html +15 -0
  393. slm/templates/slm/alerts/geodesymlinvalid.html +8 -0
  394. slm/templates/slm/alerts/importalert.html +10 -0
  395. slm/templates/slm/alerts.html +18 -0
  396. slm/templates/slm/auth_menu.html +41 -0
  397. slm/templates/slm/base.html +195 -0
  398. slm/templates/slm/emails/alert_issued.html +31 -0
  399. slm/templates/slm/emails/alert_issued.txt +9 -0
  400. slm/templates/slm/emails/base.html +6 -0
  401. slm/templates/slm/emails/changes_rejected.txt +7 -0
  402. slm/templates/slm/emails/review_requested.txt +7 -0
  403. slm/templates/slm/forms/widgets/auto_complete.html +21 -0
  404. slm/templates/slm/forms/widgets/auto_complete_multiple.html +18 -0
  405. slm/templates/slm/forms/widgets/checkbox_multiple.html +6 -0
  406. slm/templates/slm/forms/widgets/inline_multi.html +1 -0
  407. slm/templates/slm/forms/widgets/splitdatetime.html +14 -0
  408. slm/templates/slm/forms/widgets/time24.html +37 -0
  409. slm/templates/slm/help.html +54 -0
  410. slm/templates/slm/messages.html +13 -0
  411. slm/templates/slm/new_site.html +88 -0
  412. slm/templates/slm/profile.html +57 -0
  413. slm/templates/slm/register.html +40 -0
  414. slm/templates/slm/reports/file_log.html +43 -0
  415. slm/templates/slm/reports/head_log.html +23 -0
  416. slm/templates/slm/reports/head_report.html +55 -0
  417. slm/templates/slm/reports/index_log.html +23 -0
  418. slm/templates/slm/reports/index_report.html +71 -0
  419. slm/templates/slm/station/alert.html +8 -0
  420. slm/templates/slm/station/alerts.html +19 -0
  421. slm/templates/slm/station/base.html +104 -0
  422. slm/templates/slm/station/download.html +87 -0
  423. slm/templates/slm/station/edit.html +283 -0
  424. slm/templates/slm/station/form.html +110 -0
  425. slm/templates/slm/station/log.html +18 -0
  426. slm/templates/slm/station/review.html +461 -0
  427. slm/templates/slm/station/upload.html +295 -0
  428. slm/templates/slm/station/uploads/attachment.html +20 -0
  429. slm/templates/slm/station/uploads/geodesyml.html +1 -0
  430. slm/templates/slm/station/uploads/image.html +27 -0
  431. slm/templates/slm/station/uploads/json.html +0 -0
  432. slm/templates/slm/station/uploads/legacy.html +77 -0
  433. slm/templates/slm/top_nav.html +14 -0
  434. slm/templates/slm/user_activity.html +16 -0
  435. slm/templates/slm/widgets/alert_scroll.html +135 -0
  436. slm/templates/slm/widgets/filelist.html +258 -0
  437. slm/templates/slm/widgets/legend.html +12 -0
  438. slm/templates/slm/widgets/log_scroll.html +88 -0
  439. slm/templates/slm/widgets/stationlist.html +233 -0
  440. slm/templatetags/__init__.py +0 -0
  441. slm/templatetags/jinja2.py +9 -0
  442. slm/templatetags/slm.py +459 -0
  443. slm/urls.py +148 -0
  444. slm/utils.py +299 -0
  445. slm/validators.py +297 -0
  446. slm/views.py +654 -0
  447. slm/widgets.py +134 -0
@@ -0,0 +1,16 @@
1
+ """
2
+ WSGI config for SLM production deployment.
3
+
4
+ It exposes the WSGI callable as a module-level variable named ``application``.
5
+
6
+ For more information on this file, see
7
+ https://docs.djangoproject.com/en/stable/howto/deployment/wsgi/
8
+ """
9
+
10
+ import os
11
+
12
+ from django.core.wsgi import get_wsgi_application
13
+
14
+ os.environ.setdefault('DJANGO_SETTINGS_MODULE', "sites.{{ site }}.production")
15
+
16
+ application = get_wsgi_application()
@@ -0,0 +1,7 @@
1
+ from slm.settings.urls import urlpatterns
2
+ from django.urls import path, include
3
+
4
+ urlpatterns.extend([
5
+ {% if not include_map %}#{% endif %}path('', include('slm.map.urls')),
6
+ path('', include('{{ extension_app }}.urls')),
7
+ ])
@@ -0,0 +1,11 @@
1
+ {% if not use_igs_validation %}
2
+ # You selected to not use the IGS sitelog field validators by default, you may
3
+ # define your own validation configuration here. See slm.settings.validation
4
+ # module (https://github.com/International-GNSS-Service/SLM/blob/master/slm/settings/validation.py)
5
+ # for what the default settings are and documentation here (TODO) for the SLM's pluggable
6
+ # validation system.
7
+ SLM_REQUIRED_SECTIONS_TO_PUBLISH = []
8
+ SLM_DATA_VALIDATORS = {}
9
+
10
+ # You may delete this file to always use IGS's default validation routines
11
+ {% endif %}
@@ -0,0 +1,5 @@
1
+ """
2
+ Add additional admin interface components here.
3
+
4
+ https://docs.djangoproject.com/en/stable/ref/contrib/admin/
5
+ """
@@ -0,0 +1,14 @@
1
+ """
2
+ https://docs.djangoproject.com/en/stable/ref/applications/
3
+ """
4
+
5
+ from django.apps import AppConfig
6
+
7
+
8
+ class {{ extension_app_class }}Config(AppConfig):
9
+
10
+ name = "{{ extension_app }}"
11
+
12
+ def ready(self):
13
+ pass
14
+
@@ -0,0 +1,64 @@
1
+ """
2
+ Django has administrative management commands that are run in the boostrapped Django environment.
3
+ That means - with a live connection to the database and all of the Django internals loaded so
4
+ you may interface with the data via the ORM just as you do in request handling code.
5
+
6
+ The SLM provides a number of commands out of the box that do various common administrative tasks.
7
+ This command imports a sitelog file index from a given directory or tar file. It will be run
8
+ usually once at the beginning of your SLM deployment to import your current data. After that
9
+ data updates will be done by users through the web UI.
10
+
11
+ In Django, management commands can be overridden by apps futher up the app stack from the command's
12
+ original definition. We do that here with import_archive. We inherit from the SLM command and
13
+ stub out the process_filename hook. The default behavior will most likely suffice for your
14
+ deployment, but if your legacy data filenames differ from what is expected from the base
15
+ import_archive command you can handle that here. You may also delete this file if the default
16
+ implementation works for you. We provide this here as an example of extending an SLM defined
17
+ management command.
18
+
19
+ Management commands: https://docs.djangoproject.com/en/stable/howto/custom-management-commands/
20
+
21
+ We use django-typer to add extra goodies like typer hint CLI definitions and shell tab completion
22
+ support: https://django-typer.readthedocs.io/en/latest/
23
+
24
+ # todo slm management commands link
25
+ """
26
+
27
+ import typing as t
28
+ from slm.management.commands.import_archive import (
29
+ Command as ImportArchive,
30
+ FileMeta
31
+ )
32
+
33
+
34
+
35
+ class Command(ImportArchive):
36
+
37
+ def process_filename(
38
+ self, filename: str, site_name: str = "", mtime: t.Optional[int] = None
39
+ ) -> t.Optional[FileMeta]:
40
+ """
41
+ The base class calls this hook to process a filename. This method should return
42
+ a FileMeta object or None if this file is not a log file and/or uninterpretable
43
+ as a log file.
44
+
45
+ .. note::
46
+ We provide a hook here as an example of
47
+
48
+ :param filename: The name of the file, including the extension.
49
+ :param site_name: A string that might possibly be the site name and could
50
+ be used if no site name is determinable from the filename.
51
+ :return FileMeta or None if the filename was not interpretable
52
+ """
53
+ meta = super().process_filename(filename, site_name, mtime)
54
+ # todo - handle your special case!
55
+ # if meta is None:
56
+ # return FileMeta(
57
+ # filename=filename,
58
+ # name=site_name,
59
+ # mtime=mtime,
60
+ # format=?,
61
+ # file_date=?,
62
+ # no_day=?,
63
+ # )
64
+ return meta
@@ -0,0 +1,6 @@
1
+ """
2
+ https://docs.djangoproject.com/en/stable/topics/db/models/
3
+ """
4
+ from django.db import models
5
+
6
+ # TODO - add any data model extensions here!
@@ -0,0 +1,8 @@
1
+ {% extends "slm/base.html" %}
2
+ {% load static %}
3
+
4
+ {% block branding %}
5
+ <div class="d-flex align-items-center w-50">
6
+ <a href="{% url "slm:home" %}" class="navbar-brand"><img id="logo" class="me-4" src="{% static 'slm/img/slm-logo.svg' %}" alt="SLM"> Site Log Manager 2.0</a>
7
+ </div>
8
+ {% endblock branding %}
@@ -0,0 +1,10 @@
1
+ """
2
+ https://docs.djangoproject.com/en/stable/topics/http/urls/
3
+ """
4
+
5
+ from django.urls import path
6
+
7
+ app_name = "{{ extension_app }}"
8
+
9
+
10
+ urlpatterns = []
@@ -0,0 +1,5 @@
1
+ """
2
+ Add additional views here! Then you'll need to hook them up to
3
+
4
+ https://docs.djangoproject.com/en/stable/topics/http/views/
5
+ """
@@ -0,0 +1,24 @@
1
+ from django.utils.translation import gettext_lazy as _
2
+ from django_enum import IntegerChoices
3
+ from enum_properties import s
4
+
5
+
6
+ class AlertLevel(IntegerChoices):
7
+ _symmetric_builtins_ = [s("name", case_fold=True)]
8
+
9
+ NOTICE = 1, _("NOTICE")
10
+ WARNING = 2, _("WARNING")
11
+ ERROR = 3, _("ERROR")
12
+
13
+ def __str__(self):
14
+ return str(self.label)
15
+
16
+ @property
17
+ def css(self):
18
+ return f"slm-alert-{self.name.lower()}"
19
+
20
+ @property
21
+ def color(self):
22
+ from django.conf import settings
23
+
24
+ return getattr(settings, "SLM_ALERT_COLORS", {}).get(self, None)
@@ -0,0 +1,25 @@
1
+ from django_enum import IntegerChoices
2
+ from enum_properties import s
3
+
4
+
5
+ class AntennaCalibrationMethod(IntegerChoices):
6
+ _symmetric_builtins_ = [s("name", case_fold=True)]
7
+
8
+ CONVERTED = 0, "CONVERTED"
9
+ ROBOT = 1, "ROBOT"
10
+ FIELD = 2, "FIELD"
11
+ CHAMBER = 3, "CHAMBER"
12
+ COPIED = 4, "COPIED"
13
+
14
+ # todo real?
15
+ # ONE = 1, 'ONE',
16
+ # TWO = 2, 'TWO'
17
+ # FOUR = 4, 'FOUR'
18
+ # ESA = 5, 'ESA'
19
+ # SIX = 6, 'SIX'
20
+ # JAXA = 7, 'JAXA'
21
+ # ISRO = 8, 'ISRO'
22
+ # CSNO_TARC = 9, 'CSNO/TARC'
23
+
24
+ def __str__(self):
25
+ return str(self.label)
@@ -0,0 +1,27 @@
1
+ from django.utils.translation import gettext_lazy as _
2
+ from django_enum import IntegerChoices
3
+ from enum_properties import s
4
+
5
+
6
+ class AntennaFeatures(IntegerChoices):
7
+ _symmetric_builtins_ = [s("name", case_fold=True)]
8
+
9
+ MMI = 1, _("(MMI) Man-Machine Interface")
10
+ NOM = 2, _("(NOM) North Orientation Mark")
11
+ RXC = 3, _("(RXC) Receiver Connector")
12
+ BAT = 4, _("(BAT) Battery Compartment Door Release")
13
+ BTD = 5, _("(BTD) Bottom of Tear Drop Shape")
14
+ CMP = 6, _("(CMP) Mounted Compass")
15
+ DIS = 7, _("(DIS) Display/Digital Readout")
16
+ DRY = 8, _("(DRY) Cap or Cover for Drying Agent")
17
+ PCS = 9, _("(PCS) PC Card Slot")
18
+ TMT = 10, _("(TMT) Tape Measure Tab or Notch for Slant Height Pole")
19
+ CAC = 11, _("(CAC) Nonspecific Cable Connector")
20
+ CTC = 12, _("(CTC) External Controller Connector")
21
+ DAC = 13, _("(DAC) Data Cable Connector")
22
+ PWC = 14, _("(PWC) Power Port")
23
+ RTC = 15, _("(RTC) RTK Connector")
24
+ UNK = 16, _("(UNK) Unknown")
25
+
26
+ def __str__(self):
27
+ return self.name
@@ -0,0 +1,22 @@
1
+ from django.utils.translation import gettext_lazy as _
2
+ from django_enum import IntegerChoices
3
+ from enum_properties import p, s
4
+
5
+
6
+ class AntennaReferencePoint(IntegerChoices, p("title")):
7
+ _symmetric_builtins_ = [s("name", case_fold=True)]
8
+
9
+ # value label title
10
+ BAM = 1, _("BAM (Bottom of Antenna Mount)"), _("Bottom of Antenna Mount")
11
+ BCR = 2, _("BCR (Bottom of Chokering)"), _("Bottom of Chokering")
12
+ BDG = 3, _("BDG (Bottom of Dome Ground Plane)"), _("Bottom of Dome Ground Plane")
13
+ BGP = 4, _("BGP (Bottom of Ground Plane)"), _("Bottom of Ground Plane")
14
+ BPA = 5, _("BPA (Bottom of Preamplifier)"), _("Bottom of Preamplifier")
15
+ TCR = 6, _("TCR (Top of Chokering)"), _("Top of Chokering")
16
+ TDG = 7, _("TDG (Top of Dome Ground Plane)"), _("Top of Dome Ground Plane")
17
+ TGP = 8, _("TGP (Top of Ground Plane)"), _("Top of Ground Plane")
18
+ TOP = 9, _("TOP (Top of Pole)"), _("Top of Pole")
19
+ TPA = 10, _("TPA (Top of Preamplifier)"), _("Top of Preamplifier")
20
+
21
+ def __str__(self):
22
+ return self.name
@@ -0,0 +1,13 @@
1
+ from django_enum import TextChoices
2
+ from enum_properties import s
3
+
4
+
5
+ class Aspiration(TextChoices):
6
+ _symmetric_builtins_ = [s("name", case_fold=True), s("label", case_fold=True)]
7
+
8
+ UNASPIRATED = "U", "UNASPIRATED"
9
+ NATURAL = "N", "NATURAL"
10
+ FAN = "F", "FAN"
11
+
12
+ def __str__(self):
13
+ return str(self.label)
@@ -0,0 +1,19 @@
1
+ from django.utils.translation import gettext_lazy as _
2
+ from django_enum import TextChoices
3
+ from enum_properties import s
4
+
5
+
6
+ class CardinalDirection(TextChoices):
7
+ _symmetric_builtins_ = [s("name", case_fold=True)]
8
+
9
+ NORTH = "N", _("North")
10
+ SOUTH = "S", _("South")
11
+ EAST = "E", _("East")
12
+ WEST = "W", _("West")
13
+ NORTH_WEST = "NW", _("North West")
14
+ NORTH_EAST = "NE", _("North East")
15
+ SOUTH_WEST = "SW", _("South West")
16
+ SOUTH_EAST = "SE", _("South East")
17
+
18
+ def __str__(self):
19
+ return str(self.label)
@@ -0,0 +1,12 @@
1
+ from django_enum import TextChoices
2
+ from enum_properties import s
3
+
4
+
5
+ class CollocationStatus(TextChoices):
6
+ _symmetric_builtins_ = [s("name", case_fold=True), s("label", case_fold=True)]
7
+
8
+ PERMANENT = "P", "PERMANENT"
9
+ HOURLY = "M", "MOBILE"
10
+
11
+ def __str__(self):
12
+ return str(self.label)
@@ -0,0 +1,22 @@
1
+ from django.utils.translation import gettext_lazy as _
2
+ from django_enum import IntegerChoices
3
+ from enum_properties import p, s
4
+
5
+
6
+ class EquipmentState(IntegerChoices, p("help_text")):
7
+ _symmetric_builtins_ = [s("name", case_fold=True), s("label", case_fold=True)]
8
+
9
+ ACTIVE = 100, _("In Use"), _("This coding is in active use.")
10
+ LEGACY = (
11
+ 101,
12
+ _("Retired"),
13
+ _("This equipment coding has changed."),
14
+ )
15
+ UNVERIFIED = (
16
+ 102,
17
+ _("Unverified"),
18
+ _("This equipment coding has not been verified."),
19
+ )
20
+
21
+ def __str__(self):
22
+ return str(self.label)
@@ -0,0 +1,14 @@
1
+ from django.utils.translation import gettext_lazy as _
2
+ from django_enum import IntegerChoices
3
+ from enum_properties import s
4
+
5
+
6
+ class FlagSeverity(IntegerChoices):
7
+ _symmetric_builtins_ = [s("name", case_fold=True)]
8
+
9
+ BLOCK_SAVE = 1, _("Block Save")
10
+ BLOCK_PUBLISH = 2, _("Block Publish")
11
+ NOTIFY = 3, _("Notify")
12
+
13
+ def __str__(self):
14
+ return str(self.label)
@@ -0,0 +1,15 @@
1
+ from django_enum import TextChoices
2
+ from enum_properties import s
3
+
4
+
5
+ class FractureSpacing(TextChoices):
6
+ _symmetric_builtins_ = [s("name", case_fold=True), s("label", case_fold=True)]
7
+
8
+ ZERO = "0", "0 cm"
9
+ LESS_THAN_10_CM = "1", "1-10 cm"
10
+ MORE_THAN_11_LESS_THAN_50_CM = "11", "11-50 cm"
11
+ MORE_THAN_51_LESS_THAN_200_CM = "51", "51-200 cm"
12
+ OVER_200_CM = "200", "over 200 cm"
13
+
14
+ def __str__(self):
15
+ return str(self.label)
@@ -0,0 +1,15 @@
1
+ from django_enum import TextChoices
2
+ from enum_properties import s
3
+
4
+
5
+ class FrequencyStandardType(TextChoices, s("geodesy_ml", case_fold=True)):
6
+ _symmetric_builtins_ = [s("name", case_fold=True), s("label", case_fold=True)]
7
+
8
+ INTERNAL = "I", "INTERNAL", "INTERNAL"
9
+ EXTERNAL_H_MASER = "H", "EXTERNAL H-MASER", "H-MASER"
10
+ EXTERNAL_CESIUM = "C", "EXTERNAL CESIUM", "CESIUM"
11
+ EXTERNAL_RUBIDIUM = "R", "EXTERNAL RUBIDIUM", "RUBIDIUM"
12
+ EXTERNAL_QUARTZ = "Q", "EXTERNAL QUARTZ", "QUARTZ"
13
+
14
+ def __str__(self):
15
+ return str(self.label)
@@ -0,0 +1,48 @@
1
+ from pathlib import Path
2
+
3
+ from django.utils.functional import cached_property
4
+ from django_enum import IntegerChoices
5
+ from enum_properties import s
6
+
7
+
8
+ class GeodesyMLVersion(IntegerChoices, s("version"), s("xmlns", case_fold=True)):
9
+ _symmetric_builtins_ = [s("name", case_fold=True), s("label", case_fold=True)]
10
+
11
+ # name value label version xmlns
12
+ v0_4 = 1, "GeodesyML/0.4", 0.4, "urn:xml-gov-au:icsm:egeodesy:0.4"
13
+ v0_5 = 2, "GeodesyML/0.5", 0.5, "urn:xml-gov-au:icsm:egeodesy:0.5"
14
+
15
+ def __str__(self):
16
+ return self.label
17
+
18
+ @classmethod
19
+ def latest(cls):
20
+ return [ver for ver in cls][-1]
21
+
22
+ @cached_property
23
+ def schema(self):
24
+ from lxml.etree import XMLParser, XMLSchema, parse
25
+
26
+ from slm.parsing import xsd
27
+ from slm.parsing.xsd.resolver import CachedResolver
28
+
29
+ parser = XMLParser()
30
+ parser.resolvers.add(CachedResolver())
31
+ # todo - do this with importlib.resources ?
32
+ return XMLSchema(
33
+ etree=parse(
34
+ str(
35
+ Path(xsd.__path__[0])
36
+ / "geodesyml"
37
+ / str(self.version)
38
+ / "geodesyML.xsd"
39
+ ),
40
+ parser,
41
+ )
42
+ )
43
+
44
+ @cached_property
45
+ def template(self):
46
+ from django.template.loader import get_template
47
+
48
+ return get_template(f"slm/sitelog/xsd/geodesyml_{self.version}.xml")