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
slm/signals.py ADDED
@@ -0,0 +1,250 @@
1
+ """
2
+ All SLM specific signals sent by the system are defined here. These signals
3
+ mostly include events relating to the site log edit/moderate/publish lifecycle.
4
+
5
+ All signals contain a request object that holds the request that initiated the
6
+ event. This object is provided mostly for logging purposes and is not
7
+ guaranteed to be non-null.
8
+ """
9
+
10
+ import sys
11
+
12
+ from django.dispatch import Signal
13
+ from django.utils.module_loading import import_string
14
+
15
+ """
16
+ Signal sent when a new site is proposed.
17
+
18
+ :param sender: The sending object (unreliable).
19
+ :param site: The Site object.
20
+ :param user: The user that proposed the new site.
21
+ :param timestamp: The time the request was received
22
+ :param request: The Django request object that initiated the proposal.
23
+ :param agencies: The Agencies identified by the requester as the
24
+ responsible agencies.
25
+ :param kwargs: Misc other key word arguments
26
+ """
27
+ site_proposed = Signal()
28
+
29
+ """
30
+ Sent when a site log is published, or when a section of a site log is
31
+ published.
32
+
33
+ :param sender: The sending object (unreliable).
34
+ :param site: The Site object.
35
+ :param user: The user that published the site log.
36
+ :param timestamp: The time the site log was published.
37
+ :param request: The Django request object that initiated the publish.
38
+ :param section: None if the entire site log was published, if an individual
39
+ section was published this will be the Section object instance.
40
+ :param kwargs: Misc other key word arguments
41
+ """
42
+ site_published = Signal()
43
+
44
+ """
45
+ Sent when a site log is published, or when a section of a site log is
46
+ published. Its possible that both the previous and new status states are
47
+ Published. If this happens a site log was edited and published simultaneously.
48
+ The published timestamp will have increased.
49
+
50
+ :param sender: The sending object (unreliable).
51
+ :param site: The Site object.
52
+ :param previous_status: The previous status
53
+ :param new_status: The new status
54
+ :param kwargs: Misc other key word arguments
55
+ """
56
+ site_status_changed = Signal()
57
+
58
+ """
59
+ Sent when a site log section is edited.
60
+
61
+ :param sender: The sending object (unreliable).
62
+ :param site: The Site object.
63
+ :param user: The user that edited the site log section.
64
+ :param timestamp: The time the site log section was edited.
65
+ :param request: The Django request object that contained the edit.
66
+ :param section: The section object that was edited.
67
+ :param fields: The list of edited fields
68
+ :param kwargs: Misc other key word arguments
69
+ """
70
+ section_edited = Signal()
71
+
72
+ """
73
+ Sent when a site log section is added.
74
+
75
+ :param sender: The sending object (unreliable).
76
+ :param site: The Site object.
77
+ :param user: The user that added the site log section.
78
+ :param timestamp: The time the site log section was added.
79
+ :param request: The Django request object that contained the add.
80
+ :param section: The section object that was added.
81
+ :param kwargs: Misc other key word arguments
82
+ """
83
+ section_added = Signal()
84
+
85
+ """
86
+ Sent when a site log section is deleted.
87
+
88
+ :param sender: The sending object (unreliable).
89
+ :param site: The Site object.
90
+ :param user: The user that deleted the site log section.
91
+ :param timestamp: The time the site log section was deleted.
92
+ :param request: The Django request object that contained the delete.
93
+ :param section: The section object that was deleted.
94
+ :param kwargs: Misc other key word arguments
95
+ """
96
+ section_deleted = Signal()
97
+
98
+ """
99
+ Sent when a site log section has fields flagged.
100
+
101
+ :param sender: The sending object (unreliable).
102
+ :param site: The Site object.
103
+ :param user: The user that added the flags or performed the action that caused
104
+ the flags to be added.
105
+ :param timestamp: The time the site log section was flagged.
106
+ :param request: The Django request object that added or triggered the flags.
107
+ :param section: The section object concerned.
108
+ :param fields: The list of fields that were flagged.
109
+ :param kwargs: Misc other key word arguments
110
+ """
111
+ fields_flagged = Signal()
112
+
113
+ """
114
+ Sent when a site log section has fields flagged.
115
+
116
+ :param sender: The sending object (unreliable).
117
+ :param site: The Site object.
118
+ :param user: The user that removed the flags or performed the action that
119
+ caused the flags to be removed.
120
+ :param timestamp: The time the site log section was flagged.
121
+ :param request: The Django request object that removed or triggered the flags
122
+ to be cleared.
123
+ :param section: The section object concerned.
124
+ :param fields: The list of fields that were cleared of flags.
125
+ :param clear: True if the section has no remaining flags - false otherwise.
126
+ :param kwargs: Misc other key word arguments
127
+ """
128
+ flags_cleared = Signal()
129
+
130
+ """
131
+ Sent when a user uploads a site log.
132
+
133
+ :param sender: The sending object (unreliable).
134
+ :param site: The Site object.
135
+ :param user: The user that uploaded the site log.
136
+ :param timestamp: The time the site log was uploaded.
137
+ :param request: The Django request object that contained the upload.
138
+ :param upload: The uploaded file (SiteFileUpload).
139
+ :param kwargs: Misc other key word arguments
140
+ """
141
+ site_file_uploaded = Signal()
142
+
143
+ """
144
+ Sent when a moderator publishes a site file upload - could be an attachment or
145
+ an image.
146
+
147
+ :param sender: The sending object (unreliable).
148
+ :param site: The Site object.
149
+ :param user: The user that published the file.
150
+ :param timestamp: The time the file was published.
151
+ :param request: The Django request object that contained the upload.
152
+ :param upload: The uploaded file (SiteFileUpload).
153
+ :param kwargs: Misc other key word arguments
154
+ """
155
+ site_file_published = Signal()
156
+
157
+
158
+ """
159
+ Sent when a moderator unpublishes a site file upload - could be an attachment
160
+ or an image.
161
+
162
+ :param sender: The sending object (unreliable).
163
+ :param site: The Site object.
164
+ :param user: The user that unpublished the file.
165
+ :param timestamp: The time the file was unpublished.
166
+ :param request: The Django request object that contained the upload.
167
+ :param upload: The uploaded file (SiteFileUpload).
168
+ :param kwargs: Misc other key word arguments
169
+ """
170
+ site_file_unpublished = Signal()
171
+
172
+
173
+ """
174
+ Sent when a user deletes a site file upload through the API. The file must be
175
+ a type other than a site log - could be an attachment or an image.
176
+
177
+ :param sender: The sending object (unreliable).
178
+ :param site: The Site object.
179
+ :param user: The user that deleted the file.
180
+ :param timestamp: The time the file was deleted.
181
+ :param request: The Django request object that contained the upload.
182
+ :param upload: The uploaded file (SiteFileUpload).
183
+ :param kwargs: Misc other key word arguments
184
+ """
185
+ site_file_deleted = Signal()
186
+
187
+
188
+ """
189
+ Sent when a user requests a site log be reviewed and published by moderators.
190
+
191
+ :param sender: The sending object (unreliable).
192
+ :param site: The site the reviews were requested for.
193
+ :param detail: The user given reasons for requesting the update (if any).
194
+ :param request: The Django request object that contained the request.
195
+ :param kwargs: Misc other key word arguments
196
+ """
197
+ review_requested = Signal()
198
+
199
+ """
200
+ Sent when a moderator rejects edits requested for publish in a review request.
201
+
202
+ :param sender: The sending object (unreliable).
203
+ :param site: The site the updates were rejected for.
204
+ :param detail: The user given reasons for rejecting the update (if any).
205
+ :param request: The Django request object that contained the rejection.
206
+ :param kwargs: Misc other key word arguments
207
+ """
208
+ updates_rejected = Signal()
209
+
210
+ """
211
+ Sent when an alert is issued.
212
+
213
+ :param sender: The sending object (unreliable).
214
+ :param alert: The alert object that was issued.
215
+ :param kwargs: Misc other key word arguments
216
+ """
217
+ alert_issued = Signal()
218
+
219
+ """
220
+ Sent when an alert is cleared.
221
+
222
+ :param sender: The sending object (unreliable).
223
+ :param alert: The alert object that was issued.
224
+ :param kwargs: Misc other key word arguments
225
+ """
226
+ alert_cleared = Signal()
227
+
228
+
229
+ _signal_names_ = {
230
+ value: f"slm.signals.{key}"
231
+ for key, value in sys._getframe().f_globals.items()
232
+ if isinstance(value, Signal)
233
+ }
234
+
235
+
236
+ def signal_name(signal):
237
+ """
238
+ Given a signal object - try to determine its name (import path). This is
239
+ not easy and prone to failure so don't use it for anything critical.
240
+ """
241
+ if not isinstance(signal, Signal):
242
+ return signal
243
+ name = _signal_names_.get(signal, None)
244
+ if name:
245
+ return name
246
+ return {
247
+ value: f"{signal.__module__}.{key}"
248
+ for key, value in vars(import_string(signal.__module__)).items()
249
+ if isinstance(value, Signal)
250
+ }.get(signal, str(signal))
slm/singleton.py ADDED
@@ -0,0 +1,49 @@
1
+ from django.core.cache import cache
2
+ from django.db import models
3
+
4
+
5
+ class _Singleton(type):
6
+ _instances = {}
7
+
8
+ def __call__(cls, *args, **kwargs):
9
+ if cls not in cls._instances:
10
+ cls._instances[cls] = super(_Singleton, cls).__call__(*args, **kwargs)
11
+
12
+ return cls._instances[cls]
13
+
14
+ @classmethod
15
+ def is_instantiated(cls, typ):
16
+ return typ in cls._instances
17
+
18
+ @classmethod
19
+ def destroy(cls, typ):
20
+ if typ in cls._instances:
21
+ del cls._instances[typ]
22
+
23
+
24
+ class Singleton(_Singleton("SingletonMeta", (object,), {})):
25
+ pass
26
+
27
+
28
+ class SingletonModel(models.Model):
29
+ class Meta:
30
+ abstract = True
31
+
32
+ def delete(self, *args, **kwargs):
33
+ pass
34
+
35
+ def save(self, *args, **kwargs):
36
+ self.pk = 1
37
+ super(SingletonModel, self).save(*args, **kwargs)
38
+ self.set_cache()
39
+
40
+ @classmethod
41
+ def load(cls):
42
+ if cache.get(cls.__name__) is None:
43
+ obj, created = cls.objects.get_or_create(pk=1)
44
+ if not created:
45
+ obj.set_cache()
46
+ return cache.get(cls.__name__)
47
+
48
+ def set_cache(self):
49
+ cache.set(self.__class__.__name__, self)
@@ -0,0 +1,204 @@
1
+ /*
2
+
3
+ This CSS file contains some tweaks specific to the included Bootstrap theme.
4
+ It's separate from `style.css` so that it can be easily overridden by replacing
5
+ a single block in the template.
6
+
7
+ */
8
+
9
+ .form-actions {
10
+ background: transparent;
11
+ border-top-color: transparent;
12
+ padding-top: 0;
13
+ text-align: right;
14
+ }
15
+
16
+ #generic-content-form textarea {
17
+ font-family:Consolas,Monaco,Lucida Console,Liberation Mono,DejaVu Sans Mono,Bitstream Vera Sans Mono,Courier New, monospace;
18
+ font-size: 80%;
19
+ }
20
+
21
+ .navbar-dark .navbar-brand {
22
+ color: #999999;
23
+ }
24
+ .navbar-inverse .navbar-brand:hover {
25
+ color: white;
26
+ text-decoration: none;
27
+ }
28
+
29
+ /* custom navigation styles */
30
+ .navbar {
31
+ width: 100%;
32
+ position: fixed;
33
+ left: 0;
34
+ top: 0;
35
+ }
36
+
37
+ .navbar {
38
+ background: #2C2C2C;
39
+ color: white;
40
+ border: none;
41
+ border-top: 5px solid #A30000;
42
+ border-radius: 0px;
43
+ }
44
+
45
+ .navbar .nav li, .navbar .nav li a, .navbar .brand:hover {
46
+ color: white;
47
+ }
48
+
49
+ .nav-list > .active > a, .nav-list > .active > a:hover {
50
+ background: #2C2C2C;
51
+ }
52
+
53
+ .navbar .dropdown-menu li a, .navbar .dropdown-menu li {
54
+ color: #A30000;
55
+ }
56
+
57
+ .navbar .dropdown-menu li a:hover {
58
+ background: #EEEEEE;
59
+ color: #C20000;
60
+ }
61
+
62
+ ul.breadcrumb {
63
+ margin: 70px 0 0 0;
64
+ }
65
+
66
+ .breadcrumb li.active a {
67
+ color: #777;
68
+ }
69
+
70
+ .pagination>.disabled>a,
71
+ .pagination>.disabled>a:hover,
72
+ .pagination>.disabled>a:focus {
73
+ cursor: not-allowed;
74
+ pointer-events: none;
75
+ }
76
+
77
+ .pager>.disabled>a,
78
+ .pager>.disabled>a:hover,
79
+ .pager>.disabled>a:focus {
80
+ pointer-events: none;
81
+ }
82
+
83
+ .pager .next {
84
+ margin-left: 10px;
85
+ }
86
+
87
+ /*=== dabapps bootstrap styles ====*/
88
+
89
+ html {
90
+ width:100%;
91
+ background: none;
92
+ }
93
+
94
+ /*body, .navbar .container-fluid {
95
+ max-width: 1150px;
96
+ margin: 0 auto;
97
+ }*/
98
+
99
+ body {
100
+ background: url("../img/grid.png") repeat-x;
101
+ background-attachment: fixed;
102
+ }
103
+
104
+ #content {
105
+ margin: 0;
106
+ padding-bottom: 60px;
107
+ }
108
+
109
+ /* sticky footer and footer */
110
+ html, body {
111
+ height: 100%;
112
+ }
113
+
114
+ .wrapper {
115
+ position: relative;
116
+ top: 0;
117
+ left: 0;
118
+ padding-top: 60px;
119
+ margin: -60px 0;
120
+ min-height: 100%;
121
+ }
122
+
123
+ .form-switcher {
124
+ margin-bottom: 0;
125
+ }
126
+
127
+ .nav-tabs {
128
+ border: 0;
129
+ }
130
+
131
+ .nav-tabs > li {
132
+ float: right;
133
+ }
134
+
135
+ .nav-tabs li a {
136
+ margin-right: 0;
137
+ }
138
+
139
+ .nav-tabs > .active > a {
140
+ background: #F5F5F5;
141
+ }
142
+
143
+ .nav-tabs > .active > a:hover {
144
+ background: #F5F5F5;
145
+ }
146
+
147
+ .tabbable.first-tab-active .tab-content {
148
+ border-top-right-radius: 0;
149
+ }
150
+
151
+ footer {
152
+ position: absolute;
153
+ bottom: 0;
154
+ left: 0;
155
+ clear: both;
156
+ z-index: 10;
157
+ height: 60px;
158
+ width: 95%;
159
+ margin: 0 2.5%;
160
+ }
161
+
162
+ footer p {
163
+ text-align: center;
164
+ color: gray;
165
+ border-top: 1px solid #DDDDDD;
166
+ padding-top: 10px;
167
+ }
168
+
169
+ footer a {
170
+ color: gray !important;
171
+ font-weight: bold;
172
+ }
173
+
174
+ footer a:hover {
175
+ color: gray;
176
+ }
177
+
178
+ .page-header {
179
+ border-bottom: none;
180
+ padding-bottom: 0px;
181
+ margin: 0;
182
+ }
183
+
184
+ /* custom general page styles */
185
+ .hero-unit h1, .hero-unit h2 {
186
+ color: #A30000;
187
+ }
188
+
189
+ body a {
190
+ color: #A30000;
191
+ }
192
+
193
+ body a:hover {
194
+ color: #c20000;
195
+ }
196
+
197
+ .request-info {
198
+ clear:both;
199
+ }
200
+
201
+ .modal-footer form {
202
+ margin-left: 5px;
203
+ margin-right: 5px;
204
+ }