igs-slm 0.1.5b3__py3-none-any.whl → 0.2.0b1__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.
- {igs_slm-0.1.5b3.dist-info → igs_slm-0.2.0b1.dist-info}/METADATA +2 -2
- {igs_slm-0.1.5b3.dist-info → igs_slm-0.2.0b1.dist-info}/RECORD +47 -34
- slm/__init__.py +1 -1
- slm/admin.py +40 -3
- slm/api/edit/views.py +37 -2
- slm/api/public/serializers.py +1 -1
- slm/defines/CoordinateMode.py +9 -0
- slm/defines/SiteLogFormat.py +19 -6
- slm/defines/__init__.py +24 -22
- slm/file_views/apps.py +7 -0
- slm/file_views/config.py +253 -0
- slm/file_views/settings.py +124 -0
- slm/file_views/static/slm/file_views/banner_header.png +0 -0
- slm/file_views/static/slm/file_views/css/listing.css +82 -0
- slm/file_views/templates/slm/file_views/listing.html +70 -0
- slm/file_views/urls.py +47 -0
- slm/file_views/views.py +472 -0
- slm/forms.py +22 -4
- slm/jinja2/slm/sitelog/ascii_9char.log +1 -1
- slm/jinja2/slm/sitelog/legacy.log +1 -1
- slm/management/commands/check_upgrade.py +25 -19
- slm/management/commands/generate_sinex.py +9 -7
- slm/map/settings.py +0 -0
- slm/migrations/0001_alter_archivedsitelog_size_and_more.py +44 -0
- slm/migrations/0032_archiveindex_valid_range_and_more.py +8 -1
- slm/migrations/simplify_daily_index_files.py +86 -0
- slm/models/index.py +73 -6
- slm/models/sitelog.py +6 -0
- slm/models/system.py +35 -2
- slm/parsing/__init__.py +10 -0
- slm/parsing/legacy/binding.py +3 -2
- slm/receivers/cache.py +25 -0
- slm/settings/root.py +22 -0
- slm/settings/routines.py +2 -0
- slm/settings/slm.py +58 -0
- slm/settings/urls.py +1 -1
- slm/settings/validation.py +5 -4
- slm/signals.py +3 -4
- slm/static/slm/js/enums.js +7 -6
- slm/static/slm/js/form.js +25 -14
- slm/static/slm/js/slm.js +4 -2
- slm/templatetags/slm.py +1 -1
- slm/utils.py +161 -36
- slm/validators.py +51 -0
- {igs_slm-0.1.5b3.dist-info → igs_slm-0.2.0b1.dist-info}/WHEEL +0 -0
- {igs_slm-0.1.5b3.dist-info → igs_slm-0.2.0b1.dist-info}/entry_points.txt +0 -0
- {igs_slm-0.1.5b3.dist-info → igs_slm-0.2.0b1.dist-info}/licenses/LICENSE +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: igs-slm
|
3
|
-
Version: 0.
|
3
|
+
Version: 0.2.0b1
|
4
4
|
Summary: IGS Site Log Manager
|
5
5
|
Project-URL: Homepage, https://igs-slm.readthedocs.io
|
6
6
|
Project-URL: Documentation, https://igs-slm.readthedocs.io
|
@@ -62,7 +62,7 @@ Requires-Dist: polyline<3.0.0,>=2.0.0
|
|
62
62
|
Requires-Dist: psycopg>=3.1
|
63
63
|
Requires-Dist: python-dateutil<3.0.0,>=2.8.2
|
64
64
|
Requires-Dist: requests<3.0.0,>=2.32.4
|
65
|
-
Requires-Dist: rich<
|
65
|
+
Requires-Dist: rich<15.0.0,>=13.7.1
|
66
66
|
Requires-Dist: tqdm<5.0.0,>=4.64.1
|
67
67
|
Provides-Extra: debug
|
68
68
|
Requires-Dist: django-debug-toolbar<5.0.0,>=4.1.0; extra == 'debug'
|
@@ -6,19 +6,19 @@ igs_tools/defines/__init__.py,sha256=iQyg6SLcDT1KMtK6XToUdCUqmSZnPKY1ztjdOcaKEB0
|
|
6
6
|
igs_tools/defines/constellation.py,sha256=Di0QX83YqACChVrxReKeQcjsQxY5G5bdp1e5iDeefNM,560
|
7
7
|
igs_tools/defines/data_center.py,sha256=gLoUebE90C4OeyvEqCx-1RY2C0Nq9N9rchPc7V--lqk,2895
|
8
8
|
igs_tools/defines/rinex.py,sha256=hHJzuqO5VZbroK6wznTxX0CEGB-WZea4S4F-lpJXKYc,1824
|
9
|
-
slm/__init__.py,sha256=
|
10
|
-
slm/admin.py,sha256=
|
9
|
+
slm/__init__.py,sha256=Rl1CQHbhnoyAjYk1nGbU8emAc92bfhvruCAtoPRglCI,995
|
10
|
+
slm/admin.py,sha256=01lyfEJw81hwn-5qmz3VeTc34H2OoGz_1B_3PMWZ9oA,20811
|
11
11
|
slm/apps.py,sha256=Tf3FBaYkjH57bqdh0r0KBFitsKl3aJe_uQE9iZNmOzc,11949
|
12
12
|
slm/authentication.py,sha256=pdckO48ApGTwbaHLJsc2IswSs8qM9W3BLVU8XkSAa4E,7141
|
13
13
|
slm/context.py,sha256=qZ7a9AA3cissQg7nIAa6MbTyEgL0_NCS5_b8bLXe9rs,107
|
14
|
-
slm/forms.py,sha256=
|
14
|
+
slm/forms.py,sha256=INUcxGT9lzN0BDwxHjVoHEjFm56gYgxPWetDO6iY1PI,37742
|
15
15
|
slm/manage.py,sha256=ITSajblGje31dnhLlPTLHvTvyuBIu9EYFoa5lTg1dxc,678
|
16
16
|
slm/middleware.py,sha256=fctCyOtky4m-1tYY7dTlCOh20tWkXnrFEU4lyR2vEOg,920
|
17
|
-
slm/signals.py,sha256=
|
17
|
+
slm/signals.py,sha256=sDrWZugTRKOuO4ZFixJ0jnrHZa6URhZc5QcJI9EQ4rg,8397
|
18
18
|
slm/singleton.py,sha256=FJTory_zsFWHnPFJs8vn5AFq8dE4R6jQmTkATZ56zM4,1172
|
19
19
|
slm/urls.py,sha256=ebuDpFro064poFAfp-IMULgy3AlIo-_UIj76oCBkG1I,5462
|
20
|
-
slm/utils.py,sha256=
|
21
|
-
slm/validators.py,sha256=
|
20
|
+
slm/utils.py,sha256=rIzZg5c4xJoFNgj5w5dEkk9cVKERrrRmpbsj2t1wT_g,12730
|
21
|
+
slm/validators.py,sha256=5Nnljc2O5VdwTwp542gCYCQ-EUf2Mkqmrec9DgMNvEw,11653
|
22
22
|
slm/views.py,sha256=LaIBjNCTuPEfSGNk4QP6Ok5hApCtr8Dj_pt-6Ad2ivA,24203
|
23
23
|
slm/widgets.py,sha256=X8FA_SiORQlBH0-7ZhSDpNwmraD9baSqtY2mDq3TCms,4470
|
24
24
|
slm/wsgi.py,sha256=hfye2xWZVnIvVioanjD6p-WwhcpG6vKp0kr70l2wrRU,405
|
@@ -30,9 +30,9 @@ slm/api/serializers.py,sha256=Xe2zA2exq9vTmEPh52JU3XLJGRSyEOZTTiAfnqDDAv4,4236
|
|
30
30
|
slm/api/views.py,sha256=CdVDqTQzT_f60Cx-ep6HhmNTklKuAUqCYY2ekTjfQMo,6261
|
31
31
|
slm/api/edit/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
32
32
|
slm/api/edit/serializers.py,sha256=epxqI-LUNokPwrakanqXpjN5cpRgdDV_hXJSFJ-7ikc,9467
|
33
|
-
slm/api/edit/views.py,sha256=
|
33
|
+
slm/api/edit/views.py,sha256=uP5B2y0T1nP_H7pXyD4uNdrxg571US9z08lSelwS_vM,67066
|
34
34
|
slm/api/public/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
35
|
-
slm/api/public/serializers.py,sha256=
|
35
|
+
slm/api/public/serializers.py,sha256=h_UeorRV1XrNV0V9JNiJnamYWTYH2XzRwWyZSpbqTq4,6685
|
36
36
|
slm/api/public/views.py,sha256=nZpFq1yaAA7yrR4hzCVBeNJ6z7DWpz5NBba-kSzKS9w,18515
|
37
37
|
slm/bin/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
38
38
|
slm/bin/startproject.py,sha256=0x2r1argbVjvu7-3dipK6zX1HOVOJn2pKX6x4HqYF3k,10133
|
@@ -66,6 +66,7 @@ slm/defines/AntennaReferencePoint.py,sha256=L1Dgnml_EFJS3z-NNtuIA0vh8NyTCVj19bSw
|
|
66
66
|
slm/defines/Aspiration.py,sha256=9sR6yI_t4gExhBtZ6lAx_iB0noDo8OlUUwhD0pGfBbY,366
|
67
67
|
slm/defines/CardinalDirection.py,sha256=zWQx-dcID4G-6l2iA4vokHi8ArGj3qeCqFY3lS-SjUU,591
|
68
68
|
slm/defines/CollocationStatus.py,sha256=ivU9m7LGba-k7PvoDjym6Hv0Vd4gdCcxAcRolNg7S7A,337
|
69
|
+
slm/defines/CoordinateMode.py,sha256=zZfyA9jaGFJUTNRQIL_6jnXdWl-WlsgfGhxG9couwlc,526
|
69
70
|
slm/defines/EquipmentState.py,sha256=OfSFbyxKz_KjCmWunBCYAbPOP57zad2rr_Td1xtMyUY,565
|
70
71
|
slm/defines/FlagSeverity.py,sha256=etrHxGxNGm1_gmtl0j8J5DlhfqUHCm4hckVoZUntfgE,418
|
71
72
|
slm/defines/FractureSpacing.py,sha256=dL3RYa67zV7FpOu1ZEP_un51yU1co3abQLnD6-E1Tug,541
|
@@ -76,12 +77,20 @@ slm/defines/Instrumentation.py,sha256=s0CV-BmZaBOEt_qt2Fsbc62bs1JSp-p_d5sBbj5I_r
|
|
76
77
|
slm/defines/LogEntryType.py,sha256=5R3kzC6CWnvWUL5yBa6NJ_0n4Mx4CsyT_GLUWqtEmfw,1159
|
77
78
|
slm/defines/SLMFileType.py,sha256=TmWyqoKwgk9C2rcYpvSPQkUTdNb33FpJcbM61Bd0WgE,552
|
78
79
|
slm/defines/SiteFileUploadStatus.py,sha256=3ACFvSOWFcoMF3xCmqk1qLE1kemNayKa7C-0icp3GFw,1506
|
79
|
-
slm/defines/SiteLogFormat.py,sha256=
|
80
|
+
slm/defines/SiteLogFormat.py,sha256=HDB7XuGGyM_7Wpqv_T65e7wyPpUe0j2YJzfz-wXElow,1442
|
80
81
|
slm/defines/SiteLogStatus.py,sha256=bvpjGi27C2hz8FCw2394KTxkQUwgcRKNmXQbxn4QgXw,1989
|
81
82
|
slm/defines/TectonicPlates.py,sha256=eaIf_LBAAJglZnYK6ec9-Eqj4C5L9oihvbq_j_qs3jE,959
|
82
|
-
slm/defines/__init__.py,sha256=
|
83
|
-
slm/
|
84
|
-
slm/
|
83
|
+
slm/defines/__init__.py,sha256=uNYhr_fyU9fMJ2C9SA_q5EVERHqGtGwAIR72v4vPNM4,1754
|
84
|
+
slm/file_views/apps.py,sha256=ZWN4U598HRNVYLP1iY9w43CTg6yPvcM8sAo56HTT-MM,166
|
85
|
+
slm/file_views/config.py,sha256=5g3QPydUWdmDZL-PN6lJzULmURUuZd3Lh_RfKgzJ-8Q,7020
|
86
|
+
slm/file_views/settings.py,sha256=B7toRTtZBkPAmMcTJgxhB3IaCvrW4dP_2yrm5DBF2yc,3340
|
87
|
+
slm/file_views/urls.py,sha256=B5Dh2xtJvBj7KkVSHwnMvuF9_mpbTfoyrlLy1srT1W8,1290
|
88
|
+
slm/file_views/views.py,sha256=Z4aA_44-NsCJTpxuXc3ZQfkXeUfT9by2Sy3JSectKPo,17555
|
89
|
+
slm/file_views/static/slm/file_views/banner_header.png,sha256=-whpDEIJSu7RU5HF-fS2SpXNUyP-XyCN3pf-QdiL9LM,77694
|
90
|
+
slm/file_views/static/slm/file_views/css/listing.css,sha256=Ep45zjwqD6-TvjDa2LLQ0K9g-SaQKSixmPmQb1Tv4ZY,1111
|
91
|
+
slm/file_views/templates/slm/file_views/listing.html,sha256=uwBMQZfTsEjDsAsf7a17kHFHPTRKKtestkRS_AKA_N0,2913
|
92
|
+
slm/jinja2/slm/sitelog/ascii_9char.log,sha256=KrcN_zSvke8YlKFzBFDcGaC--S4i4pW7F_Caxrg4I9c,24952
|
93
|
+
slm/jinja2/slm/sitelog/legacy.log,sha256=hynYir-5DpWmuaSZsKHIrOaK-ci3lP6tAtsZ0JgaANE,24966
|
85
94
|
slm/jinja2/slm/sitelog/xsd/geodesyml_0.4.xml,sha256=iZSLS7g4bZrQas8NqdxBojm_AJPQEaTb1RIobMeAGNQ,5408
|
86
95
|
slm/jinja2/slm/sitelog/xsd/geodesyml_0.5.xml,sha256=ATBT771QYP8F-lSk5aYypKZRu5z2yvoHRJkyeXGYUks,5872
|
87
96
|
slm/jinja2/slm/sitelog/xsd/0.4/collocationInformation.xml,sha256=MnuwqSoX-CHKkQc-8wzpYQlY9Gro4oisNdi4dkY3C9Y,834
|
@@ -109,8 +118,8 @@ slm/jinja2/slm/sitelog/xsd/0.5/document.xml,sha256=ocBD0sHIKamOZSz67FB9a6ENWsx-o
|
|
109
118
|
slm/management/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
110
119
|
slm/management/commands/__init__.py,sha256=2rXtF09XsScbEG8zepmPga5B4XuytNKOTkNxIIdHRGI,1773
|
111
120
|
slm/management/commands/build_index.py,sha256=Ppl-DNDI8zqr0oiJXhSp8PFVE7_Aeoi5o4ZXAHkl6_0,3358
|
112
|
-
slm/management/commands/check_upgrade.py,sha256=
|
113
|
-
slm/management/commands/generate_sinex.py,sha256=
|
121
|
+
slm/management/commands/check_upgrade.py,sha256=cDIchUBvM1Wv3iprTFYSK6qufnFhxdx835EbPUUrBRQ,5917
|
122
|
+
slm/management/commands/generate_sinex.py,sha256=IesyiEleRltM2J4B-uK8_kk6R_5Q4ob_rEUeE5sPvGs,26485
|
114
123
|
slm/management/commands/head_from_index.py,sha256=aUlk7YCCodw6tuZz02eOeUGTWZq7_3AnN8ANQw5_e8s,21035
|
115
124
|
slm/management/commands/import_archive.py,sha256=LpkwY40gqtw7sD9iOqTQjLPfHdqCN0YyOlyWgEmiaf8,34730
|
116
125
|
slm/management/commands/import_equipment.py,sha256=toYfvknXIIT1i9ix_CS7wRVnePMhDpHX3uB152a64yk,12831
|
@@ -125,6 +134,7 @@ slm/map/admin.py,sha256=E6PV8736VIV-L-XwF9M9VFwsoniqFUS3sVRwBViGywo,107
|
|
125
134
|
slm/map/apps.py,sha256=5LiV3FCizLQGSjIb5x8zbovIUX2C7hdjPSGLpgE7Fjc,150
|
126
135
|
slm/map/defines.py,sha256=P5KKlL0es_VYUMpZH6UkxR9YG-4mIHdVLkqGRF1il-0,2237
|
127
136
|
slm/map/models.py,sha256=I2o7aTCb99t0pV4TP8s9JiyHPRDZSzCF0Nd9oa3HKig,1716
|
137
|
+
slm/map/settings.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
128
138
|
slm/map/urls.py,sha256=KiVibGz0E9D8aH14t8BVTs9OPViNe0eofYsXJQ0F5KU,597
|
129
139
|
slm/map/views.py,sha256=HUs7VGbbgpwvfOP2hg62VVJUHB3giA6BkeGEuO2Vf1Y,1228
|
130
140
|
slm/map/api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -144,6 +154,7 @@ slm/map/templates/slm/station/base.html,sha256=WV412EjtUtV1Ug9jdU0dfuL-Q8UbPu5Kv
|
|
144
154
|
slm/map/templates/slm/station/edit.html,sha256=SZOPHdhKV_X3Vko336PgzJ3AIszGmZJIhIxwTtFAd4Y,269
|
145
155
|
slm/map/templatetags/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
146
156
|
slm/map/templatetags/slm_map.py,sha256=OwFJD8Uv3R8iW5n_Ikz3VWsB6PZ9eWGNoL_gFI2jT2A,510
|
157
|
+
slm/migrations/0001_alter_archivedsitelog_size_and_more.py,sha256=rL0Sg5hf3g6Qk2_HXlDDncT3_B6mTpY7cV4IQy-BiQE,1291
|
147
158
|
slm/migrations/0001_alter_siteantenna_marker_enu_alter_sitelocation_llh_and_more.py,sha256=iSGlNL2oaYnsBcUahnqWJNHbwzXuvUMrmGmUW87IFDc,1816
|
148
159
|
slm/migrations/0001_initial.py,sha256=0P2Jn3iCqiSigdW7nqA_QN_hc_MDD-j4E_FDYEKOS8U,192721
|
149
160
|
slm/migrations/0001_remove_archiveindex_no_overlapping_ranges_per_site_and_more.py,sha256=OhOdf-OyQNHWLelYkYJQIimtVDEeGQQ_TBuopjyRaQk,809
|
@@ -182,11 +193,12 @@ slm/migrations/0028_antenna_replaced_manufacturer_url_radome_replaced_and_more.p
|
|
182
193
|
slm/migrations/0029_manufacturer_full_name.py,sha256=zESR9lf_hw0CTLzp4ovG8u8TVli9JyK93YHaoVk538k,454
|
183
194
|
slm/migrations/0030_alter_antenna_state_alter_radome_state_and_more.py,sha256=hDszkwYVDlTWIFoIF-E-1hPkGp42-9MBfuZrYx4ToPg,1514
|
184
195
|
slm/migrations/0031_alter_antenna_features.py,sha256=IqIDNYTTynlKv3SR2aGfxuNO5YjVjlv4tuAan4HuBLE,1744
|
185
|
-
slm/migrations/0032_archiveindex_valid_range_and_more.py,sha256=
|
196
|
+
slm/migrations/0032_archiveindex_valid_range_and_more.py,sha256=xU3R-aT-1WHt8Hh1XlYtGzbxTBgXSwG7hzJ30MIDUeY,3058
|
186
197
|
slm/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
187
198
|
slm/migrations/add_index_order_index.py,sha256=YqVtUd2TfXWo-onrEzDJCbTcMRSv7V8N1pq1LjPcP8M,1740
|
188
199
|
slm/migrations/load_satellitesystems.py,sha256=AyUb9MOE7Fcuuw0exUMu9QNylx23yWz60QekowhI6pE,856
|
189
200
|
slm/migrations/normalize_index.py,sha256=VsNOXieaEwcrDtLhBpwXdRvcMd6NdXzCKg9x6VCY9d4,5429
|
201
|
+
slm/migrations/simplify_daily_index_files.py,sha256=Di1Wzo34R43iu8C0ZROuwj-vF7EK7hRIEz40ZJGtpRI,3215
|
190
202
|
slm/migrations/simplify_index.py,sha256=2ultmQ2X5oQbYcpMxdrvJyVXwcCI-ZTJUGGDKMgYjMk,1674
|
191
203
|
slm/migrations/verify_index.py,sha256=Gx9ykLROmbXAXKArRpbyhVrDiUqhIotfEIlEfESsdxg,2005
|
192
204
|
slm/models/__init__.py,sha256=rp3cZXLTjds3bBRKHN8zMEr09oP4Y5nfD_ffu7y_UFk,2534
|
@@ -196,13 +208,13 @@ slm/models/data.py,sha256=VQx2DBX8sb2qx6Jqv_2unzNToVzf2mBD8M4bwfid2XE,1885
|
|
196
208
|
slm/models/equipment.py,sha256=oZnZVDBbucNNfqz069tYB3kEqsAFKaY3sjTsE67Qjm4,5922
|
197
209
|
slm/models/fields.py,sha256=k6W4LwqY9TVSVQ4wHi50WgYpbMZNcqmDnP4OnE9y6Ww,1614
|
198
210
|
slm/models/help.py,sha256=Zbut5wa9XcNT9GtLbs0jj0Gj9XIXI-B2GSjbh5Xuy-4,371
|
199
|
-
slm/models/index.py,sha256=
|
200
|
-
slm/models/sitelog.py,sha256=
|
201
|
-
slm/models/system.py,sha256=
|
211
|
+
slm/models/index.py,sha256=JSNUwFvJP_s0A8g_57ZD56gSMp49mDRe-V56jevUtC8,21762
|
212
|
+
slm/models/sitelog.py,sha256=5zkvT1_wuXOnHwGAwp0W3GSNfLxkqx6yl7_ZafFR8Lk,134408
|
213
|
+
slm/models/system.py,sha256=mavBJcJcl-LYIisvCJNbJgBZt3itV44MB2firnGmn3c,25973
|
202
214
|
slm/models/user.py,sha256=qro6VVSNnqor0ASoyW3C8TWSZntYxHp83xqYZW2pKRo,9497
|
203
|
-
slm/parsing/__init__.py,sha256=
|
215
|
+
slm/parsing/__init__.py,sha256=eBnlQzrxTB6I5qs4u_9ftSOOL1qujFojcfv2Aiw04RQ,23971
|
204
216
|
slm/parsing/legacy/__init__.py,sha256=MkuAjfMldkrTZHfjnBpQP1j4mtv7nDdLUOzYEIBLaUc,147
|
205
|
-
slm/parsing/legacy/binding.py,sha256=
|
217
|
+
slm/parsing/legacy/binding.py,sha256=NZUoM68nGSqJjgNo8uo-6QsIHmoyNV2DrIfmtgUO0BM,33074
|
206
218
|
slm/parsing/legacy/parser.py,sha256=dy3EmMY_hutflTm8QaDkcE04jV6fI1eNBgHqXeucNsA,13395
|
207
219
|
slm/parsing/xsd/__init__.py,sha256=ZyiLxBFersFCknQ8ysBpYWcdgDPfwdxq-QIZlLIeryM,974
|
208
220
|
slm/parsing/xsd/binding.py,sha256=A6eRq8p0xA1zE-aJluTTiwRVLBQzuYUgSdnur7OrowE,2985
|
@@ -246,6 +258,7 @@ slm/parsing/xsd/geodesyml/0.5/referenceFrame.xsd,sha256=khr2VnaegDf91zb8zWsKy3Z2
|
|
246
258
|
slm/parsing/xsd/geodesyml/0.5/siteLog.xsd,sha256=x5PCdbjx-NfammnnqcLMP9l8mgRKNKiFZVFiyBdrzus,5494
|
247
259
|
slm/receivers/__init__.py,sha256=cHuNSRGRVx88ynuSa3lvFyxpH5RQ4gWVx5rV8B5tt0M,364
|
248
260
|
slm/receivers/alerts.py,sha256=G0UrjngKXMK3ZxSR1ok33llFZLMxiONOHKRwO813bmg,2700
|
261
|
+
slm/receivers/cache.py,sha256=GTY50nwIB37QInHsMGUjJeqa8pBY6fQw_bIkBmmQFFI,779
|
249
262
|
slm/receivers/cleanup.py,sha256=PYbN9QXU_adTV95ivOPHMt1NqA-pGfeznk1EwKqqZHQ,1411
|
250
263
|
slm/receivers/event_loggers.py,sha256=sPCVMFIuTLUCevMB36nGIeTy3AcnohxvI9dYQPo85CI,5731
|
251
264
|
slm/receivers/index.py,sha256=Fc9Mu-al4j7jB96IUB5CF-Bsy7Uja0G5WGJi2ROBrBg,2668
|
@@ -259,16 +272,16 @@ slm/settings/emails.py,sha256=gSLlOEwOfYiDb_oTp7QiLYxiSQvWqTNhP_H1AtUSdPo,1447
|
|
259
272
|
slm/settings/internationalization.py,sha256=OfySI8I21FUY29EfTNspwfZVQeYDtRzbo-RAK6Uipfw,549
|
260
273
|
slm/settings/logging.py,sha256=hGe8K7gCUqxZFNuLnwUlNyfF0F3Sl3rFGg8DGlGp5-Y,4230
|
261
274
|
slm/settings/rest.py,sha256=DFkT8d6yx7TfQteNnCjj7WrCD8XzVMNPm8nxj-Gb2Wo,787
|
262
|
-
slm/settings/root.py,sha256=
|
263
|
-
slm/settings/routines.py,sha256=
|
275
|
+
slm/settings/root.py,sha256=_xoJm99hMD4kkT_Z6tuyCz_DJTo5NcZ8OskPJGzgkeg,7634
|
276
|
+
slm/settings/routines.py,sha256=dQcYsTHFO9NEqRrlUsxdecP0geUgfPBjvphsocNNfHE,1769
|
264
277
|
slm/settings/secrets.py,sha256=4X5RJyYD0iOuaZ_YMdSvWxwVSGgWoXpzX9lgHldPZ3M,830
|
265
278
|
slm/settings/security.py,sha256=yO8pbNCAAvVdJfT4mbtdA8KVsmWG5FvP6REUhnSm2IE,249
|
266
|
-
slm/settings/slm.py,sha256=
|
279
|
+
slm/settings/slm.py,sha256=i1YUB88gZf7smyVVWOdhLrMiWUW40NqkLr06iYTccYE,8365
|
267
280
|
slm/settings/static_templates.py,sha256=99xqZqyGxXT04r_nSoL5eVvt14vIQ7wZQxJzjZsmaZk,1403
|
268
281
|
slm/settings/templates.py,sha256=_uIXxD7Z7p7_n_wafz_rnDiKOcp1ybvkaifE4FsEd5Y,1132
|
269
282
|
slm/settings/uploads.py,sha256=ly-GMoY5_m4Vz9mzvLnGzbwVfk0AaU9l8f6X6xMY6AE,1031
|
270
|
-
slm/settings/urls.py,sha256=
|
271
|
-
slm/settings/validation.py,sha256=
|
283
|
+
slm/settings/urls.py,sha256=FH9sF3Z8NNhxa__eIRGfUk3J4g6GUAlJwp7gL1vy81M,4151
|
284
|
+
slm/settings/validation.py,sha256=HBChO-vCjoLdizJg8XDbGa_gZb3-6ruv9nBZfCysMyU,8051
|
272
285
|
slm/settings/platform/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
273
286
|
slm/settings/platform/darwin.py,sha256=aJPOnZZC_kHAspePBegQJ64LrHtwvEqjRDhYsb6WBUU,786
|
274
287
|
slm/static/rest_framework/css/bootstrap-tweaks.css,sha256=be5zEHz29Qd5ogbozYc4AnPxmFEOlfEIuzgGh2KBC1s,3003
|
@@ -303,13 +316,13 @@ slm/static/slm/img/favicon.ico,sha256=1AN69vIFib1oPYEsyjTbFHABdPEXVXVzrNShCAM_4O
|
|
303
316
|
slm/static/slm/img/login-bg.jpg,sha256=2sOMYjc4ruCuMzJpP_Yy50yoAlpu4G0gATVjw3D9Glk,684715
|
304
317
|
slm/static/slm/img/slm-logo.svg,sha256=voAYAJ5O6NKaRvwYdGzjsdkNDQOdRRyvZdXDrrmq2OM,1852
|
305
318
|
slm/static/slm/js/autocomplete.js,sha256=PC0SkihqdOBZjp3SxFkZCrjMEnNMDU-w9SnbtobwCyQ,12117
|
306
|
-
slm/static/slm/js/enums.js,sha256=
|
319
|
+
slm/static/slm/js/enums.js,sha256=bucGycuV58XQuRsuApiJj2o1DkbV_vhwHFp0AvaVI7Q,10609
|
307
320
|
slm/static/slm/js/fileIcons.js,sha256=bWB1IZKQQdJNrcb5M2pd8ifp6IgNfVDu7_6i1_5bw4c,914
|
308
321
|
slm/static/slm/js/file_modal.js,sha256=t8CDM7CHUm-RICJrYF6EnoCEyr6CMzCLrJsRb2ITKxQ,2398
|
309
|
-
slm/static/slm/js/form.js,sha256=
|
322
|
+
slm/static/slm/js/form.js,sha256=8TsOr7tXtbuI4cnmCN_9rxsC0hnJg_r0tscF7hUSsNI,13893
|
310
323
|
slm/static/slm/js/formWidget.js,sha256=37UcZT0C5YE0gGZRY8IBI8_L-rSiHqTy_vV4U8e9L5A,461
|
311
324
|
slm/static/slm/js/persistable.js,sha256=MqCtfvTbVOLpsJq1CfDJ_WokZFcE2967h2V384sJD1E,847
|
312
|
-
slm/static/slm/js/slm.js,sha256=
|
325
|
+
slm/static/slm/js/slm.js,sha256=yg4coWKYTvzlDuzM6CMyFfBvm_U8AjSD0aUsX26-90Q,37357
|
313
326
|
slm/static/slm/js/time24.js,sha256=LDYnnPOywX-S2cCKgzokjc4a6wQqQnbCmvn3DrReF8A,8837
|
314
327
|
slm/static_templates/slm/css/defines.css,sha256=h1ppaUTxRJOHmYriB6ZYV0KwuS-71Z6NUB__WHApfC8,691
|
315
328
|
slm/static_templates/slm/js/enums.js,sha256=cGnxRfFLKY9yGeYQOwRllNO_Y7AXkixxktZ91Xs_Djg,773
|
@@ -459,9 +472,9 @@ slm/templates/slm/widgets/log_scroll.html,sha256=4uiXXdppjugwpmpDEz3cXN7xceBAqE4
|
|
459
472
|
slm/templates/slm/widgets/stationlist.html,sha256=MzbGy2po3TQ6Cx12OEagwaU5dZ5IKYYNDc0gs8eeifY,9171
|
460
473
|
slm/templatetags/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
461
474
|
slm/templatetags/jinja2.py,sha256=ye8Q5EVv1ATBCwkVi3UPrgRWj5a4VAI2s72pJnAftx4,222
|
462
|
-
slm/templatetags/slm.py,sha256=
|
463
|
-
igs_slm-0.
|
464
|
-
igs_slm-0.
|
465
|
-
igs_slm-0.
|
466
|
-
igs_slm-0.
|
467
|
-
igs_slm-0.
|
475
|
+
slm/templatetags/slm.py,sha256=c6BLClHz9-U7Z0xFzSMoRH1BlGsr5X0G9N688DtNCAk,14234
|
476
|
+
igs_slm-0.2.0b1.dist-info/METADATA,sha256=hiASDqYVu5_gI5JPQpwPNti9lvX4WVtnzQdmtYoF3Kc,7751
|
477
|
+
igs_slm-0.2.0b1.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
478
|
+
igs_slm-0.2.0b1.dist-info/entry_points.txt,sha256=Oq_ZZdzACnQ8vhZJn8q6_8VuYJNLqkfCW5HvqMg6JTs,84
|
479
|
+
igs_slm-0.2.0b1.dist-info/licenses/LICENSE,sha256=lrSWvh1Y0-xYCepGM5jimWArZ7iqaRvMV1UuPuq5mq8,1092
|
480
|
+
igs_slm-0.2.0b1.dist-info/RECORD,,
|
slm/__init__.py
CHANGED
slm/admin.py
CHANGED
@@ -27,6 +27,7 @@ from django.contrib.auth.admin import UserAdmin as BaseUserAdmin
|
|
27
27
|
from django.contrib.auth.models import Group
|
28
28
|
from django.db.models import BooleanField, Count, Q
|
29
29
|
from django.db.models.expressions import ExpressionWrapper
|
30
|
+
from django.urls import reverse
|
30
31
|
from django.utils.html import format_html
|
31
32
|
from django.utils.safestring import mark_safe
|
32
33
|
from django.utils.translation import gettext_lazy as _
|
@@ -82,6 +83,9 @@ class TideGaugeInline(admin.TabularInline):
|
|
82
83
|
model = TideGauge.sites.through
|
83
84
|
extra = 0
|
84
85
|
|
86
|
+
def get_queryset(self, request):
|
87
|
+
return super().get_queryset(request).select_related("site", "gauge")
|
88
|
+
|
85
89
|
|
86
90
|
class SiteTGInline(admin.TabularInline):
|
87
91
|
model = Site.tide_gauges.through
|
@@ -263,16 +267,49 @@ class NetworkInline(admin.TabularInline):
|
|
263
267
|
model = Network.sites.through
|
264
268
|
extra = 0
|
265
269
|
|
270
|
+
def get_queryset(self, request):
|
271
|
+
return super().get_queryset(request).select_related("network", "site")
|
272
|
+
|
266
273
|
|
267
274
|
class SiteAgencyInline(admin.TabularInline):
|
268
275
|
model = Agency.sites.through
|
269
276
|
extra = 0
|
270
277
|
|
271
278
|
|
279
|
+
class SiteIndexInline(admin.TabularInline):
|
280
|
+
model = ArchiveIndex
|
281
|
+
extra = 0
|
282
|
+
readonly_fields = ("time_range_display",)
|
283
|
+
fields = ("time_range_display",)
|
284
|
+
|
285
|
+
def get_queryset(self, request):
|
286
|
+
return super().get_queryset(request).select_related("site")
|
287
|
+
|
288
|
+
def has_add_permission(self, request, obj=None):
|
289
|
+
return False
|
290
|
+
|
291
|
+
def has_change_permission(self, request, obj=None):
|
292
|
+
return False
|
293
|
+
|
294
|
+
def time_range_display(self, obj):
|
295
|
+
if obj and obj.pk:
|
296
|
+
begin_formatted = obj.begin.strftime("%Y-%m-%d %H:%M:%S")
|
297
|
+
end_formatted = obj.end.strftime("%Y-%m-%d %H:%M:%S") if obj.end else ""
|
298
|
+
time_range = f"{begin_formatted} - {end_formatted}"
|
299
|
+
url = reverse(
|
300
|
+
f"admin:{obj._meta.app_label}_{obj._meta.model_name}_change",
|
301
|
+
args=[obj.pk],
|
302
|
+
)
|
303
|
+
return format_html('<a href="{}">{}</a>', url, time_range)
|
304
|
+
return "-"
|
305
|
+
|
306
|
+
time_range_display.short_description = "Time Range"
|
307
|
+
|
308
|
+
|
272
309
|
@admin.register(Site)
|
273
310
|
class SiteAdmin(admin.ModelAdmin):
|
274
311
|
search_fields = ("name",)
|
275
|
-
inlines = [SiteAgencyInline, NetworkInline, TideGaugeInline]
|
312
|
+
inlines = [SiteAgencyInline, NetworkInline, TideGaugeInline, SiteIndexInline]
|
276
313
|
exclude = ["agencies"]
|
277
314
|
|
278
315
|
|
@@ -345,7 +382,7 @@ class AntennaCalibrationAdmin(admin.ModelAdmin):
|
|
345
382
|
|
346
383
|
|
347
384
|
class LogEntryAdmin(admin.ModelAdmin):
|
348
|
-
search_fields = ("site__name",
|
385
|
+
search_fields = ("site__name",)
|
349
386
|
list_display = ("timestamp", "site", "type", "ip")
|
350
387
|
list_filter = ("type", "section")
|
351
388
|
ordering = ("-timestamp",)
|
@@ -466,7 +503,7 @@ class ArchiveFileInline(admin.TabularInline):
|
|
466
503
|
for field in ArchivedSiteLog._meta.get_fields()
|
467
504
|
if field.name not in ["id", "site", "thumbnail", "name", "timestamp"]
|
468
505
|
] + ["view_file"]
|
469
|
-
can_delete =
|
506
|
+
can_delete = True
|
470
507
|
exclude = ["site", "file", "thumbnail", "name", "timestamp"]
|
471
508
|
|
472
509
|
def path(self, obj):
|
slm/api/edit/views.py
CHANGED
@@ -76,6 +76,7 @@ from slm.api.serializers import SiteLogSerializer
|
|
76
76
|
from slm.api.views import BaseSiteLogDownloadViewSet
|
77
77
|
from slm.defines import (
|
78
78
|
CardinalDirection,
|
79
|
+
CoordinateMode,
|
79
80
|
SiteFileUploadStatus,
|
80
81
|
SiteLogFormat,
|
81
82
|
SiteLogStatus,
|
@@ -113,6 +114,7 @@ from slm.models import (
|
|
113
114
|
SiteWaterVaporRadiometer,
|
114
115
|
)
|
115
116
|
from slm.parsing.legacy.parser import Error, Warn
|
117
|
+
from slm.utils import llh2xyz, xyz2llh
|
116
118
|
|
117
119
|
|
118
120
|
class StationFilterForm(BaseStationFilterForm):
|
@@ -612,6 +614,10 @@ class SectionViewSet(type):
|
|
612
614
|
do_revert = validated_data.pop("revert", False)
|
613
615
|
update_status = None
|
614
616
|
|
617
|
+
# the upload viewsets tag the context so we can tweak behavior for
|
618
|
+
# uploaded files
|
619
|
+
is_from_upload = self.context.get("upload", False)
|
620
|
+
|
615
621
|
if not is_moderator:
|
616
622
|
# non-moderators are not allowed to publish!
|
617
623
|
if do_publish:
|
@@ -674,6 +680,25 @@ class SectionViewSet(type):
|
|
674
680
|
return instance
|
675
681
|
|
676
682
|
try:
|
683
|
+
location_updated = False
|
684
|
+
if ModelClass is SiteLocation and not is_from_upload:
|
685
|
+
# if XYZ or LLH should be computed from the other we do that here, so it happens
|
686
|
+
# before the validators run. We also do it in save().
|
687
|
+
llh = validated_data.get("llh", None)
|
688
|
+
xyz = validated_data.get("xyz", None)
|
689
|
+
|
690
|
+
if (
|
691
|
+
ModelClass.coordinate_mode == CoordinateMode.ECEF
|
692
|
+
and xyz
|
693
|
+
):
|
694
|
+
location_updated = True
|
695
|
+
validated_data["llh"] = Point(*xyz2llh(xyz))
|
696
|
+
elif (
|
697
|
+
ModelClass.coordinate_mode == CoordinateMode.LLH and llh
|
698
|
+
):
|
699
|
+
location_updated = True
|
700
|
+
validated_data["xyz"] = Point(*llh2xyz(llh))
|
701
|
+
|
677
702
|
# this is a new section
|
678
703
|
if instance is None:
|
679
704
|
new_section = super().create(validated_data)
|
@@ -757,8 +782,18 @@ class SectionViewSet(type):
|
|
757
782
|
else:
|
758
783
|
setattr(instance, field, new_value)
|
759
784
|
|
760
|
-
if
|
785
|
+
# handle special case where llh/xyz are linked and if one is
|
786
|
+
# updated we should remove flags for both
|
787
|
+
# TODO less hard coded way to handle this -
|
788
|
+
# linked fields definitions on the validators?
|
789
|
+
if location_updated and field in {"llh", "xyz"}:
|
790
|
+
for cfield in ["llh", "xyz"]:
|
791
|
+
if cfield in flags:
|
792
|
+
del flags[cfield]
|
793
|
+
|
794
|
+
elif field in flags:
|
761
795
|
del flags[field]
|
796
|
+
|
762
797
|
if update:
|
763
798
|
if instance.published:
|
764
799
|
validated_data["_flags"] = flags
|
@@ -1525,7 +1560,7 @@ class SiteFileUploadViewSet(
|
|
1525
1560
|
posted_subsections[section.heading_index].add(instance)
|
1526
1561
|
|
1527
1562
|
serializer = section_view.serializer_class(
|
1528
|
-
data=data, context={"request": request}
|
1563
|
+
data=data, context={"request": request, "upload": True}
|
1529
1564
|
)
|
1530
1565
|
if not serializer.is_valid(raise_exception=False):
|
1531
1566
|
errors[index] = {
|
slm/api/public/serializers.py
CHANGED
@@ -33,7 +33,7 @@ class EquipmentSerializer(serializers.ModelSerializer):
|
|
33
33
|
|
34
34
|
class Meta:
|
35
35
|
model = Equipment
|
36
|
-
fields = ["model", "description", "state", "manufacturer"]
|
36
|
+
fields = ["id", "model", "description", "state", "manufacturer"]
|
37
37
|
|
38
38
|
|
39
39
|
class ManufacturerSerializer(serializers.ModelSerializer):
|
@@ -0,0 +1,9 @@
|
|
1
|
+
from enum_properties import StrEnumProperties, p, s
|
2
|
+
|
3
|
+
|
4
|
+
class CoordinateMode(StrEnumProperties, s("label", case_fold=True), p("help")):
|
5
|
+
# fmt: off
|
6
|
+
INDEPENDENT = "I", "INDEPENDENT", "User specifies station coordinates in ECEF and LLH seperately."
|
7
|
+
ECEF = "E", "ECEF", "User specifies station coordinates in ECEF, LLH coordinates are calculated by the system."
|
8
|
+
LLH = "L", "LLH", "User specifies station coordinates in LLH, ECEF coordinates are calculated by the system."
|
9
|
+
# fmt: on
|
slm/defines/SiteLogFormat.py
CHANGED
@@ -9,17 +9,30 @@ class SiteLogFormat(
|
|
9
9
|
p("icon"),
|
10
10
|
s("ext", case_fold=True),
|
11
11
|
s("alts", case_fold=True),
|
12
|
-
|
12
|
+
p("supersedes"),
|
13
13
|
):
|
14
14
|
_symmetric_builtins_ = [s("name", case_fold=True)]
|
15
15
|
|
16
16
|
# fmt: off
|
17
|
-
# name value label mimetype icon ext
|
18
|
-
LEGACY = 1, _("Legacy (ASCII)"), "text/plain", "bi bi-file-text", "log", ["text", "txt", "legacy"
|
19
|
-
GEODESY_ML = 2, _("GeodesyML"), "application/xml", "bi bi-filetype-xml", "xml", ["xml"
|
20
|
-
JSON = 3, _("JSON"), "application/json", "bi bi-filetype-json", "json", ["json", "js"],
|
21
|
-
ASCII_9CHAR = 4, _("ASCII (9-Char)"), "text/plain", "bi bi-file-text", "log", ["text", "txt", "9char"
|
17
|
+
# name value label mimetype icon ext alts supersedes
|
18
|
+
LEGACY = 1, _("Legacy (ASCII)"), "text/plain", "bi bi-file-text", "log", ["text", "txt", "legacy", "sitelog"], []
|
19
|
+
GEODESY_ML = 2, _("GeodesyML"), "application/xml", "bi bi-filetype-xml", "xml", ["xml", "gml"], []
|
20
|
+
JSON = 3, _("JSON"), "application/json", "bi bi-filetype-json", "json", ["json", "js"], []
|
21
|
+
ASCII_9CHAR = 4, _("ASCII (9-Char)"), "text/plain", "bi bi-file-text", "log", ["text", "txt", "9char", "sitelog"], [LEGACY]
|
22
22
|
# fmt: on
|
23
23
|
|
24
24
|
def __str__(self):
|
25
25
|
return str(self.label)
|
26
|
+
|
27
|
+
@property
|
28
|
+
def suffix(self):
|
29
|
+
"""
|
30
|
+
Fetch the configured suffix for this file type.
|
31
|
+
"""
|
32
|
+
from django.conf import settings
|
33
|
+
|
34
|
+
return getattr(
|
35
|
+
settings,
|
36
|
+
"SLM_FORMAT_EXTENSIONS",
|
37
|
+
{fmt: fmt.ext for fmt in SiteLogFormat},
|
38
|
+
)[self]
|
slm/defines/__init__.py
CHANGED
@@ -6,6 +6,7 @@ from slm.defines.AntennaReferencePoint import AntennaReferencePoint
|
|
6
6
|
from slm.defines.Aspiration import Aspiration
|
7
7
|
from slm.defines.CardinalDirection import CardinalDirection
|
8
8
|
from slm.defines.CollocationStatus import CollocationStatus
|
9
|
+
from slm.defines.CoordinateMode import CoordinateMode
|
9
10
|
from slm.defines.EquipmentState import EquipmentState
|
10
11
|
from slm.defines.FlagSeverity import FlagSeverity
|
11
12
|
from slm.defines.FractureSpacing import FractureSpacing
|
@@ -21,26 +22,27 @@ from slm.defines.SLMFileType import SLMFileType
|
|
21
22
|
from slm.defines.TectonicPlates import TectonicPlates
|
22
23
|
|
23
24
|
__all__ = [
|
24
|
-
DataRate,
|
25
|
-
RinexVersion,
|
26
|
-
AlertLevel,
|
27
|
-
AntennaCalibrationMethod,
|
28
|
-
AntennaFeatures,
|
29
|
-
AntennaReferencePoint,
|
30
|
-
Aspiration,
|
31
|
-
CardinalDirection,
|
32
|
-
CollocationStatus,
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
25
|
+
"DataRate",
|
26
|
+
"RinexVersion",
|
27
|
+
"AlertLevel",
|
28
|
+
"AntennaCalibrationMethod",
|
29
|
+
"AntennaFeatures",
|
30
|
+
"AntennaReferencePoint",
|
31
|
+
"Aspiration",
|
32
|
+
"CardinalDirection",
|
33
|
+
"CollocationStatus",
|
34
|
+
"CoordinateMode",
|
35
|
+
"EquipmentState",
|
36
|
+
"FlagSeverity",
|
37
|
+
"FractureSpacing",
|
38
|
+
"FrequencyStandardType",
|
39
|
+
"GeodesyMLVersion",
|
40
|
+
"Instrumentation",
|
41
|
+
"ISOCountry",
|
42
|
+
"LogEntryType",
|
43
|
+
"SiteFileUploadStatus",
|
44
|
+
"SiteLogFormat",
|
45
|
+
"SiteLogStatus",
|
46
|
+
"SLMFileType",
|
47
|
+
"TectonicPlates",
|
46
48
|
]
|