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.
- igs_slm-0.1.0b0.dist-info/LICENSE +21 -0
- igs_slm-0.1.0b0.dist-info/METADATA +151 -0
- igs_slm-0.1.0b0.dist-info/RECORD +447 -0
- igs_slm-0.1.0b0.dist-info/WHEEL +4 -0
- igs_slm-0.1.0b0.dist-info/entry_points.txt +3 -0
- igs_tools/__init__.py +0 -0
- igs_tools/connection.py +88 -0
- igs_tools/defines/__init__.py +8 -0
- igs_tools/defines/constellation.py +21 -0
- igs_tools/defines/data_center.py +75 -0
- igs_tools/defines/rinex.py +49 -0
- igs_tools/directory.py +247 -0
- igs_tools/utils.py +66 -0
- slm/__init__.py +21 -0
- slm/admin.py +674 -0
- slm/api/edit/__init__.py +0 -0
- slm/api/edit/serializers.py +316 -0
- slm/api/edit/views.py +1632 -0
- slm/api/fields.py +89 -0
- slm/api/filter.py +504 -0
- slm/api/pagination.py +55 -0
- slm/api/permissions.py +65 -0
- slm/api/public/__init__.py +0 -0
- slm/api/public/serializers.py +249 -0
- slm/api/public/views.py +606 -0
- slm/api/serializers.py +132 -0
- slm/api/views.py +148 -0
- slm/apps.py +323 -0
- slm/authentication.py +198 -0
- slm/bin/__init__.py +0 -0
- slm/bin/startproject.py +262 -0
- slm/bin/templates/{{ project_dir }}/pyproject.toml +35 -0
- slm/bin/templates/{{ project_dir }}/sites/__init__.py +0 -0
- slm/bin/templates/{{ project_dir }}/sites/{{ site }}/__init__.py +0 -0
- slm/bin/templates/{{ project_dir }}/sites/{{ site }}/base.py +15 -0
- slm/bin/templates/{{ project_dir }}/sites/{{ site }}/develop/__init__.py +56 -0
- slm/bin/templates/{{ project_dir }}/sites/{{ site }}/develop/local.py +4 -0
- slm/bin/templates/{{ project_dir }}/sites/{{ site }}/develop/wsgi.py +16 -0
- slm/bin/templates/{{ project_dir }}/sites/{{ site }}/manage.py +34 -0
- slm/bin/templates/{{ project_dir }}/sites/{{ site }}/production/__init__.py +61 -0
- slm/bin/templates/{{ project_dir }}/sites/{{ site }}/production/wsgi.py +16 -0
- slm/bin/templates/{{ project_dir }}/sites/{{ site }}/urls.py +7 -0
- slm/bin/templates/{{ project_dir }}/sites/{{ site }}/validation.py +11 -0
- slm/bin/templates/{{ project_dir }}/{{ extension_app }}/__init__.py +0 -0
- slm/bin/templates/{{ project_dir }}/{{ extension_app }}/admin.py +5 -0
- slm/bin/templates/{{ project_dir }}/{{ extension_app }}/apps.py +14 -0
- slm/bin/templates/{{ project_dir }}/{{ extension_app }}/management/__init__.py +0 -0
- slm/bin/templates/{{ project_dir }}/{{ extension_app }}/management/commands/__init__.py +0 -0
- slm/bin/templates/{{ project_dir }}/{{ extension_app }}/management/commands/import_archive.py +64 -0
- slm/bin/templates/{{ project_dir }}/{{ extension_app }}/migrations/__init__.py +0 -0
- slm/bin/templates/{{ project_dir }}/{{ extension_app }}/models.py +6 -0
- slm/bin/templates/{{ project_dir }}/{{ extension_app }}/templates/slm/base.html +8 -0
- slm/bin/templates/{{ project_dir }}/{{ extension_app }}/urls.py +10 -0
- slm/bin/templates/{{ project_dir }}/{{ extension_app }}/views.py +5 -0
- slm/defines/AlertLevel.py +24 -0
- slm/defines/AntennaCalibration.py +25 -0
- slm/defines/AntennaFeatures.py +27 -0
- slm/defines/AntennaReferencePoint.py +22 -0
- slm/defines/Aspiration.py +13 -0
- slm/defines/CardinalDirection.py +19 -0
- slm/defines/CollocationStatus.py +12 -0
- slm/defines/EquipmentState.py +22 -0
- slm/defines/FlagSeverity.py +14 -0
- slm/defines/FractureSpacing.py +15 -0
- slm/defines/FrequencyStandardType.py +15 -0
- slm/defines/GeodesyMLVersion.py +48 -0
- slm/defines/ISOCountry.py +1194 -0
- slm/defines/Instrumentation.py +19 -0
- slm/defines/LogEntryType.py +30 -0
- slm/defines/SLMFileType.py +18 -0
- slm/defines/SiteFileUploadStatus.py +61 -0
- slm/defines/SiteLogFormat.py +49 -0
- slm/defines/SiteLogStatus.py +78 -0
- slm/defines/TectonicPlates.py +28 -0
- slm/defines/__init__.py +46 -0
- slm/forms.py +1126 -0
- slm/jinja2/slm/sitelog/ascii_9char.log +346 -0
- slm/jinja2/slm/sitelog/legacy.log +346 -0
- slm/jinja2/slm/sitelog/xsd/0.4/collocationInformation.xml +12 -0
- slm/jinja2/slm/sitelog/xsd/0.4/condition.xml +12 -0
- slm/jinja2/slm/sitelog/xsd/0.4/contact.xml +52 -0
- slm/jinja2/slm/sitelog/xsd/0.4/formInformation.xml +5 -0
- slm/jinja2/slm/sitelog/xsd/0.4/frequencyStandard.xml +12 -0
- slm/jinja2/slm/sitelog/xsd/0.4/gnssAntenna.xml +16 -0
- slm/jinja2/slm/sitelog/xsd/0.4/gnssReceiver.xml +11 -0
- slm/jinja2/slm/sitelog/xsd/0.4/humiditySensor.xml +13 -0
- slm/jinja2/slm/sitelog/xsd/0.4/localEpisodicEffect.xml +10 -0
- slm/jinja2/slm/sitelog/xsd/0.4/moreInformation.xml +22 -0
- slm/jinja2/slm/sitelog/xsd/0.4/multipathSource.xml +10 -0
- slm/jinja2/slm/sitelog/xsd/0.4/otherInstrumentation.xml +5 -0
- slm/jinja2/slm/sitelog/xsd/0.4/pressureSensor.xml +12 -0
- slm/jinja2/slm/sitelog/xsd/0.4/radioInterference.xml +11 -0
- slm/jinja2/slm/sitelog/xsd/0.4/sensor.xml +16 -0
- slm/jinja2/slm/sitelog/xsd/0.4/signalObstruction.xml +10 -0
- slm/jinja2/slm/sitelog/xsd/0.4/siteIdentification.xml +22 -0
- slm/jinja2/slm/sitelog/xsd/0.4/siteLocation.xml +21 -0
- slm/jinja2/slm/sitelog/xsd/0.4/surveyedLocalTie.xml +20 -0
- slm/jinja2/slm/sitelog/xsd/0.4/temperatureSensor.xml +13 -0
- slm/jinja2/slm/sitelog/xsd/0.4/waterVaporSensor.xml +11 -0
- slm/jinja2/slm/sitelog/xsd/0.5/document.xml +10 -0
- slm/jinja2/slm/sitelog/xsd/geodesyml_0.4.xml +99 -0
- slm/jinja2/slm/sitelog/xsd/geodesyml_0.5.xml +112 -0
- slm/management/__init__.py +0 -0
- slm/management/commands/__init__.py +53 -0
- slm/management/commands/build_index.py +96 -0
- slm/management/commands/generate_sinex.py +675 -0
- slm/management/commands/head_from_index.py +541 -0
- slm/management/commands/import_archive.py +908 -0
- slm/management/commands/import_equipment.py +351 -0
- slm/management/commands/set_site.py +56 -0
- slm/management/commands/sitelog.py +144 -0
- slm/management/commands/synchronize.py +60 -0
- slm/management/commands/update_data_availability.py +167 -0
- slm/management/commands/validate_db.py +186 -0
- slm/management/commands/validate_gml.py +73 -0
- slm/map/__init__.py +1 -0
- slm/map/admin.py +5 -0
- slm/map/api/__init__.py +0 -0
- slm/map/api/edit/__init__.py +0 -0
- slm/map/api/edit/serializers.py +28 -0
- slm/map/api/edit/views.py +46 -0
- slm/map/api/public/__init__.py +0 -0
- slm/map/api/public/serializers.py +29 -0
- slm/map/api/public/views.py +64 -0
- slm/map/apps.py +7 -0
- slm/map/defines.py +53 -0
- slm/map/migrations/0001_initial.py +115 -0
- slm/map/migrations/__init__.py +0 -0
- slm/map/models.py +63 -0
- slm/map/static/slm/css/map.css +86 -0
- slm/map/static/slm/js/map.js +159 -0
- slm/map/templates/slm/map.html +374 -0
- slm/map/templates/slm/station/base.html +11 -0
- slm/map/templates/slm/station/edit.html +10 -0
- slm/map/templates/slm/top_nav.html +17 -0
- slm/map/templatetags/__init__.py +0 -0
- slm/map/templatetags/slm_map.py +18 -0
- slm/map/urls.py +25 -0
- slm/map/views.py +36 -0
- slm/middleware.py +29 -0
- slm/migrations/0001_alter_siteantenna_marker_enu_alter_sitelocation_llh_and_more.py +47 -0
- slm/migrations/0001_initial.py +4826 -0
- slm/migrations/0002_alter_dataavailability_site.py +22 -0
- slm/migrations/0003_remove_logentry_slm_logentr_site_lo_7a2af7_idx_and_more.py +80 -0
- slm/migrations/0004_alter_logentry_timestamp_and_more.py +25 -0
- slm/migrations/0005_alter_logentry_options_alter_logentry_section_and_more.py +46 -0
- slm/migrations/0006_alter_logentry_options_alter_logentry_index_together.py +24 -0
- slm/migrations/0007_alter_dataavailability_rate.py +23 -0
- slm/migrations/0008_alter_archiveindex_options_and_more.py +64 -0
- slm/migrations/0009_alter_archiveindex_end.py +21 -0
- slm/migrations/0010_alter_dataavailability_rinex_version_and_more.py +844 -0
- slm/migrations/0011_alter_siteidentification_fracture_spacing.py +33 -0
- slm/migrations/0012_alter_logentry_type.py +36 -0
- slm/migrations/0013_unpublishedfilesalert.py +48 -0
- slm/migrations/0014_sitelogpublished.py +48 -0
- slm/migrations/0015_alter_siteantenna_options_and_more.py +181 -0
- slm/migrations/0016_alter_antenna_description_alter_radome_description_and_more.py +42 -0
- slm/migrations/0017_alter_logentry_unique_together_and_more.py +54 -0
- slm/migrations/0018_afix_deleted.py +34 -0
- slm/migrations/0018_alter_siteantenna_options_and_more.py +244 -0
- slm/migrations/0019_remove_siteantenna_marker_enu_siteantenna_marker_une_and_more.py +101 -0
- slm/migrations/0020_alter_manufacturer_options.py +16 -0
- slm/migrations/0021_alter_siteform_report_type.py +23 -0
- slm/migrations/0022_rename_antcal_antenna_radome_slm_antcal_antenna_20827a_idx_and_more.py +297 -0
- slm/migrations/0023_archivedsitelog_gml_version_and_more.py +55 -0
- slm/migrations/0024_alter_agency_name_alter_agency_shortname.py +24 -0
- slm/migrations/0025_alter_archivedsitelog_log_format_and_more.py +61 -0
- slm/migrations/0026_alter_archivedsitelog_log_format_and_more.py +61 -0
- slm/migrations/0027_importalert_file_contents_importalert_findings_and_more.py +41 -0
- slm/migrations/0028_antenna_replaced_manufacturer_url_radome_replaced_and_more.py +46 -0
- slm/migrations/0029_manufacturer_full_name.py +17 -0
- slm/migrations/0030_alter_antenna_state_alter_radome_state_and_more.py +43 -0
- slm/migrations/__init__.py +0 -0
- slm/migrations/load_satellitesystems.py +27 -0
- slm/models/__init__.py +118 -0
- slm/models/about.py +14 -0
- slm/models/alerts.py +1204 -0
- slm/models/data.py +58 -0
- slm/models/equipment.py +229 -0
- slm/models/help.py +14 -0
- slm/models/index.py +428 -0
- slm/models/sitelog.py +4279 -0
- slm/models/system.py +723 -0
- slm/models/user.py +304 -0
- slm/parsing/__init__.py +786 -0
- slm/parsing/legacy/__init__.py +4 -0
- slm/parsing/legacy/binding.py +817 -0
- slm/parsing/legacy/parser.py +377 -0
- slm/parsing/xsd/__init__.py +34 -0
- slm/parsing/xsd/binding.py +86 -0
- slm/parsing/xsd/geodesyml/0.4/commonTypes.xsd +133 -0
- slm/parsing/xsd/geodesyml/0.4/contact.xsd +29 -0
- slm/parsing/xsd/geodesyml/0.4/dataStreams.xsd +129 -0
- slm/parsing/xsd/geodesyml/0.4/document.xsd +64 -0
- slm/parsing/xsd/geodesyml/0.4/equipment.xsd +427 -0
- slm/parsing/xsd/geodesyml/0.4/fieldMeasurement.xsd +170 -0
- slm/parsing/xsd/geodesyml/0.4/geodesyML.xsd +71 -0
- slm/parsing/xsd/geodesyml/0.4/geodeticEquipment.xsd +343 -0
- slm/parsing/xsd/geodesyml/0.4/geodeticMonument.xsd +147 -0
- slm/parsing/xsd/geodesyml/0.4/lineage.xsd +614 -0
- slm/parsing/xsd/geodesyml/0.4/localInterferences.xsd +131 -0
- slm/parsing/xsd/geodesyml/0.4/measurement.xsd +473 -0
- slm/parsing/xsd/geodesyml/0.4/monumentInfo.xsd +251 -0
- slm/parsing/xsd/geodesyml/0.4/observationSystem.xsd +429 -0
- slm/parsing/xsd/geodesyml/0.4/project.xsd +38 -0
- slm/parsing/xsd/geodesyml/0.4/quality.xsd +176 -0
- slm/parsing/xsd/geodesyml/0.4/referenceFrame.xsd +194 -0
- slm/parsing/xsd/geodesyml/0.4/siteLog.xsd +71 -0
- slm/parsing/xsd/geodesyml/0.5/commonTypes.xsd +133 -0
- slm/parsing/xsd/geodesyml/0.5/contact.xsd +29 -0
- slm/parsing/xsd/geodesyml/0.5/dataStreams.xsd +129 -0
- slm/parsing/xsd/geodesyml/0.5/document.xsd +64 -0
- slm/parsing/xsd/geodesyml/0.5/equipment.xsd +427 -0
- slm/parsing/xsd/geodesyml/0.5/fieldMeasurement.xsd +170 -0
- slm/parsing/xsd/geodesyml/0.5/geodesyML.xsd +71 -0
- slm/parsing/xsd/geodesyml/0.5/geodeticEquipment.xsd +343 -0
- slm/parsing/xsd/geodesyml/0.5/geodeticMonument.xsd +147 -0
- slm/parsing/xsd/geodesyml/0.5/lineage.xsd +614 -0
- slm/parsing/xsd/geodesyml/0.5/localInterferences.xsd +131 -0
- slm/parsing/xsd/geodesyml/0.5/measurement.xsd +473 -0
- slm/parsing/xsd/geodesyml/0.5/monumentInfo.xsd +306 -0
- slm/parsing/xsd/geodesyml/0.5/observationSystem.xsd +429 -0
- slm/parsing/xsd/geodesyml/0.5/project.xsd +38 -0
- slm/parsing/xsd/geodesyml/0.5/quality.xsd +176 -0
- slm/parsing/xsd/geodesyml/0.5/referenceFrame.xsd +194 -0
- slm/parsing/xsd/geodesyml/0.5/siteLog.xsd +73 -0
- slm/parsing/xsd/parser.py +116 -0
- slm/parsing/xsd/resolver.py +28 -0
- slm/receivers/__init__.py +11 -0
- slm/receivers/alerts.py +87 -0
- slm/receivers/cleanup.py +41 -0
- slm/receivers/event_loggers.py +175 -0
- slm/receivers/index.py +67 -0
- slm/settings/__init__.py +55 -0
- slm/settings/auth.py +15 -0
- slm/settings/ckeditor.py +14 -0
- slm/settings/debug.py +47 -0
- slm/settings/internationalization.py +12 -0
- slm/settings/logging.py +113 -0
- slm/settings/platform/__init__.py +0 -0
- slm/settings/platform/darwin.py +10 -0
- slm/settings/rest.py +21 -0
- slm/settings/root.py +152 -0
- slm/settings/routines.py +43 -0
- slm/settings/secrets.py +37 -0
- slm/settings/security.py +5 -0
- slm/settings/slm.py +188 -0
- slm/settings/static_templates.py +53 -0
- slm/settings/templates.py +29 -0
- slm/settings/uploads.py +8 -0
- slm/settings/urls.py +126 -0
- slm/settings/validation.py +196 -0
- slm/signals.py +250 -0
- slm/singleton.py +49 -0
- slm/static/rest_framework/css/bootstrap-tweaks.css +204 -0
- slm/static/rest_framework/css/bootstrap.min.css +7 -0
- slm/static/rest_framework/css/bootstrap.min.css.map +1 -0
- slm/static/rest_framework/css/default.css +82 -0
- slm/static/rest_framework/css/prettify.css +30 -0
- slm/static/rest_framework/docs/css/base.css +344 -0
- slm/static/rest_framework/docs/css/highlight.css +125 -0
- slm/static/rest_framework/docs/css/jquery.json-view.min.css +11 -0
- slm/static/rest_framework/docs/img/favicon.ico +0 -0
- slm/static/rest_framework/docs/img/grid.png +0 -0
- slm/static/rest_framework/docs/js/api.js +321 -0
- slm/static/rest_framework/docs/js/highlight.pack.js +2 -0
- slm/static/rest_framework/docs/js/jquery.json-view.min.js +7 -0
- slm/static/rest_framework/img/grid.png +0 -0
- slm/static/rest_framework/js/ajax-form.js +127 -0
- slm/static/rest_framework/js/bootstrap.bundle.min.js +7 -0
- slm/static/rest_framework/js/bootstrap.bundle.min.js.map +1 -0
- slm/static/rest_framework/js/bootstrap.min.js.map +1 -0
- slm/static/rest_framework/js/coreapi-0.1.1.js +2043 -0
- slm/static/rest_framework/js/csrf.js +52 -0
- slm/static/rest_framework/js/default.js +47 -0
- slm/static/rest_framework/js/jquery-3.5.1.min.js +2 -0
- slm/static/rest_framework/js/prettify-min.js +28 -0
- slm/static/slm/css/admin.css +3 -0
- slm/static/slm/css/defines.css +82 -0
- slm/static/slm/css/forms.css +1 -0
- slm/static/slm/css/style.css +1004 -0
- slm/static/slm/img/email-branding.png +0 -0
- slm/static/slm/img/favicon.ico +0 -0
- slm/static/slm/img/login-bg.jpg +0 -0
- slm/static/slm/img/slm-logo.svg +4 -0
- slm/static/slm/js/autocomplete.js +341 -0
- slm/static/slm/js/enums.js +322 -0
- slm/static/slm/js/fileIcons.js +30 -0
- slm/static/slm/js/form.js +404 -0
- slm/static/slm/js/formWidget.js +23 -0
- slm/static/slm/js/persistable.js +33 -0
- slm/static/slm/js/slm.js +1028 -0
- slm/static/slm/js/time24.js +212 -0
- slm/static_templates/slm/css/defines.css +26 -0
- slm/static_templates/slm/js/enums.js +28 -0
- slm/static_templates/slm/js/fileIcons.js +16 -0
- slm/static_templates/slm/js/urls.js +5 -0
- slm/templates/account/base.html +20 -0
- slm/templates/account/email/base.html +43 -0
- slm/templates/account/email/base_message.txt +7 -0
- slm/templates/account/email/email_confirmation_message.html +16 -0
- slm/templates/account/email/email_confirmation_message.txt +7 -0
- slm/templates/account/email/email_confirmation_signup_message.html +1 -0
- slm/templates/account/email/email_confirmation_signup_message.txt +1 -0
- slm/templates/account/email/email_confirmation_signup_subject.txt +1 -0
- slm/templates/account/email/email_confirmation_subject.txt +4 -0
- slm/templates/account/email/password_reset_key_message.html +28 -0
- slm/templates/account/email/password_reset_key_message.txt +9 -0
- slm/templates/account/email/password_reset_key_subject.txt +4 -0
- slm/templates/account/email/unknown_account_message.html +25 -0
- slm/templates/account/email/unknown_account_message.txt +12 -0
- slm/templates/account/email/unknown_account_subject.txt +4 -0
- slm/templates/account/login.html +67 -0
- slm/templates/account/logout.html +38 -0
- slm/templates/account/password_change.html +48 -0
- slm/templates/account/password_reset.html +51 -0
- slm/templates/account/password_reset_done.html +20 -0
- slm/templates/account/password_reset_from_key.html +52 -0
- slm/templates/account/password_reset_from_key_done.html +17 -0
- slm/templates/admin/base.html +7 -0
- slm/templates/messages.html +8 -0
- slm/templates/rest_framework/README +16 -0
- slm/templates/rest_framework/admin/detail.html +10 -0
- slm/templates/rest_framework/admin/dict_value.html +11 -0
- slm/templates/rest_framework/admin/list.html +32 -0
- slm/templates/rest_framework/admin/list_value.html +11 -0
- slm/templates/rest_framework/admin/simple_list_value.html +2 -0
- slm/templates/rest_framework/admin.html +282 -0
- slm/templates/rest_framework/api.html +3 -0
- slm/templates/rest_framework/base.html +334 -0
- slm/templates/rest_framework/docs/auth/basic.html +42 -0
- slm/templates/rest_framework/docs/auth/session.html +40 -0
- slm/templates/rest_framework/docs/auth/token.html +41 -0
- slm/templates/rest_framework/docs/document.html +37 -0
- slm/templates/rest_framework/docs/error.html +71 -0
- slm/templates/rest_framework/docs/index.html +55 -0
- slm/templates/rest_framework/docs/interact.html +57 -0
- slm/templates/rest_framework/docs/langs/javascript-intro.html +5 -0
- slm/templates/rest_framework/docs/langs/javascript.html +15 -0
- slm/templates/rest_framework/docs/langs/python-intro.html +3 -0
- slm/templates/rest_framework/docs/langs/python.html +13 -0
- slm/templates/rest_framework/docs/langs/shell-intro.html +3 -0
- slm/templates/rest_framework/docs/langs/shell.html +6 -0
- slm/templates/rest_framework/docs/link.html +113 -0
- slm/templates/rest_framework/docs/sidebar.html +78 -0
- slm/templates/rest_framework/filters/base.html +16 -0
- slm/templates/rest_framework/filters/ordering.html +17 -0
- slm/templates/rest_framework/filters/search.html +13 -0
- slm/templates/rest_framework/horizontal/checkbox.html +23 -0
- slm/templates/rest_framework/horizontal/checkbox_multiple.html +32 -0
- slm/templates/rest_framework/horizontal/dict_field.html +11 -0
- slm/templates/rest_framework/horizontal/fieldset.html +16 -0
- slm/templates/rest_framework/horizontal/form.html +6 -0
- slm/templates/rest_framework/horizontal/input.html +21 -0
- slm/templates/rest_framework/horizontal/list_field.html +11 -0
- slm/templates/rest_framework/horizontal/list_fieldset.html +13 -0
- slm/templates/rest_framework/horizontal/radio.html +42 -0
- slm/templates/rest_framework/horizontal/select.html +36 -0
- slm/templates/rest_framework/horizontal/select_multiple.html +38 -0
- slm/templates/rest_framework/horizontal/textarea.html +21 -0
- slm/templates/rest_framework/inline/checkbox.html +8 -0
- slm/templates/rest_framework/inline/checkbox_multiple.html +14 -0
- slm/templates/rest_framework/inline/dict_field.html +9 -0
- slm/templates/rest_framework/inline/fieldset.html +6 -0
- slm/templates/rest_framework/inline/form.html +8 -0
- slm/templates/rest_framework/inline/input.html +9 -0
- slm/templates/rest_framework/inline/list_field.html +9 -0
- slm/templates/rest_framework/inline/list_fieldset.html +3 -0
- slm/templates/rest_framework/inline/radio.html +25 -0
- slm/templates/rest_framework/inline/select.html +24 -0
- slm/templates/rest_framework/inline/select_multiple.html +25 -0
- slm/templates/rest_framework/inline/textarea.html +9 -0
- slm/templates/rest_framework/login.html +3 -0
- slm/templates/rest_framework/login_base.html +65 -0
- slm/templates/rest_framework/pagination/numbers.html +47 -0
- slm/templates/rest_framework/pagination/previous_and_next.html +21 -0
- slm/templates/rest_framework/raw_data_form.html +11 -0
- slm/templates/rest_framework/schema.js +3 -0
- slm/templates/rest_framework/vertical/checkbox.html +16 -0
- slm/templates/rest_framework/vertical/checkbox_multiple.html +30 -0
- slm/templates/rest_framework/vertical/dict_field.html +7 -0
- slm/templates/rest_framework/vertical/fieldset.html +13 -0
- slm/templates/rest_framework/vertical/form.html +6 -0
- slm/templates/rest_framework/vertical/input.html +17 -0
- slm/templates/rest_framework/vertical/list_field.html +7 -0
- slm/templates/rest_framework/vertical/list_fieldset.html +7 -0
- slm/templates/rest_framework/vertical/radio.html +40 -0
- slm/templates/rest_framework/vertical/select.html +34 -0
- slm/templates/rest_framework/vertical/select_multiple.html +31 -0
- slm/templates/rest_framework/vertical/textarea.html +17 -0
- slm/templates/slm/about.html +21 -0
- slm/templates/slm/alerts/alert.html +15 -0
- slm/templates/slm/alerts/geodesymlinvalid.html +8 -0
- slm/templates/slm/alerts/importalert.html +10 -0
- slm/templates/slm/alerts.html +18 -0
- slm/templates/slm/auth_menu.html +41 -0
- slm/templates/slm/base.html +195 -0
- slm/templates/slm/emails/alert_issued.html +31 -0
- slm/templates/slm/emails/alert_issued.txt +9 -0
- slm/templates/slm/emails/base.html +6 -0
- slm/templates/slm/emails/changes_rejected.txt +7 -0
- slm/templates/slm/emails/review_requested.txt +7 -0
- slm/templates/slm/forms/widgets/auto_complete.html +21 -0
- slm/templates/slm/forms/widgets/auto_complete_multiple.html +18 -0
- slm/templates/slm/forms/widgets/checkbox_multiple.html +6 -0
- slm/templates/slm/forms/widgets/inline_multi.html +1 -0
- slm/templates/slm/forms/widgets/splitdatetime.html +14 -0
- slm/templates/slm/forms/widgets/time24.html +37 -0
- slm/templates/slm/help.html +54 -0
- slm/templates/slm/messages.html +13 -0
- slm/templates/slm/new_site.html +88 -0
- slm/templates/slm/profile.html +57 -0
- slm/templates/slm/register.html +40 -0
- slm/templates/slm/reports/file_log.html +43 -0
- slm/templates/slm/reports/head_log.html +23 -0
- slm/templates/slm/reports/head_report.html +55 -0
- slm/templates/slm/reports/index_log.html +23 -0
- slm/templates/slm/reports/index_report.html +71 -0
- slm/templates/slm/station/alert.html +8 -0
- slm/templates/slm/station/alerts.html +19 -0
- slm/templates/slm/station/base.html +104 -0
- slm/templates/slm/station/download.html +87 -0
- slm/templates/slm/station/edit.html +283 -0
- slm/templates/slm/station/form.html +110 -0
- slm/templates/slm/station/log.html +18 -0
- slm/templates/slm/station/review.html +461 -0
- slm/templates/slm/station/upload.html +295 -0
- slm/templates/slm/station/uploads/attachment.html +20 -0
- slm/templates/slm/station/uploads/geodesyml.html +1 -0
- slm/templates/slm/station/uploads/image.html +27 -0
- slm/templates/slm/station/uploads/json.html +0 -0
- slm/templates/slm/station/uploads/legacy.html +77 -0
- slm/templates/slm/top_nav.html +14 -0
- slm/templates/slm/user_activity.html +16 -0
- slm/templates/slm/widgets/alert_scroll.html +135 -0
- slm/templates/slm/widgets/filelist.html +258 -0
- slm/templates/slm/widgets/legend.html +12 -0
- slm/templates/slm/widgets/log_scroll.html +88 -0
- slm/templates/slm/widgets/stationlist.html +233 -0
- slm/templatetags/__init__.py +0 -0
- slm/templatetags/jinja2.py +9 -0
- slm/templatetags/slm.py +459 -0
- slm/urls.py +148 -0
- slm/utils.py +299 -0
- slm/validators.py +297 -0
- slm/views.py +654 -0
- slm/widgets.py +134 -0
|
@@ -0,0 +1,4826 @@
|
|
|
1
|
+
# Generated by Django 4.1.7 on 2023-03-30 08:36
|
|
2
|
+
|
|
3
|
+
import ckeditor_uploader.fields
|
|
4
|
+
import django.contrib.gis.db.models.fields
|
|
5
|
+
import django.core.validators
|
|
6
|
+
import django.db.models.deletion
|
|
7
|
+
import django.utils.timezone
|
|
8
|
+
import django_enum.fields
|
|
9
|
+
from django.conf import settings
|
|
10
|
+
from django.db import migrations, models
|
|
11
|
+
|
|
12
|
+
import slm.models.alerts
|
|
13
|
+
import slm.models.sitelog
|
|
14
|
+
import slm.models.system
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class Migration(migrations.Migration):
|
|
18
|
+
initial = True
|
|
19
|
+
|
|
20
|
+
dependencies = [
|
|
21
|
+
("contenttypes", "0002_remove_content_type_name"),
|
|
22
|
+
("auth", "0012_alter_user_first_name_max_length"),
|
|
23
|
+
]
|
|
24
|
+
|
|
25
|
+
operations = [
|
|
26
|
+
migrations.CreateModel(
|
|
27
|
+
name="User",
|
|
28
|
+
fields=[
|
|
29
|
+
(
|
|
30
|
+
"id",
|
|
31
|
+
models.BigAutoField(
|
|
32
|
+
auto_created=True,
|
|
33
|
+
primary_key=True,
|
|
34
|
+
serialize=False,
|
|
35
|
+
verbose_name="ID",
|
|
36
|
+
),
|
|
37
|
+
),
|
|
38
|
+
("password", models.CharField(max_length=128, verbose_name="password")),
|
|
39
|
+
(
|
|
40
|
+
"last_login",
|
|
41
|
+
models.DateTimeField(
|
|
42
|
+
blank=True, null=True, verbose_name="last login"
|
|
43
|
+
),
|
|
44
|
+
),
|
|
45
|
+
(
|
|
46
|
+
"email",
|
|
47
|
+
models.EmailField(
|
|
48
|
+
max_length=255,
|
|
49
|
+
null=True,
|
|
50
|
+
unique=True,
|
|
51
|
+
verbose_name="Email Address",
|
|
52
|
+
),
|
|
53
|
+
),
|
|
54
|
+
(
|
|
55
|
+
"first_name",
|
|
56
|
+
models.CharField(
|
|
57
|
+
blank=True,
|
|
58
|
+
default="",
|
|
59
|
+
max_length=255,
|
|
60
|
+
null=True,
|
|
61
|
+
verbose_name="First Name",
|
|
62
|
+
),
|
|
63
|
+
),
|
|
64
|
+
(
|
|
65
|
+
"last_name",
|
|
66
|
+
models.CharField(
|
|
67
|
+
blank=True,
|
|
68
|
+
default="",
|
|
69
|
+
max_length=255,
|
|
70
|
+
null=True,
|
|
71
|
+
verbose_name="Last Name",
|
|
72
|
+
),
|
|
73
|
+
),
|
|
74
|
+
(
|
|
75
|
+
"is_superuser",
|
|
76
|
+
models.BooleanField(
|
|
77
|
+
db_index=True,
|
|
78
|
+
default=False,
|
|
79
|
+
help_text="Designates whether the user has unlimited access.",
|
|
80
|
+
verbose_name="Superuser",
|
|
81
|
+
),
|
|
82
|
+
),
|
|
83
|
+
(
|
|
84
|
+
"is_active",
|
|
85
|
+
models.BooleanField(
|
|
86
|
+
db_index=True,
|
|
87
|
+
default=True,
|
|
88
|
+
help_text="Designates whether this user should be treated as active. Unselect this instead of deleting accounts.",
|
|
89
|
+
verbose_name="Active",
|
|
90
|
+
),
|
|
91
|
+
),
|
|
92
|
+
(
|
|
93
|
+
"date_joined",
|
|
94
|
+
models.DateTimeField(
|
|
95
|
+
auto_now_add=True, db_index=True, verbose_name="Date Joined"
|
|
96
|
+
),
|
|
97
|
+
),
|
|
98
|
+
(
|
|
99
|
+
"last_activity",
|
|
100
|
+
models.DateTimeField(
|
|
101
|
+
blank=True,
|
|
102
|
+
db_index=True,
|
|
103
|
+
default=None,
|
|
104
|
+
editable=False,
|
|
105
|
+
null=True,
|
|
106
|
+
verbose_name="Last Activity",
|
|
107
|
+
),
|
|
108
|
+
),
|
|
109
|
+
(
|
|
110
|
+
"silence_alerts",
|
|
111
|
+
models.BooleanField(
|
|
112
|
+
blank=True,
|
|
113
|
+
db_index=True,
|
|
114
|
+
default=True,
|
|
115
|
+
help_text="If set to true this user will not be sent any alert emails by the system. Note: this does not apply to account related emails (i.e. password resets).",
|
|
116
|
+
),
|
|
117
|
+
),
|
|
118
|
+
(
|
|
119
|
+
"html_emails",
|
|
120
|
+
models.BooleanField(
|
|
121
|
+
blank=True,
|
|
122
|
+
db_index=True,
|
|
123
|
+
default=True,
|
|
124
|
+
help_text="Receive HTML in email communications.",
|
|
125
|
+
verbose_name="HTML Emails",
|
|
126
|
+
),
|
|
127
|
+
),
|
|
128
|
+
],
|
|
129
|
+
options={
|
|
130
|
+
"permissions": [
|
|
131
|
+
("propose_sites", "May propose new sites for their agencies."),
|
|
132
|
+
("moderate_sites", "May publish logs for sites in their agencies."),
|
|
133
|
+
],
|
|
134
|
+
},
|
|
135
|
+
),
|
|
136
|
+
migrations.CreateModel(
|
|
137
|
+
name="About",
|
|
138
|
+
fields=[
|
|
139
|
+
(
|
|
140
|
+
"id",
|
|
141
|
+
models.BigAutoField(
|
|
142
|
+
auto_created=True,
|
|
143
|
+
primary_key=True,
|
|
144
|
+
serialize=False,
|
|
145
|
+
verbose_name="ID",
|
|
146
|
+
),
|
|
147
|
+
),
|
|
148
|
+
(
|
|
149
|
+
"content",
|
|
150
|
+
ckeditor_uploader.fields.RichTextUploadingField(
|
|
151
|
+
blank=True, default=""
|
|
152
|
+
),
|
|
153
|
+
),
|
|
154
|
+
],
|
|
155
|
+
options={
|
|
156
|
+
"verbose_name": "Page Content: About",
|
|
157
|
+
"verbose_name_plural": "Page Content: About",
|
|
158
|
+
},
|
|
159
|
+
),
|
|
160
|
+
migrations.CreateModel(
|
|
161
|
+
name="Agency",
|
|
162
|
+
fields=[
|
|
163
|
+
("id", models.AutoField(primary_key=True, serialize=False)),
|
|
164
|
+
(
|
|
165
|
+
"name",
|
|
166
|
+
models.CharField(
|
|
167
|
+
blank=True, db_index=True, max_length=100, null=True
|
|
168
|
+
),
|
|
169
|
+
),
|
|
170
|
+
(
|
|
171
|
+
"shortname",
|
|
172
|
+
models.CharField(
|
|
173
|
+
blank=True, db_index=True, max_length=20, null=True
|
|
174
|
+
),
|
|
175
|
+
),
|
|
176
|
+
("url", models.URLField(blank=True, max_length=255, null=True)),
|
|
177
|
+
("address", models.CharField(blank=True, max_length=50, null=True)),
|
|
178
|
+
("address2", models.CharField(blank=True, max_length=50, null=True)),
|
|
179
|
+
("city", models.CharField(blank=True, max_length=50, null=True)),
|
|
180
|
+
("state", models.CharField(blank=True, max_length=30, null=True)),
|
|
181
|
+
("postal_code", models.CharField(blank=True, max_length=20, null=True)),
|
|
182
|
+
("country", models.CharField(blank=True, max_length=50, null=True)),
|
|
183
|
+
("phone1", models.CharField(blank=True, max_length=20, null=True)),
|
|
184
|
+
("phone2", models.CharField(blank=True, max_length=20, null=True)),
|
|
185
|
+
("email1", models.EmailField(blank=True, max_length=100, null=True)),
|
|
186
|
+
("email2", models.EmailField(blank=True, max_length=100, null=True)),
|
|
187
|
+
("contact", models.CharField(blank=True, max_length=50, null=True)),
|
|
188
|
+
("other", models.TextField(blank=True, null=True)),
|
|
189
|
+
("active", models.BooleanField(blank=True, default=True)),
|
|
190
|
+
("created", models.DateTimeField(auto_now_add=True)),
|
|
191
|
+
(
|
|
192
|
+
"public",
|
|
193
|
+
models.BooleanField(
|
|
194
|
+
blank=True,
|
|
195
|
+
db_index=True,
|
|
196
|
+
default=True,
|
|
197
|
+
help_text="Set to false to exclude all sites affiliated with this agency from public exposure.",
|
|
198
|
+
),
|
|
199
|
+
),
|
|
200
|
+
],
|
|
201
|
+
options={
|
|
202
|
+
"managed": True,
|
|
203
|
+
},
|
|
204
|
+
),
|
|
205
|
+
migrations.CreateModel(
|
|
206
|
+
name="Alert",
|
|
207
|
+
fields=[
|
|
208
|
+
(
|
|
209
|
+
"id",
|
|
210
|
+
models.BigAutoField(
|
|
211
|
+
auto_created=True,
|
|
212
|
+
primary_key=True,
|
|
213
|
+
serialize=False,
|
|
214
|
+
verbose_name="ID",
|
|
215
|
+
),
|
|
216
|
+
),
|
|
217
|
+
(
|
|
218
|
+
"header",
|
|
219
|
+
models.CharField(
|
|
220
|
+
default="",
|
|
221
|
+
help_text="A short description of the alert.",
|
|
222
|
+
max_length=50,
|
|
223
|
+
),
|
|
224
|
+
),
|
|
225
|
+
(
|
|
226
|
+
"detail",
|
|
227
|
+
ckeditor_uploader.fields.RichTextUploadingField(
|
|
228
|
+
blank=True,
|
|
229
|
+
default="",
|
|
230
|
+
help_text="Longer description containing details of the alert.",
|
|
231
|
+
),
|
|
232
|
+
),
|
|
233
|
+
(
|
|
234
|
+
"level",
|
|
235
|
+
django_enum.fields.EnumPositiveSmallIntegerField(
|
|
236
|
+
choices=[(1, "NOTICE"), (2, "WARNING"), (3, "ERROR")],
|
|
237
|
+
db_index=True,
|
|
238
|
+
help_text="The severity level of this alert.",
|
|
239
|
+
),
|
|
240
|
+
),
|
|
241
|
+
(
|
|
242
|
+
"timestamp",
|
|
243
|
+
models.DateTimeField(
|
|
244
|
+
auto_now_add=True,
|
|
245
|
+
db_index=True,
|
|
246
|
+
help_text="The time the alert was created.",
|
|
247
|
+
),
|
|
248
|
+
),
|
|
249
|
+
(
|
|
250
|
+
"sticky",
|
|
251
|
+
models.BooleanField(
|
|
252
|
+
blank=True,
|
|
253
|
+
default=False,
|
|
254
|
+
help_text="Do not allow target users to clear this alert, only admins may clear.",
|
|
255
|
+
),
|
|
256
|
+
),
|
|
257
|
+
(
|
|
258
|
+
"priority",
|
|
259
|
+
models.IntegerField(
|
|
260
|
+
blank=True,
|
|
261
|
+
db_index=True,
|
|
262
|
+
default=0,
|
|
263
|
+
help_text="The priority ordering for this alert. Alerts are shown by decreasing priority order first then by decreasing timestamp order.",
|
|
264
|
+
),
|
|
265
|
+
),
|
|
266
|
+
(
|
|
267
|
+
"expires",
|
|
268
|
+
models.DateTimeField(
|
|
269
|
+
blank=True,
|
|
270
|
+
db_index=True,
|
|
271
|
+
default=None,
|
|
272
|
+
help_text="Automatically remove this alert after this time.",
|
|
273
|
+
null=True,
|
|
274
|
+
),
|
|
275
|
+
),
|
|
276
|
+
(
|
|
277
|
+
"send_email",
|
|
278
|
+
models.BooleanField(
|
|
279
|
+
default=False,
|
|
280
|
+
help_text="If true, an email will be sent for this alert to every targeted user.",
|
|
281
|
+
),
|
|
282
|
+
),
|
|
283
|
+
(
|
|
284
|
+
"issuer",
|
|
285
|
+
models.ForeignKey(
|
|
286
|
+
blank=True,
|
|
287
|
+
default=None,
|
|
288
|
+
help_text="The issuing user (if any).",
|
|
289
|
+
null=True,
|
|
290
|
+
on_delete=django.db.models.deletion.SET_NULL,
|
|
291
|
+
to=settings.AUTH_USER_MODEL,
|
|
292
|
+
),
|
|
293
|
+
),
|
|
294
|
+
(
|
|
295
|
+
"polymorphic_ctype",
|
|
296
|
+
models.ForeignKey(
|
|
297
|
+
editable=False,
|
|
298
|
+
null=True,
|
|
299
|
+
on_delete=django.db.models.deletion.CASCADE,
|
|
300
|
+
related_name="polymorphic_%(app_label)s.%(class)s_set+",
|
|
301
|
+
to="contenttypes.contenttype",
|
|
302
|
+
),
|
|
303
|
+
),
|
|
304
|
+
],
|
|
305
|
+
options={
|
|
306
|
+
"verbose_name": "Alerts",
|
|
307
|
+
"verbose_name_plural": " Alerts",
|
|
308
|
+
"ordering": ("-priority", "-timestamp"),
|
|
309
|
+
},
|
|
310
|
+
),
|
|
311
|
+
migrations.CreateModel(
|
|
312
|
+
name="Help",
|
|
313
|
+
fields=[
|
|
314
|
+
(
|
|
315
|
+
"id",
|
|
316
|
+
models.BigAutoField(
|
|
317
|
+
auto_created=True,
|
|
318
|
+
primary_key=True,
|
|
319
|
+
serialize=False,
|
|
320
|
+
verbose_name="ID",
|
|
321
|
+
),
|
|
322
|
+
),
|
|
323
|
+
(
|
|
324
|
+
"content",
|
|
325
|
+
ckeditor_uploader.fields.RichTextUploadingField(
|
|
326
|
+
blank=True, default=""
|
|
327
|
+
),
|
|
328
|
+
),
|
|
329
|
+
],
|
|
330
|
+
options={
|
|
331
|
+
"verbose_name": "Page Content: Help",
|
|
332
|
+
"verbose_name_plural": "Page Content: Help",
|
|
333
|
+
},
|
|
334
|
+
),
|
|
335
|
+
migrations.CreateModel(
|
|
336
|
+
name="Manufacturer",
|
|
337
|
+
fields=[
|
|
338
|
+
(
|
|
339
|
+
"id",
|
|
340
|
+
models.BigAutoField(
|
|
341
|
+
auto_created=True,
|
|
342
|
+
primary_key=True,
|
|
343
|
+
serialize=False,
|
|
344
|
+
verbose_name="ID",
|
|
345
|
+
),
|
|
346
|
+
),
|
|
347
|
+
("name", models.CharField(db_index=True, max_length=45, unique=True)),
|
|
348
|
+
],
|
|
349
|
+
options={
|
|
350
|
+
"managed": True,
|
|
351
|
+
},
|
|
352
|
+
),
|
|
353
|
+
migrations.CreateModel(
|
|
354
|
+
name="Radome",
|
|
355
|
+
fields=[
|
|
356
|
+
(
|
|
357
|
+
"id",
|
|
358
|
+
models.BigAutoField(
|
|
359
|
+
auto_created=True,
|
|
360
|
+
primary_key=True,
|
|
361
|
+
serialize=False,
|
|
362
|
+
verbose_name="ID",
|
|
363
|
+
),
|
|
364
|
+
),
|
|
365
|
+
(
|
|
366
|
+
"model",
|
|
367
|
+
models.CharField(
|
|
368
|
+
db_index=True,
|
|
369
|
+
help_text="The alphanumeric model of designation of this equipment.",
|
|
370
|
+
max_length=50,
|
|
371
|
+
unique=True,
|
|
372
|
+
),
|
|
373
|
+
),
|
|
374
|
+
(
|
|
375
|
+
"description",
|
|
376
|
+
models.CharField(
|
|
377
|
+
blank=True,
|
|
378
|
+
default="",
|
|
379
|
+
help_text="The equipment characteristics.",
|
|
380
|
+
max_length=500,
|
|
381
|
+
),
|
|
382
|
+
),
|
|
383
|
+
(
|
|
384
|
+
"state",
|
|
385
|
+
django_enum.fields.EnumPositiveSmallIntegerField(
|
|
386
|
+
choices=[(100, "Active"), (101, "Legacy"), (102, "Unverified")],
|
|
387
|
+
db_index=True,
|
|
388
|
+
default=102,
|
|
389
|
+
help_text="Has this equipment been verified and is it in active production?",
|
|
390
|
+
),
|
|
391
|
+
),
|
|
392
|
+
(
|
|
393
|
+
"manufacturer",
|
|
394
|
+
models.ForeignKey(
|
|
395
|
+
blank=True,
|
|
396
|
+
default=None,
|
|
397
|
+
help_text="The manufacturing organization.",
|
|
398
|
+
null=True,
|
|
399
|
+
on_delete=django.db.models.deletion.PROTECT,
|
|
400
|
+
related_name="%(class)ss",
|
|
401
|
+
to="slm.manufacturer",
|
|
402
|
+
),
|
|
403
|
+
),
|
|
404
|
+
],
|
|
405
|
+
options={
|
|
406
|
+
"ordering": ("model",),
|
|
407
|
+
"abstract": False,
|
|
408
|
+
},
|
|
409
|
+
),
|
|
410
|
+
migrations.CreateModel(
|
|
411
|
+
name="Receiver",
|
|
412
|
+
fields=[
|
|
413
|
+
(
|
|
414
|
+
"id",
|
|
415
|
+
models.BigAutoField(
|
|
416
|
+
auto_created=True,
|
|
417
|
+
primary_key=True,
|
|
418
|
+
serialize=False,
|
|
419
|
+
verbose_name="ID",
|
|
420
|
+
),
|
|
421
|
+
),
|
|
422
|
+
(
|
|
423
|
+
"model",
|
|
424
|
+
models.CharField(
|
|
425
|
+
db_index=True,
|
|
426
|
+
help_text="The alphanumeric model of designation of this equipment.",
|
|
427
|
+
max_length=50,
|
|
428
|
+
unique=True,
|
|
429
|
+
),
|
|
430
|
+
),
|
|
431
|
+
(
|
|
432
|
+
"description",
|
|
433
|
+
models.CharField(
|
|
434
|
+
blank=True,
|
|
435
|
+
default="",
|
|
436
|
+
help_text="The equipment characteristics.",
|
|
437
|
+
max_length=500,
|
|
438
|
+
),
|
|
439
|
+
),
|
|
440
|
+
(
|
|
441
|
+
"state",
|
|
442
|
+
django_enum.fields.EnumPositiveSmallIntegerField(
|
|
443
|
+
choices=[(100, "Active"), (101, "Legacy"), (102, "Unverified")],
|
|
444
|
+
db_index=True,
|
|
445
|
+
default=102,
|
|
446
|
+
help_text="Has this equipment been verified and is it in active production?",
|
|
447
|
+
),
|
|
448
|
+
),
|
|
449
|
+
(
|
|
450
|
+
"manufacturer",
|
|
451
|
+
models.ForeignKey(
|
|
452
|
+
blank=True,
|
|
453
|
+
default=None,
|
|
454
|
+
help_text="The manufacturing organization.",
|
|
455
|
+
null=True,
|
|
456
|
+
on_delete=django.db.models.deletion.PROTECT,
|
|
457
|
+
related_name="%(class)ss",
|
|
458
|
+
to="slm.manufacturer",
|
|
459
|
+
),
|
|
460
|
+
),
|
|
461
|
+
],
|
|
462
|
+
options={
|
|
463
|
+
"ordering": ("model",),
|
|
464
|
+
"abstract": False,
|
|
465
|
+
},
|
|
466
|
+
),
|
|
467
|
+
migrations.CreateModel(
|
|
468
|
+
name="SatelliteSystem",
|
|
469
|
+
fields=[
|
|
470
|
+
(
|
|
471
|
+
"name",
|
|
472
|
+
models.CharField(
|
|
473
|
+
db_index=True, max_length=16, primary_key=True, serialize=False
|
|
474
|
+
),
|
|
475
|
+
),
|
|
476
|
+
("order", models.IntegerField(blank=True, db_index=True, default=0)),
|
|
477
|
+
],
|
|
478
|
+
options={
|
|
479
|
+
"verbose_name_plural": "Satellite Systems",
|
|
480
|
+
"ordering": ("order",),
|
|
481
|
+
},
|
|
482
|
+
),
|
|
483
|
+
migrations.CreateModel(
|
|
484
|
+
name="Site",
|
|
485
|
+
fields=[
|
|
486
|
+
(
|
|
487
|
+
"id",
|
|
488
|
+
models.BigAutoField(
|
|
489
|
+
auto_created=True,
|
|
490
|
+
primary_key=True,
|
|
491
|
+
serialize=False,
|
|
492
|
+
verbose_name="ID",
|
|
493
|
+
),
|
|
494
|
+
),
|
|
495
|
+
(
|
|
496
|
+
"name",
|
|
497
|
+
models.CharField(
|
|
498
|
+
db_index=True,
|
|
499
|
+
help_text="This is the 9 Character station name (XXXXMRCCC) used in RINEX 3 filenames Format: (XXXX - existing four character IGS station name, M - Monument or marker number (0-9), R - Receiver number (0-9), CCC - Three digit ISO 3166-1 country code)",
|
|
500
|
+
max_length=9,
|
|
501
|
+
unique=True,
|
|
502
|
+
validators=[
|
|
503
|
+
django.core.validators.RegexValidator(
|
|
504
|
+
"[\\w]{4}[\\d]{2}[\\w]{3}"
|
|
505
|
+
)
|
|
506
|
+
],
|
|
507
|
+
),
|
|
508
|
+
),
|
|
509
|
+
(
|
|
510
|
+
"status",
|
|
511
|
+
django_enum.fields.EnumPositiveSmallIntegerField(
|
|
512
|
+
blank=True,
|
|
513
|
+
choices=[
|
|
514
|
+
(1, "Former"),
|
|
515
|
+
(2, "Proposed"),
|
|
516
|
+
(3, "Updated"),
|
|
517
|
+
(4, "Published"),
|
|
518
|
+
(5, "Empty"),
|
|
519
|
+
(6, "Suspended"),
|
|
520
|
+
],
|
|
521
|
+
db_index=True,
|
|
522
|
+
default=2,
|
|
523
|
+
help_text="The current status of the site.",
|
|
524
|
+
),
|
|
525
|
+
),
|
|
526
|
+
(
|
|
527
|
+
"num_flags",
|
|
528
|
+
models.PositiveSmallIntegerField(
|
|
529
|
+
blank=True,
|
|
530
|
+
db_index=True,
|
|
531
|
+
default=0,
|
|
532
|
+
help_text="The number of flags the most recent site log version has.",
|
|
533
|
+
),
|
|
534
|
+
),
|
|
535
|
+
(
|
|
536
|
+
"max_alert",
|
|
537
|
+
django_enum.fields.EnumPositiveSmallIntegerField(
|
|
538
|
+
blank=True,
|
|
539
|
+
choices=[(1, "NOTICE"), (2, "WARNING"), (3, "ERROR")],
|
|
540
|
+
db_index=True,
|
|
541
|
+
default=None,
|
|
542
|
+
help_text="The number of flags the most recent site log version has.",
|
|
543
|
+
null=True,
|
|
544
|
+
),
|
|
545
|
+
),
|
|
546
|
+
("preferred", models.IntegerField(blank=True, default=0)),
|
|
547
|
+
("modified_user", models.IntegerField(blank=True, default=0)),
|
|
548
|
+
(
|
|
549
|
+
"created",
|
|
550
|
+
models.DateTimeField(
|
|
551
|
+
auto_now_add=True,
|
|
552
|
+
db_index=True,
|
|
553
|
+
help_text="The time this site was first registered.",
|
|
554
|
+
null=True,
|
|
555
|
+
),
|
|
556
|
+
),
|
|
557
|
+
(
|
|
558
|
+
"join_date",
|
|
559
|
+
models.DateField(
|
|
560
|
+
blank=True,
|
|
561
|
+
db_index=True,
|
|
562
|
+
help_text="The date this site was first published.",
|
|
563
|
+
null=True,
|
|
564
|
+
),
|
|
565
|
+
),
|
|
566
|
+
(
|
|
567
|
+
"last_publish",
|
|
568
|
+
models.DateTimeField(
|
|
569
|
+
blank=True,
|
|
570
|
+
db_index=True,
|
|
571
|
+
default=None,
|
|
572
|
+
help_text="The publish date of the current log file.",
|
|
573
|
+
null=True,
|
|
574
|
+
),
|
|
575
|
+
),
|
|
576
|
+
(
|
|
577
|
+
"last_update",
|
|
578
|
+
models.DateTimeField(
|
|
579
|
+
blank=True,
|
|
580
|
+
db_index=True,
|
|
581
|
+
default=None,
|
|
582
|
+
help_text="The time of the most recent update to the site log.",
|
|
583
|
+
null=True,
|
|
584
|
+
),
|
|
585
|
+
),
|
|
586
|
+
(
|
|
587
|
+
"agencies",
|
|
588
|
+
models.ManyToManyField(related_name="sites", to="slm.agency"),
|
|
589
|
+
),
|
|
590
|
+
(
|
|
591
|
+
"last_user",
|
|
592
|
+
models.ForeignKey(
|
|
593
|
+
blank=True,
|
|
594
|
+
default=None,
|
|
595
|
+
help_text="The last user to make edits to the site log.",
|
|
596
|
+
null=True,
|
|
597
|
+
on_delete=django.db.models.deletion.SET_NULL,
|
|
598
|
+
related_name="recent_sites",
|
|
599
|
+
to=settings.AUTH_USER_MODEL,
|
|
600
|
+
),
|
|
601
|
+
),
|
|
602
|
+
(
|
|
603
|
+
"owner",
|
|
604
|
+
models.ForeignKey(
|
|
605
|
+
blank=True,
|
|
606
|
+
default=None,
|
|
607
|
+
null=True,
|
|
608
|
+
on_delete=django.db.models.deletion.SET_NULL,
|
|
609
|
+
to=settings.AUTH_USER_MODEL,
|
|
610
|
+
),
|
|
611
|
+
),
|
|
612
|
+
],
|
|
613
|
+
),
|
|
614
|
+
migrations.CreateModel(
|
|
615
|
+
name="SiteTideGauge",
|
|
616
|
+
fields=[
|
|
617
|
+
(
|
|
618
|
+
"id",
|
|
619
|
+
models.BigAutoField(
|
|
620
|
+
auto_created=True,
|
|
621
|
+
primary_key=True,
|
|
622
|
+
serialize=False,
|
|
623
|
+
verbose_name="ID",
|
|
624
|
+
),
|
|
625
|
+
),
|
|
626
|
+
("distance", models.IntegerField(blank=True, db_index=True)),
|
|
627
|
+
],
|
|
628
|
+
options={
|
|
629
|
+
"ordering": ("site", "distance"),
|
|
630
|
+
},
|
|
631
|
+
),
|
|
632
|
+
migrations.CreateModel(
|
|
633
|
+
name="AgencyAlert",
|
|
634
|
+
fields=[
|
|
635
|
+
(
|
|
636
|
+
"alert_ptr",
|
|
637
|
+
models.OneToOneField(
|
|
638
|
+
auto_created=True,
|
|
639
|
+
on_delete=django.db.models.deletion.CASCADE,
|
|
640
|
+
parent_link=True,
|
|
641
|
+
primary_key=True,
|
|
642
|
+
serialize=False,
|
|
643
|
+
to="slm.alert",
|
|
644
|
+
),
|
|
645
|
+
),
|
|
646
|
+
],
|
|
647
|
+
options={
|
|
648
|
+
"verbose_name": "Agency Alert",
|
|
649
|
+
"verbose_name_plural": " Alerts: Agency",
|
|
650
|
+
},
|
|
651
|
+
bases=("slm.alert",),
|
|
652
|
+
),
|
|
653
|
+
migrations.CreateModel(
|
|
654
|
+
name="GeodesyMLInvalid",
|
|
655
|
+
fields=[
|
|
656
|
+
(
|
|
657
|
+
"alert_ptr",
|
|
658
|
+
models.OneToOneField(
|
|
659
|
+
auto_created=True,
|
|
660
|
+
on_delete=django.db.models.deletion.CASCADE,
|
|
661
|
+
parent_link=True,
|
|
662
|
+
primary_key=True,
|
|
663
|
+
serialize=False,
|
|
664
|
+
to="slm.alert",
|
|
665
|
+
),
|
|
666
|
+
),
|
|
667
|
+
(
|
|
668
|
+
"file",
|
|
669
|
+
models.FileField(
|
|
670
|
+
help_text="A pointer to the uploaded file on disk.",
|
|
671
|
+
max_length=255,
|
|
672
|
+
upload_to=slm.models.system.site_upload_path,
|
|
673
|
+
),
|
|
674
|
+
),
|
|
675
|
+
(
|
|
676
|
+
"size",
|
|
677
|
+
models.PositiveIntegerField(blank=True, default=None, null=True),
|
|
678
|
+
),
|
|
679
|
+
(
|
|
680
|
+
"thumbnail",
|
|
681
|
+
models.ImageField(
|
|
682
|
+
blank=True,
|
|
683
|
+
default=None,
|
|
684
|
+
help_text="A pointer to the generated thumbnail file on disk.",
|
|
685
|
+
null=True,
|
|
686
|
+
upload_to=slm.models.system.site_thumbnail_path,
|
|
687
|
+
),
|
|
688
|
+
),
|
|
689
|
+
(
|
|
690
|
+
"mimetype",
|
|
691
|
+
models.CharField(
|
|
692
|
+
db_index=True,
|
|
693
|
+
default="",
|
|
694
|
+
help_text="The mimetype of the file.",
|
|
695
|
+
max_length=255,
|
|
696
|
+
),
|
|
697
|
+
),
|
|
698
|
+
(
|
|
699
|
+
"file_type",
|
|
700
|
+
django_enum.fields.EnumPositiveSmallIntegerField(
|
|
701
|
+
choices=[(1, "Site Log"), (2, "Site Image"), (3, "Attachment")],
|
|
702
|
+
db_index=True,
|
|
703
|
+
default=3,
|
|
704
|
+
help_text="The file type of the upload.",
|
|
705
|
+
),
|
|
706
|
+
),
|
|
707
|
+
(
|
|
708
|
+
"log_format",
|
|
709
|
+
django_enum.fields.EnumPositiveSmallIntegerField(
|
|
710
|
+
choices=[(1, "Legacy (ASCII)"), (2, "GeodesyML"), (3, "JSON")],
|
|
711
|
+
db_index=True,
|
|
712
|
+
default=None,
|
|
713
|
+
help_text="The site log format. (Only if file_type is Site Log)",
|
|
714
|
+
null=True,
|
|
715
|
+
),
|
|
716
|
+
),
|
|
717
|
+
("findings", models.JSONField()),
|
|
718
|
+
(
|
|
719
|
+
"schema",
|
|
720
|
+
django_enum.fields.EnumPositiveSmallIntegerField(
|
|
721
|
+
choices=[(1, "GeodesyML/0.4"), (2, "GeodesyML/0.5")],
|
|
722
|
+
default=2,
|
|
723
|
+
help_text="The schema version that failed validation.",
|
|
724
|
+
),
|
|
725
|
+
),
|
|
726
|
+
(
|
|
727
|
+
"published",
|
|
728
|
+
models.BooleanField(
|
|
729
|
+
help_text="True if this alert was issued from the published version of the site log."
|
|
730
|
+
),
|
|
731
|
+
),
|
|
732
|
+
],
|
|
733
|
+
options={
|
|
734
|
+
"verbose_name": "GeodesyML Invalid",
|
|
735
|
+
"verbose_name_plural": " Alerts: GeodesyML Invalid",
|
|
736
|
+
},
|
|
737
|
+
bases=(slm.models.alerts.AutomatedAlertMixin, "slm.alert", models.Model),
|
|
738
|
+
),
|
|
739
|
+
migrations.CreateModel(
|
|
740
|
+
name="ImportAlert",
|
|
741
|
+
fields=[
|
|
742
|
+
(
|
|
743
|
+
"alert_ptr",
|
|
744
|
+
models.OneToOneField(
|
|
745
|
+
auto_created=True,
|
|
746
|
+
on_delete=django.db.models.deletion.CASCADE,
|
|
747
|
+
parent_link=True,
|
|
748
|
+
primary_key=True,
|
|
749
|
+
serialize=False,
|
|
750
|
+
to="slm.alert",
|
|
751
|
+
),
|
|
752
|
+
),
|
|
753
|
+
],
|
|
754
|
+
options={
|
|
755
|
+
"verbose_name": "Import Alert",
|
|
756
|
+
"verbose_name_plural": " Alerts: Import",
|
|
757
|
+
},
|
|
758
|
+
bases=("slm.alert",),
|
|
759
|
+
),
|
|
760
|
+
migrations.CreateModel(
|
|
761
|
+
name="UserProfile",
|
|
762
|
+
fields=[
|
|
763
|
+
(
|
|
764
|
+
"id",
|
|
765
|
+
models.BigAutoField(
|
|
766
|
+
auto_created=True,
|
|
767
|
+
primary_key=True,
|
|
768
|
+
serialize=False,
|
|
769
|
+
verbose_name="ID",
|
|
770
|
+
),
|
|
771
|
+
),
|
|
772
|
+
(
|
|
773
|
+
"phone1",
|
|
774
|
+
models.CharField(
|
|
775
|
+
blank=True,
|
|
776
|
+
default=None,
|
|
777
|
+
max_length=20,
|
|
778
|
+
null=True,
|
|
779
|
+
verbose_name="Primary Phone Number",
|
|
780
|
+
),
|
|
781
|
+
),
|
|
782
|
+
(
|
|
783
|
+
"phone2",
|
|
784
|
+
models.CharField(
|
|
785
|
+
blank=True,
|
|
786
|
+
default=None,
|
|
787
|
+
max_length=20,
|
|
788
|
+
null=True,
|
|
789
|
+
verbose_name="Secondary Phone Number",
|
|
790
|
+
),
|
|
791
|
+
),
|
|
792
|
+
(
|
|
793
|
+
"address1",
|
|
794
|
+
models.CharField(
|
|
795
|
+
blank=True,
|
|
796
|
+
default=None,
|
|
797
|
+
max_length=255,
|
|
798
|
+
null=True,
|
|
799
|
+
verbose_name="Address Line 1",
|
|
800
|
+
),
|
|
801
|
+
),
|
|
802
|
+
(
|
|
803
|
+
"address2",
|
|
804
|
+
models.CharField(
|
|
805
|
+
blank=True,
|
|
806
|
+
default=None,
|
|
807
|
+
max_length=255,
|
|
808
|
+
null=True,
|
|
809
|
+
verbose_name="Address Line 2",
|
|
810
|
+
),
|
|
811
|
+
),
|
|
812
|
+
(
|
|
813
|
+
"address3",
|
|
814
|
+
models.CharField(
|
|
815
|
+
blank=True,
|
|
816
|
+
default=None,
|
|
817
|
+
max_length=255,
|
|
818
|
+
null=True,
|
|
819
|
+
verbose_name="Address Line 3",
|
|
820
|
+
),
|
|
821
|
+
),
|
|
822
|
+
(
|
|
823
|
+
"city",
|
|
824
|
+
models.CharField(
|
|
825
|
+
blank=True,
|
|
826
|
+
default=None,
|
|
827
|
+
max_length=100,
|
|
828
|
+
null=True,
|
|
829
|
+
verbose_name="City",
|
|
830
|
+
),
|
|
831
|
+
),
|
|
832
|
+
(
|
|
833
|
+
"state_province",
|
|
834
|
+
models.CharField(
|
|
835
|
+
blank=True,
|
|
836
|
+
default=None,
|
|
837
|
+
max_length=100,
|
|
838
|
+
null=True,
|
|
839
|
+
verbose_name="State/Province",
|
|
840
|
+
),
|
|
841
|
+
),
|
|
842
|
+
(
|
|
843
|
+
"country",
|
|
844
|
+
models.CharField(
|
|
845
|
+
blank=True,
|
|
846
|
+
default=None,
|
|
847
|
+
max_length=75,
|
|
848
|
+
null=True,
|
|
849
|
+
verbose_name="Country",
|
|
850
|
+
),
|
|
851
|
+
),
|
|
852
|
+
(
|
|
853
|
+
"postal_code",
|
|
854
|
+
models.CharField(
|
|
855
|
+
blank=True, max_length=10, null=True, verbose_name="Postal Code"
|
|
856
|
+
),
|
|
857
|
+
),
|
|
858
|
+
(
|
|
859
|
+
"registration_agency",
|
|
860
|
+
models.CharField(
|
|
861
|
+
blank=True,
|
|
862
|
+
default=None,
|
|
863
|
+
max_length=40,
|
|
864
|
+
null=True,
|
|
865
|
+
verbose_name="Registration Agency",
|
|
866
|
+
),
|
|
867
|
+
),
|
|
868
|
+
(
|
|
869
|
+
"user",
|
|
870
|
+
models.OneToOneField(
|
|
871
|
+
blank=True,
|
|
872
|
+
default=None,
|
|
873
|
+
null=True,
|
|
874
|
+
on_delete=django.db.models.deletion.CASCADE,
|
|
875
|
+
related_name="profile",
|
|
876
|
+
to=settings.AUTH_USER_MODEL,
|
|
877
|
+
),
|
|
878
|
+
),
|
|
879
|
+
],
|
|
880
|
+
),
|
|
881
|
+
migrations.CreateModel(
|
|
882
|
+
name="TideGauge",
|
|
883
|
+
fields=[
|
|
884
|
+
(
|
|
885
|
+
"id",
|
|
886
|
+
models.BigAutoField(
|
|
887
|
+
auto_created=True,
|
|
888
|
+
primary_key=True,
|
|
889
|
+
serialize=False,
|
|
890
|
+
verbose_name="ID",
|
|
891
|
+
),
|
|
892
|
+
),
|
|
893
|
+
("name", models.CharField(blank=True, db_index=True, max_length=128)),
|
|
894
|
+
(
|
|
895
|
+
"position",
|
|
896
|
+
django.contrib.gis.db.models.fields.PointField(
|
|
897
|
+
blank=True, geography=True, null=True, srid=4326
|
|
898
|
+
),
|
|
899
|
+
),
|
|
900
|
+
("sonel_id", models.IntegerField(blank=True, db_index=True, null=True)),
|
|
901
|
+
(
|
|
902
|
+
"sites",
|
|
903
|
+
models.ManyToManyField(
|
|
904
|
+
related_name="tide_gauges",
|
|
905
|
+
through="slm.SiteTideGauge",
|
|
906
|
+
to="slm.site",
|
|
907
|
+
),
|
|
908
|
+
),
|
|
909
|
+
],
|
|
910
|
+
options={
|
|
911
|
+
"verbose_name": "Tide Gauge",
|
|
912
|
+
"verbose_name_plural": "Tide Gauges",
|
|
913
|
+
"ordering": ("name",),
|
|
914
|
+
},
|
|
915
|
+
),
|
|
916
|
+
migrations.CreateModel(
|
|
917
|
+
name="SiteWaterVaporRadiometer",
|
|
918
|
+
fields=[
|
|
919
|
+
(
|
|
920
|
+
"id",
|
|
921
|
+
models.BigAutoField(
|
|
922
|
+
auto_created=True,
|
|
923
|
+
primary_key=True,
|
|
924
|
+
serialize=False,
|
|
925
|
+
verbose_name="ID",
|
|
926
|
+
),
|
|
927
|
+
),
|
|
928
|
+
("edited", models.DateTimeField(auto_now_add=True, db_index=True)),
|
|
929
|
+
("published", models.BooleanField(db_index=True, default=False)),
|
|
930
|
+
(
|
|
931
|
+
"_flags",
|
|
932
|
+
models.JSONField(
|
|
933
|
+
blank=True,
|
|
934
|
+
default=dict,
|
|
935
|
+
encoder=slm.models.sitelog.DefaultToStrEncoder,
|
|
936
|
+
),
|
|
937
|
+
),
|
|
938
|
+
(
|
|
939
|
+
"num_flags",
|
|
940
|
+
models.PositiveSmallIntegerField(db_index=True, default=0),
|
|
941
|
+
),
|
|
942
|
+
(
|
|
943
|
+
"subsection",
|
|
944
|
+
models.PositiveSmallIntegerField(blank=True, db_index=True),
|
|
945
|
+
),
|
|
946
|
+
("is_deleted", models.BooleanField(blank=True, default=False)),
|
|
947
|
+
(
|
|
948
|
+
"inserted",
|
|
949
|
+
models.DateTimeField(
|
|
950
|
+
db_index=True, default=django.utils.timezone.now
|
|
951
|
+
),
|
|
952
|
+
),
|
|
953
|
+
(
|
|
954
|
+
"manufacturer",
|
|
955
|
+
models.CharField(
|
|
956
|
+
db_index=True,
|
|
957
|
+
help_text="Enter manufacturer's name",
|
|
958
|
+
max_length=255,
|
|
959
|
+
verbose_name="Manufacturer",
|
|
960
|
+
),
|
|
961
|
+
),
|
|
962
|
+
(
|
|
963
|
+
"serial_number",
|
|
964
|
+
models.CharField(
|
|
965
|
+
blank=True,
|
|
966
|
+
db_index=True,
|
|
967
|
+
default="",
|
|
968
|
+
help_text="Enter the serial number of the sensor",
|
|
969
|
+
max_length=50,
|
|
970
|
+
verbose_name="Serial Number",
|
|
971
|
+
),
|
|
972
|
+
),
|
|
973
|
+
(
|
|
974
|
+
"height_diff",
|
|
975
|
+
models.FloatField(
|
|
976
|
+
db_index=True,
|
|
977
|
+
help_text="In meters, enter the difference in height between the sensor and the GNSS antenna. Positive number indicates the sensor is above the GNSS antenna. Decimeter accuracy preferred. Format: (m)",
|
|
978
|
+
null=True,
|
|
979
|
+
verbose_name="Height Diff to Ant (m)",
|
|
980
|
+
),
|
|
981
|
+
),
|
|
982
|
+
(
|
|
983
|
+
"calibration",
|
|
984
|
+
models.DateField(
|
|
985
|
+
blank=True,
|
|
986
|
+
db_index=True,
|
|
987
|
+
default=None,
|
|
988
|
+
help_text="Enter the date the sensor was calibrated. Format: (CCYY-MM-DD)",
|
|
989
|
+
null=True,
|
|
990
|
+
verbose_name="Calibration Date",
|
|
991
|
+
),
|
|
992
|
+
),
|
|
993
|
+
(
|
|
994
|
+
"effective_start",
|
|
995
|
+
models.DateField(
|
|
996
|
+
db_index=True,
|
|
997
|
+
help_text="Enter the effective start date for the sensor. Format: (CCYY-MM-DD)",
|
|
998
|
+
null=True,
|
|
999
|
+
),
|
|
1000
|
+
),
|
|
1001
|
+
(
|
|
1002
|
+
"effective_end",
|
|
1003
|
+
models.DateField(
|
|
1004
|
+
blank=True,
|
|
1005
|
+
db_index=True,
|
|
1006
|
+
default=None,
|
|
1007
|
+
help_text="Enter the effective end date for the sensor. Format: (CCYY-MM-DD)",
|
|
1008
|
+
null=True,
|
|
1009
|
+
),
|
|
1010
|
+
),
|
|
1011
|
+
(
|
|
1012
|
+
"notes",
|
|
1013
|
+
models.TextField(
|
|
1014
|
+
blank=True,
|
|
1015
|
+
default="",
|
|
1016
|
+
help_text="Enter any additional information relevant to the sensor. Format: (multiple lines)",
|
|
1017
|
+
verbose_name="Notes",
|
|
1018
|
+
),
|
|
1019
|
+
),
|
|
1020
|
+
(
|
|
1021
|
+
"model",
|
|
1022
|
+
models.CharField(
|
|
1023
|
+
db_index=True,
|
|
1024
|
+
help_text="Enter water vapor radiometer",
|
|
1025
|
+
max_length=255,
|
|
1026
|
+
verbose_name="Water Vapor Radiometer",
|
|
1027
|
+
),
|
|
1028
|
+
),
|
|
1029
|
+
(
|
|
1030
|
+
"distance_to_antenna",
|
|
1031
|
+
models.FloatField(
|
|
1032
|
+
db_index=True,
|
|
1033
|
+
default=None,
|
|
1034
|
+
help_text="Enter the horizontal distance between the WVR and the GNSS antenna to the nearest meter. Format: (m)",
|
|
1035
|
+
null=True,
|
|
1036
|
+
verbose_name="Distance to Antenna (m)",
|
|
1037
|
+
),
|
|
1038
|
+
),
|
|
1039
|
+
(
|
|
1040
|
+
"site",
|
|
1041
|
+
models.ForeignKey(
|
|
1042
|
+
on_delete=django.db.models.deletion.CASCADE, to="slm.site"
|
|
1043
|
+
),
|
|
1044
|
+
),
|
|
1045
|
+
],
|
|
1046
|
+
options={
|
|
1047
|
+
"abstract": False,
|
|
1048
|
+
},
|
|
1049
|
+
),
|
|
1050
|
+
migrations.AddField(
|
|
1051
|
+
model_name="sitetidegauge",
|
|
1052
|
+
name="gauge",
|
|
1053
|
+
field=models.ForeignKey(
|
|
1054
|
+
on_delete=django.db.models.deletion.CASCADE,
|
|
1055
|
+
related_name="site_distances",
|
|
1056
|
+
to="slm.tidegauge",
|
|
1057
|
+
),
|
|
1058
|
+
),
|
|
1059
|
+
migrations.AddField(
|
|
1060
|
+
model_name="sitetidegauge",
|
|
1061
|
+
name="site",
|
|
1062
|
+
field=models.ForeignKey(
|
|
1063
|
+
on_delete=django.db.models.deletion.CASCADE,
|
|
1064
|
+
related_name="tide_gauge_distances",
|
|
1065
|
+
to="slm.site",
|
|
1066
|
+
),
|
|
1067
|
+
),
|
|
1068
|
+
migrations.CreateModel(
|
|
1069
|
+
name="SiteTemperatureSensor",
|
|
1070
|
+
fields=[
|
|
1071
|
+
(
|
|
1072
|
+
"id",
|
|
1073
|
+
models.BigAutoField(
|
|
1074
|
+
auto_created=True,
|
|
1075
|
+
primary_key=True,
|
|
1076
|
+
serialize=False,
|
|
1077
|
+
verbose_name="ID",
|
|
1078
|
+
),
|
|
1079
|
+
),
|
|
1080
|
+
("edited", models.DateTimeField(auto_now_add=True, db_index=True)),
|
|
1081
|
+
("published", models.BooleanField(db_index=True, default=False)),
|
|
1082
|
+
(
|
|
1083
|
+
"_flags",
|
|
1084
|
+
models.JSONField(
|
|
1085
|
+
blank=True,
|
|
1086
|
+
default=dict,
|
|
1087
|
+
encoder=slm.models.sitelog.DefaultToStrEncoder,
|
|
1088
|
+
),
|
|
1089
|
+
),
|
|
1090
|
+
(
|
|
1091
|
+
"num_flags",
|
|
1092
|
+
models.PositiveSmallIntegerField(db_index=True, default=0),
|
|
1093
|
+
),
|
|
1094
|
+
(
|
|
1095
|
+
"subsection",
|
|
1096
|
+
models.PositiveSmallIntegerField(blank=True, db_index=True),
|
|
1097
|
+
),
|
|
1098
|
+
("is_deleted", models.BooleanField(blank=True, default=False)),
|
|
1099
|
+
(
|
|
1100
|
+
"inserted",
|
|
1101
|
+
models.DateTimeField(
|
|
1102
|
+
db_index=True, default=django.utils.timezone.now
|
|
1103
|
+
),
|
|
1104
|
+
),
|
|
1105
|
+
(
|
|
1106
|
+
"manufacturer",
|
|
1107
|
+
models.CharField(
|
|
1108
|
+
db_index=True,
|
|
1109
|
+
help_text="Enter manufacturer's name",
|
|
1110
|
+
max_length=255,
|
|
1111
|
+
verbose_name="Manufacturer",
|
|
1112
|
+
),
|
|
1113
|
+
),
|
|
1114
|
+
(
|
|
1115
|
+
"serial_number",
|
|
1116
|
+
models.CharField(
|
|
1117
|
+
blank=True,
|
|
1118
|
+
db_index=True,
|
|
1119
|
+
default="",
|
|
1120
|
+
help_text="Enter the serial number of the sensor",
|
|
1121
|
+
max_length=50,
|
|
1122
|
+
verbose_name="Serial Number",
|
|
1123
|
+
),
|
|
1124
|
+
),
|
|
1125
|
+
(
|
|
1126
|
+
"height_diff",
|
|
1127
|
+
models.FloatField(
|
|
1128
|
+
db_index=True,
|
|
1129
|
+
help_text="In meters, enter the difference in height between the sensor and the GNSS antenna. Positive number indicates the sensor is above the GNSS antenna. Decimeter accuracy preferred. Format: (m)",
|
|
1130
|
+
null=True,
|
|
1131
|
+
verbose_name="Height Diff to Ant (m)",
|
|
1132
|
+
),
|
|
1133
|
+
),
|
|
1134
|
+
(
|
|
1135
|
+
"calibration",
|
|
1136
|
+
models.DateField(
|
|
1137
|
+
blank=True,
|
|
1138
|
+
db_index=True,
|
|
1139
|
+
default=None,
|
|
1140
|
+
help_text="Enter the date the sensor was calibrated. Format: (CCYY-MM-DD)",
|
|
1141
|
+
null=True,
|
|
1142
|
+
verbose_name="Calibration Date",
|
|
1143
|
+
),
|
|
1144
|
+
),
|
|
1145
|
+
(
|
|
1146
|
+
"effective_start",
|
|
1147
|
+
models.DateField(
|
|
1148
|
+
db_index=True,
|
|
1149
|
+
help_text="Enter the effective start date for the sensor. Format: (CCYY-MM-DD)",
|
|
1150
|
+
null=True,
|
|
1151
|
+
),
|
|
1152
|
+
),
|
|
1153
|
+
(
|
|
1154
|
+
"effective_end",
|
|
1155
|
+
models.DateField(
|
|
1156
|
+
blank=True,
|
|
1157
|
+
db_index=True,
|
|
1158
|
+
default=None,
|
|
1159
|
+
help_text="Enter the effective end date for the sensor. Format: (CCYY-MM-DD)",
|
|
1160
|
+
null=True,
|
|
1161
|
+
),
|
|
1162
|
+
),
|
|
1163
|
+
(
|
|
1164
|
+
"notes",
|
|
1165
|
+
models.TextField(
|
|
1166
|
+
blank=True,
|
|
1167
|
+
default="",
|
|
1168
|
+
help_text="Enter any additional information relevant to the sensor. Format: (multiple lines)",
|
|
1169
|
+
verbose_name="Notes",
|
|
1170
|
+
),
|
|
1171
|
+
),
|
|
1172
|
+
(
|
|
1173
|
+
"model",
|
|
1174
|
+
models.CharField(
|
|
1175
|
+
db_index=True,
|
|
1176
|
+
help_text="Enter temperature sensor model",
|
|
1177
|
+
max_length=255,
|
|
1178
|
+
verbose_name="Temp. Sensor Model",
|
|
1179
|
+
),
|
|
1180
|
+
),
|
|
1181
|
+
(
|
|
1182
|
+
"sampling_interval",
|
|
1183
|
+
models.PositiveSmallIntegerField(
|
|
1184
|
+
blank=True,
|
|
1185
|
+
db_index=True,
|
|
1186
|
+
default=None,
|
|
1187
|
+
help_text="Enter the sample interval in seconds. Format: (sec)",
|
|
1188
|
+
null=True,
|
|
1189
|
+
verbose_name="Data Sampling Interval",
|
|
1190
|
+
),
|
|
1191
|
+
),
|
|
1192
|
+
(
|
|
1193
|
+
"accuracy",
|
|
1194
|
+
models.FloatField(
|
|
1195
|
+
blank=True,
|
|
1196
|
+
db_index=True,
|
|
1197
|
+
default=None,
|
|
1198
|
+
help_text="Enter the accuracy in degrees Centigrade. Format: (deg C)",
|
|
1199
|
+
null=True,
|
|
1200
|
+
verbose_name="Accuracy (deg C)",
|
|
1201
|
+
),
|
|
1202
|
+
),
|
|
1203
|
+
(
|
|
1204
|
+
"aspiration",
|
|
1205
|
+
django_enum.fields.EnumCharField(
|
|
1206
|
+
blank=True,
|
|
1207
|
+
choices=[("U", "UNASPIRATED"), ("N", "NATURAL"), ("F", "FAN")],
|
|
1208
|
+
db_index=True,
|
|
1209
|
+
default=None,
|
|
1210
|
+
help_text="Enter the aspiration type if known. Format: (UNASPIRATED/NATURAL/FAN/etc)",
|
|
1211
|
+
max_length=50,
|
|
1212
|
+
null=True,
|
|
1213
|
+
verbose_name="Aspiration",
|
|
1214
|
+
),
|
|
1215
|
+
),
|
|
1216
|
+
(
|
|
1217
|
+
"site",
|
|
1218
|
+
models.ForeignKey(
|
|
1219
|
+
on_delete=django.db.models.deletion.CASCADE, to="slm.site"
|
|
1220
|
+
),
|
|
1221
|
+
),
|
|
1222
|
+
],
|
|
1223
|
+
options={
|
|
1224
|
+
"abstract": False,
|
|
1225
|
+
},
|
|
1226
|
+
),
|
|
1227
|
+
migrations.CreateModel(
|
|
1228
|
+
name="SiteSignalObstructions",
|
|
1229
|
+
fields=[
|
|
1230
|
+
(
|
|
1231
|
+
"id",
|
|
1232
|
+
models.BigAutoField(
|
|
1233
|
+
auto_created=True,
|
|
1234
|
+
primary_key=True,
|
|
1235
|
+
serialize=False,
|
|
1236
|
+
verbose_name="ID",
|
|
1237
|
+
),
|
|
1238
|
+
),
|
|
1239
|
+
("edited", models.DateTimeField(auto_now_add=True, db_index=True)),
|
|
1240
|
+
("published", models.BooleanField(db_index=True, default=False)),
|
|
1241
|
+
(
|
|
1242
|
+
"_flags",
|
|
1243
|
+
models.JSONField(
|
|
1244
|
+
blank=True,
|
|
1245
|
+
default=dict,
|
|
1246
|
+
encoder=slm.models.sitelog.DefaultToStrEncoder,
|
|
1247
|
+
),
|
|
1248
|
+
),
|
|
1249
|
+
(
|
|
1250
|
+
"num_flags",
|
|
1251
|
+
models.PositiveSmallIntegerField(db_index=True, default=0),
|
|
1252
|
+
),
|
|
1253
|
+
(
|
|
1254
|
+
"subsection",
|
|
1255
|
+
models.PositiveSmallIntegerField(blank=True, db_index=True),
|
|
1256
|
+
),
|
|
1257
|
+
("is_deleted", models.BooleanField(blank=True, default=False)),
|
|
1258
|
+
(
|
|
1259
|
+
"inserted",
|
|
1260
|
+
models.DateTimeField(
|
|
1261
|
+
db_index=True, default=django.utils.timezone.now
|
|
1262
|
+
),
|
|
1263
|
+
),
|
|
1264
|
+
(
|
|
1265
|
+
"effective_start",
|
|
1266
|
+
models.DateField(
|
|
1267
|
+
blank=True,
|
|
1268
|
+
db_index=True,
|
|
1269
|
+
default=None,
|
|
1270
|
+
help_text="Enter the effective start date for the condition. Format: (CCYY-MM-DD)",
|
|
1271
|
+
null=True,
|
|
1272
|
+
),
|
|
1273
|
+
),
|
|
1274
|
+
(
|
|
1275
|
+
"effective_end",
|
|
1276
|
+
models.DateField(
|
|
1277
|
+
blank=True,
|
|
1278
|
+
db_index=True,
|
|
1279
|
+
default=None,
|
|
1280
|
+
help_text="Enter the effective end date for the condition. Format: (CCYY-MM-DD)",
|
|
1281
|
+
null=True,
|
|
1282
|
+
),
|
|
1283
|
+
),
|
|
1284
|
+
(
|
|
1285
|
+
"additional_information",
|
|
1286
|
+
models.TextField(
|
|
1287
|
+
blank=True,
|
|
1288
|
+
default="",
|
|
1289
|
+
help_text="Enter additional relevant information about any radio interferences. Format: (multiple lines)",
|
|
1290
|
+
verbose_name="Additional Information",
|
|
1291
|
+
),
|
|
1292
|
+
),
|
|
1293
|
+
(
|
|
1294
|
+
"obstructions",
|
|
1295
|
+
models.CharField(
|
|
1296
|
+
blank=True,
|
|
1297
|
+
db_index=True,
|
|
1298
|
+
default="",
|
|
1299
|
+
help_text="Describe any potential signal obstructions near the GNSS station. Format: (TREES/BUILDLINGS/etc)",
|
|
1300
|
+
max_length=50,
|
|
1301
|
+
verbose_name="Signal Obstructions",
|
|
1302
|
+
),
|
|
1303
|
+
),
|
|
1304
|
+
(
|
|
1305
|
+
"site",
|
|
1306
|
+
models.ForeignKey(
|
|
1307
|
+
on_delete=django.db.models.deletion.CASCADE, to="slm.site"
|
|
1308
|
+
),
|
|
1309
|
+
),
|
|
1310
|
+
],
|
|
1311
|
+
options={
|
|
1312
|
+
"abstract": False,
|
|
1313
|
+
},
|
|
1314
|
+
),
|
|
1315
|
+
migrations.CreateModel(
|
|
1316
|
+
name="SiteResponsibleAgency",
|
|
1317
|
+
fields=[
|
|
1318
|
+
(
|
|
1319
|
+
"id",
|
|
1320
|
+
models.BigAutoField(
|
|
1321
|
+
auto_created=True,
|
|
1322
|
+
primary_key=True,
|
|
1323
|
+
serialize=False,
|
|
1324
|
+
verbose_name="ID",
|
|
1325
|
+
),
|
|
1326
|
+
),
|
|
1327
|
+
("edited", models.DateTimeField(auto_now_add=True, db_index=True)),
|
|
1328
|
+
("published", models.BooleanField(db_index=True, default=False)),
|
|
1329
|
+
(
|
|
1330
|
+
"_flags",
|
|
1331
|
+
models.JSONField(
|
|
1332
|
+
blank=True,
|
|
1333
|
+
default=dict,
|
|
1334
|
+
encoder=slm.models.sitelog.DefaultToStrEncoder,
|
|
1335
|
+
),
|
|
1336
|
+
),
|
|
1337
|
+
(
|
|
1338
|
+
"num_flags",
|
|
1339
|
+
models.PositiveSmallIntegerField(db_index=True, default=0),
|
|
1340
|
+
),
|
|
1341
|
+
(
|
|
1342
|
+
"agency",
|
|
1343
|
+
models.TextField(
|
|
1344
|
+
help_text="Enter contact agency name",
|
|
1345
|
+
max_length=300,
|
|
1346
|
+
verbose_name="Agency",
|
|
1347
|
+
),
|
|
1348
|
+
),
|
|
1349
|
+
(
|
|
1350
|
+
"preferred_abbreviation",
|
|
1351
|
+
models.CharField(
|
|
1352
|
+
db_index=True,
|
|
1353
|
+
help_text="Enter the contact agency's preferred abbreviation",
|
|
1354
|
+
max_length=50,
|
|
1355
|
+
verbose_name="Preferred Abbreviation",
|
|
1356
|
+
),
|
|
1357
|
+
),
|
|
1358
|
+
(
|
|
1359
|
+
"mailing_address",
|
|
1360
|
+
models.TextField(
|
|
1361
|
+
blank=True,
|
|
1362
|
+
default="",
|
|
1363
|
+
help_text="Enter agency mailing address",
|
|
1364
|
+
max_length=300,
|
|
1365
|
+
verbose_name="Mailing Address",
|
|
1366
|
+
),
|
|
1367
|
+
),
|
|
1368
|
+
(
|
|
1369
|
+
"primary_name",
|
|
1370
|
+
models.CharField(
|
|
1371
|
+
db_index=True,
|
|
1372
|
+
help_text="Enter primary contact organization name",
|
|
1373
|
+
max_length=50,
|
|
1374
|
+
verbose_name="Contact Name",
|
|
1375
|
+
),
|
|
1376
|
+
),
|
|
1377
|
+
(
|
|
1378
|
+
"primary_phone1",
|
|
1379
|
+
models.CharField(
|
|
1380
|
+
db_index=True,
|
|
1381
|
+
help_text="Enter primary contact primary phone number",
|
|
1382
|
+
max_length=50,
|
|
1383
|
+
verbose_name="Telephone (primary)",
|
|
1384
|
+
),
|
|
1385
|
+
),
|
|
1386
|
+
(
|
|
1387
|
+
"primary_phone2",
|
|
1388
|
+
models.CharField(
|
|
1389
|
+
blank=True,
|
|
1390
|
+
db_index=True,
|
|
1391
|
+
default="",
|
|
1392
|
+
help_text="Enter primary contact secondary phone number",
|
|
1393
|
+
max_length=50,
|
|
1394
|
+
verbose_name="Telephone (secondary)",
|
|
1395
|
+
),
|
|
1396
|
+
),
|
|
1397
|
+
(
|
|
1398
|
+
"primary_fax",
|
|
1399
|
+
models.CharField(
|
|
1400
|
+
blank=True,
|
|
1401
|
+
db_index=True,
|
|
1402
|
+
default="",
|
|
1403
|
+
help_text="Enter primary contact organization fax number",
|
|
1404
|
+
max_length=50,
|
|
1405
|
+
verbose_name="Fax",
|
|
1406
|
+
),
|
|
1407
|
+
),
|
|
1408
|
+
(
|
|
1409
|
+
"primary_email",
|
|
1410
|
+
models.EmailField(
|
|
1411
|
+
db_index=True,
|
|
1412
|
+
help_text="Enter primary contact organization email address. MUST be a generic email, no personal email addresses.",
|
|
1413
|
+
max_length=254,
|
|
1414
|
+
verbose_name="E-mail",
|
|
1415
|
+
),
|
|
1416
|
+
),
|
|
1417
|
+
(
|
|
1418
|
+
"secondary_name",
|
|
1419
|
+
models.CharField(
|
|
1420
|
+
blank=True,
|
|
1421
|
+
db_index=True,
|
|
1422
|
+
default="",
|
|
1423
|
+
help_text="Enter secondary contact name",
|
|
1424
|
+
max_length=50,
|
|
1425
|
+
verbose_name="Contact Name",
|
|
1426
|
+
),
|
|
1427
|
+
),
|
|
1428
|
+
(
|
|
1429
|
+
"secondary_phone1",
|
|
1430
|
+
models.CharField(
|
|
1431
|
+
blank=True,
|
|
1432
|
+
db_index=True,
|
|
1433
|
+
default="",
|
|
1434
|
+
help_text="Enter secondary contact primary phone number",
|
|
1435
|
+
max_length=50,
|
|
1436
|
+
verbose_name="Telephone (primary)",
|
|
1437
|
+
),
|
|
1438
|
+
),
|
|
1439
|
+
(
|
|
1440
|
+
"secondary_phone2",
|
|
1441
|
+
models.CharField(
|
|
1442
|
+
blank=True,
|
|
1443
|
+
db_index=True,
|
|
1444
|
+
default="",
|
|
1445
|
+
help_text="Enter secondary contact secondary phone number",
|
|
1446
|
+
max_length=50,
|
|
1447
|
+
verbose_name="Telephone (secondary)",
|
|
1448
|
+
),
|
|
1449
|
+
),
|
|
1450
|
+
(
|
|
1451
|
+
"secondary_fax",
|
|
1452
|
+
models.CharField(
|
|
1453
|
+
blank=True,
|
|
1454
|
+
db_index=True,
|
|
1455
|
+
default="",
|
|
1456
|
+
help_text="Enter secondary contact fax number",
|
|
1457
|
+
max_length=50,
|
|
1458
|
+
verbose_name="Fax",
|
|
1459
|
+
),
|
|
1460
|
+
),
|
|
1461
|
+
(
|
|
1462
|
+
"secondary_email",
|
|
1463
|
+
models.EmailField(
|
|
1464
|
+
blank=True,
|
|
1465
|
+
db_index=True,
|
|
1466
|
+
default="",
|
|
1467
|
+
help_text="Enter secondary contact email address",
|
|
1468
|
+
max_length=254,
|
|
1469
|
+
verbose_name="E-mail",
|
|
1470
|
+
),
|
|
1471
|
+
),
|
|
1472
|
+
(
|
|
1473
|
+
"additional_information",
|
|
1474
|
+
models.TextField(
|
|
1475
|
+
blank=True,
|
|
1476
|
+
default="",
|
|
1477
|
+
help_text="Enter additional relevant information regarding operational contacts. Format: (multiple lines).",
|
|
1478
|
+
verbose_name="Additional Information",
|
|
1479
|
+
),
|
|
1480
|
+
),
|
|
1481
|
+
(
|
|
1482
|
+
"site",
|
|
1483
|
+
models.ForeignKey(
|
|
1484
|
+
on_delete=django.db.models.deletion.CASCADE, to="slm.site"
|
|
1485
|
+
),
|
|
1486
|
+
),
|
|
1487
|
+
],
|
|
1488
|
+
options={
|
|
1489
|
+
"abstract": False,
|
|
1490
|
+
},
|
|
1491
|
+
),
|
|
1492
|
+
migrations.CreateModel(
|
|
1493
|
+
name="SiteRadioInterferences",
|
|
1494
|
+
fields=[
|
|
1495
|
+
(
|
|
1496
|
+
"id",
|
|
1497
|
+
models.BigAutoField(
|
|
1498
|
+
auto_created=True,
|
|
1499
|
+
primary_key=True,
|
|
1500
|
+
serialize=False,
|
|
1501
|
+
verbose_name="ID",
|
|
1502
|
+
),
|
|
1503
|
+
),
|
|
1504
|
+
("edited", models.DateTimeField(auto_now_add=True, db_index=True)),
|
|
1505
|
+
("published", models.BooleanField(db_index=True, default=False)),
|
|
1506
|
+
(
|
|
1507
|
+
"_flags",
|
|
1508
|
+
models.JSONField(
|
|
1509
|
+
blank=True,
|
|
1510
|
+
default=dict,
|
|
1511
|
+
encoder=slm.models.sitelog.DefaultToStrEncoder,
|
|
1512
|
+
),
|
|
1513
|
+
),
|
|
1514
|
+
(
|
|
1515
|
+
"num_flags",
|
|
1516
|
+
models.PositiveSmallIntegerField(db_index=True, default=0),
|
|
1517
|
+
),
|
|
1518
|
+
(
|
|
1519
|
+
"subsection",
|
|
1520
|
+
models.PositiveSmallIntegerField(blank=True, db_index=True),
|
|
1521
|
+
),
|
|
1522
|
+
("is_deleted", models.BooleanField(blank=True, default=False)),
|
|
1523
|
+
(
|
|
1524
|
+
"inserted",
|
|
1525
|
+
models.DateTimeField(
|
|
1526
|
+
db_index=True, default=django.utils.timezone.now
|
|
1527
|
+
),
|
|
1528
|
+
),
|
|
1529
|
+
(
|
|
1530
|
+
"effective_start",
|
|
1531
|
+
models.DateField(
|
|
1532
|
+
blank=True,
|
|
1533
|
+
db_index=True,
|
|
1534
|
+
default=None,
|
|
1535
|
+
help_text="Enter the effective start date for the condition. Format: (CCYY-MM-DD)",
|
|
1536
|
+
null=True,
|
|
1537
|
+
),
|
|
1538
|
+
),
|
|
1539
|
+
(
|
|
1540
|
+
"effective_end",
|
|
1541
|
+
models.DateField(
|
|
1542
|
+
blank=True,
|
|
1543
|
+
db_index=True,
|
|
1544
|
+
default=None,
|
|
1545
|
+
help_text="Enter the effective end date for the condition. Format: (CCYY-MM-DD)",
|
|
1546
|
+
null=True,
|
|
1547
|
+
),
|
|
1548
|
+
),
|
|
1549
|
+
(
|
|
1550
|
+
"additional_information",
|
|
1551
|
+
models.TextField(
|
|
1552
|
+
blank=True,
|
|
1553
|
+
default="",
|
|
1554
|
+
help_text="Enter additional relevant information about any radio interferences. Format: (multiple lines)",
|
|
1555
|
+
verbose_name="Additional Information",
|
|
1556
|
+
),
|
|
1557
|
+
),
|
|
1558
|
+
(
|
|
1559
|
+
"interferences",
|
|
1560
|
+
models.CharField(
|
|
1561
|
+
blank=True,
|
|
1562
|
+
db_index=True,
|
|
1563
|
+
default="",
|
|
1564
|
+
help_text="Enter all sources of radio interference near the GNSS station. Format: (TV/CELL PHONE ANTENNA/RADAR/etc)",
|
|
1565
|
+
max_length=50,
|
|
1566
|
+
verbose_name="Radio Interferences",
|
|
1567
|
+
),
|
|
1568
|
+
),
|
|
1569
|
+
(
|
|
1570
|
+
"degradations",
|
|
1571
|
+
models.CharField(
|
|
1572
|
+
blank=True,
|
|
1573
|
+
db_index=True,
|
|
1574
|
+
default="",
|
|
1575
|
+
help_text="Describe any observed degradations in the GNSS data that are presumed to result from radio interference. Format: (SN RATIO/DATA GAPS/etc)",
|
|
1576
|
+
max_length=50,
|
|
1577
|
+
verbose_name="Observed Degradations",
|
|
1578
|
+
),
|
|
1579
|
+
),
|
|
1580
|
+
(
|
|
1581
|
+
"site",
|
|
1582
|
+
models.ForeignKey(
|
|
1583
|
+
on_delete=django.db.models.deletion.CASCADE, to="slm.site"
|
|
1584
|
+
),
|
|
1585
|
+
),
|
|
1586
|
+
],
|
|
1587
|
+
options={
|
|
1588
|
+
"abstract": False,
|
|
1589
|
+
},
|
|
1590
|
+
),
|
|
1591
|
+
migrations.CreateModel(
|
|
1592
|
+
name="SitePressureSensor",
|
|
1593
|
+
fields=[
|
|
1594
|
+
(
|
|
1595
|
+
"id",
|
|
1596
|
+
models.BigAutoField(
|
|
1597
|
+
auto_created=True,
|
|
1598
|
+
primary_key=True,
|
|
1599
|
+
serialize=False,
|
|
1600
|
+
verbose_name="ID",
|
|
1601
|
+
),
|
|
1602
|
+
),
|
|
1603
|
+
("edited", models.DateTimeField(auto_now_add=True, db_index=True)),
|
|
1604
|
+
("published", models.BooleanField(db_index=True, default=False)),
|
|
1605
|
+
(
|
|
1606
|
+
"_flags",
|
|
1607
|
+
models.JSONField(
|
|
1608
|
+
blank=True,
|
|
1609
|
+
default=dict,
|
|
1610
|
+
encoder=slm.models.sitelog.DefaultToStrEncoder,
|
|
1611
|
+
),
|
|
1612
|
+
),
|
|
1613
|
+
(
|
|
1614
|
+
"num_flags",
|
|
1615
|
+
models.PositiveSmallIntegerField(db_index=True, default=0),
|
|
1616
|
+
),
|
|
1617
|
+
(
|
|
1618
|
+
"subsection",
|
|
1619
|
+
models.PositiveSmallIntegerField(blank=True, db_index=True),
|
|
1620
|
+
),
|
|
1621
|
+
("is_deleted", models.BooleanField(blank=True, default=False)),
|
|
1622
|
+
(
|
|
1623
|
+
"inserted",
|
|
1624
|
+
models.DateTimeField(
|
|
1625
|
+
db_index=True, default=django.utils.timezone.now
|
|
1626
|
+
),
|
|
1627
|
+
),
|
|
1628
|
+
(
|
|
1629
|
+
"manufacturer",
|
|
1630
|
+
models.CharField(
|
|
1631
|
+
db_index=True,
|
|
1632
|
+
help_text="Enter manufacturer's name",
|
|
1633
|
+
max_length=255,
|
|
1634
|
+
verbose_name="Manufacturer",
|
|
1635
|
+
),
|
|
1636
|
+
),
|
|
1637
|
+
(
|
|
1638
|
+
"serial_number",
|
|
1639
|
+
models.CharField(
|
|
1640
|
+
blank=True,
|
|
1641
|
+
db_index=True,
|
|
1642
|
+
default="",
|
|
1643
|
+
help_text="Enter the serial number of the sensor",
|
|
1644
|
+
max_length=50,
|
|
1645
|
+
verbose_name="Serial Number",
|
|
1646
|
+
),
|
|
1647
|
+
),
|
|
1648
|
+
(
|
|
1649
|
+
"height_diff",
|
|
1650
|
+
models.FloatField(
|
|
1651
|
+
db_index=True,
|
|
1652
|
+
help_text="In meters, enter the difference in height between the sensor and the GNSS antenna. Positive number indicates the sensor is above the GNSS antenna. Decimeter accuracy preferred. Format: (m)",
|
|
1653
|
+
null=True,
|
|
1654
|
+
verbose_name="Height Diff to Ant (m)",
|
|
1655
|
+
),
|
|
1656
|
+
),
|
|
1657
|
+
(
|
|
1658
|
+
"calibration",
|
|
1659
|
+
models.DateField(
|
|
1660
|
+
blank=True,
|
|
1661
|
+
db_index=True,
|
|
1662
|
+
default=None,
|
|
1663
|
+
help_text="Enter the date the sensor was calibrated. Format: (CCYY-MM-DD)",
|
|
1664
|
+
null=True,
|
|
1665
|
+
verbose_name="Calibration Date",
|
|
1666
|
+
),
|
|
1667
|
+
),
|
|
1668
|
+
(
|
|
1669
|
+
"effective_start",
|
|
1670
|
+
models.DateField(
|
|
1671
|
+
db_index=True,
|
|
1672
|
+
help_text="Enter the effective start date for the sensor. Format: (CCYY-MM-DD)",
|
|
1673
|
+
null=True,
|
|
1674
|
+
),
|
|
1675
|
+
),
|
|
1676
|
+
(
|
|
1677
|
+
"effective_end",
|
|
1678
|
+
models.DateField(
|
|
1679
|
+
blank=True,
|
|
1680
|
+
db_index=True,
|
|
1681
|
+
default=None,
|
|
1682
|
+
help_text="Enter the effective end date for the sensor. Format: (CCYY-MM-DD)",
|
|
1683
|
+
null=True,
|
|
1684
|
+
),
|
|
1685
|
+
),
|
|
1686
|
+
(
|
|
1687
|
+
"notes",
|
|
1688
|
+
models.TextField(
|
|
1689
|
+
blank=True,
|
|
1690
|
+
default="",
|
|
1691
|
+
help_text="Enter any additional information relevant to the sensor. Format: (multiple lines)",
|
|
1692
|
+
verbose_name="Notes",
|
|
1693
|
+
),
|
|
1694
|
+
),
|
|
1695
|
+
(
|
|
1696
|
+
"model",
|
|
1697
|
+
models.CharField(
|
|
1698
|
+
db_index=True,
|
|
1699
|
+
help_text="Enter pressure sensor model",
|
|
1700
|
+
max_length=255,
|
|
1701
|
+
verbose_name="Pressure Sensor Model",
|
|
1702
|
+
),
|
|
1703
|
+
),
|
|
1704
|
+
(
|
|
1705
|
+
"sampling_interval",
|
|
1706
|
+
models.PositiveSmallIntegerField(
|
|
1707
|
+
blank=True,
|
|
1708
|
+
db_index=True,
|
|
1709
|
+
default=None,
|
|
1710
|
+
help_text="Enter the sample interval in seconds. Format: (sec)",
|
|
1711
|
+
null=True,
|
|
1712
|
+
verbose_name="Data Sampling Interval",
|
|
1713
|
+
),
|
|
1714
|
+
),
|
|
1715
|
+
(
|
|
1716
|
+
"accuracy",
|
|
1717
|
+
models.FloatField(
|
|
1718
|
+
blank=True,
|
|
1719
|
+
db_index=True,
|
|
1720
|
+
default=None,
|
|
1721
|
+
help_text="Enter the accuracy in hectopascal. Format: (hPa)",
|
|
1722
|
+
null=True,
|
|
1723
|
+
verbose_name="Accuracy (hPa)",
|
|
1724
|
+
),
|
|
1725
|
+
),
|
|
1726
|
+
(
|
|
1727
|
+
"site",
|
|
1728
|
+
models.ForeignKey(
|
|
1729
|
+
on_delete=django.db.models.deletion.CASCADE, to="slm.site"
|
|
1730
|
+
),
|
|
1731
|
+
),
|
|
1732
|
+
],
|
|
1733
|
+
options={
|
|
1734
|
+
"abstract": False,
|
|
1735
|
+
},
|
|
1736
|
+
),
|
|
1737
|
+
migrations.CreateModel(
|
|
1738
|
+
name="SiteOperationalContact",
|
|
1739
|
+
fields=[
|
|
1740
|
+
(
|
|
1741
|
+
"id",
|
|
1742
|
+
models.BigAutoField(
|
|
1743
|
+
auto_created=True,
|
|
1744
|
+
primary_key=True,
|
|
1745
|
+
serialize=False,
|
|
1746
|
+
verbose_name="ID",
|
|
1747
|
+
),
|
|
1748
|
+
),
|
|
1749
|
+
("edited", models.DateTimeField(auto_now_add=True, db_index=True)),
|
|
1750
|
+
("published", models.BooleanField(db_index=True, default=False)),
|
|
1751
|
+
(
|
|
1752
|
+
"_flags",
|
|
1753
|
+
models.JSONField(
|
|
1754
|
+
blank=True,
|
|
1755
|
+
default=dict,
|
|
1756
|
+
encoder=slm.models.sitelog.DefaultToStrEncoder,
|
|
1757
|
+
),
|
|
1758
|
+
),
|
|
1759
|
+
(
|
|
1760
|
+
"num_flags",
|
|
1761
|
+
models.PositiveSmallIntegerField(db_index=True, default=0),
|
|
1762
|
+
),
|
|
1763
|
+
(
|
|
1764
|
+
"agency",
|
|
1765
|
+
models.TextField(
|
|
1766
|
+
help_text="Enter contact agency name",
|
|
1767
|
+
max_length=300,
|
|
1768
|
+
verbose_name="Agency",
|
|
1769
|
+
),
|
|
1770
|
+
),
|
|
1771
|
+
(
|
|
1772
|
+
"preferred_abbreviation",
|
|
1773
|
+
models.CharField(
|
|
1774
|
+
db_index=True,
|
|
1775
|
+
help_text="Enter the contact agency's preferred abbreviation",
|
|
1776
|
+
max_length=50,
|
|
1777
|
+
verbose_name="Preferred Abbreviation",
|
|
1778
|
+
),
|
|
1779
|
+
),
|
|
1780
|
+
(
|
|
1781
|
+
"mailing_address",
|
|
1782
|
+
models.TextField(
|
|
1783
|
+
blank=True,
|
|
1784
|
+
default="",
|
|
1785
|
+
help_text="Enter agency mailing address",
|
|
1786
|
+
max_length=300,
|
|
1787
|
+
verbose_name="Mailing Address",
|
|
1788
|
+
),
|
|
1789
|
+
),
|
|
1790
|
+
(
|
|
1791
|
+
"primary_name",
|
|
1792
|
+
models.CharField(
|
|
1793
|
+
db_index=True,
|
|
1794
|
+
help_text="Enter primary contact organization name",
|
|
1795
|
+
max_length=50,
|
|
1796
|
+
verbose_name="Contact Name",
|
|
1797
|
+
),
|
|
1798
|
+
),
|
|
1799
|
+
(
|
|
1800
|
+
"primary_phone1",
|
|
1801
|
+
models.CharField(
|
|
1802
|
+
db_index=True,
|
|
1803
|
+
help_text="Enter primary contact primary phone number",
|
|
1804
|
+
max_length=50,
|
|
1805
|
+
verbose_name="Telephone (primary)",
|
|
1806
|
+
),
|
|
1807
|
+
),
|
|
1808
|
+
(
|
|
1809
|
+
"primary_phone2",
|
|
1810
|
+
models.CharField(
|
|
1811
|
+
blank=True,
|
|
1812
|
+
db_index=True,
|
|
1813
|
+
default="",
|
|
1814
|
+
help_text="Enter primary contact secondary phone number",
|
|
1815
|
+
max_length=50,
|
|
1816
|
+
verbose_name="Telephone (secondary)",
|
|
1817
|
+
),
|
|
1818
|
+
),
|
|
1819
|
+
(
|
|
1820
|
+
"primary_fax",
|
|
1821
|
+
models.CharField(
|
|
1822
|
+
blank=True,
|
|
1823
|
+
db_index=True,
|
|
1824
|
+
default="",
|
|
1825
|
+
help_text="Enter primary contact organization fax number",
|
|
1826
|
+
max_length=50,
|
|
1827
|
+
verbose_name="Fax",
|
|
1828
|
+
),
|
|
1829
|
+
),
|
|
1830
|
+
(
|
|
1831
|
+
"primary_email",
|
|
1832
|
+
models.EmailField(
|
|
1833
|
+
db_index=True,
|
|
1834
|
+
help_text="Enter primary contact organization email address. MUST be a generic email, no personal email addresses.",
|
|
1835
|
+
max_length=254,
|
|
1836
|
+
verbose_name="E-mail",
|
|
1837
|
+
),
|
|
1838
|
+
),
|
|
1839
|
+
(
|
|
1840
|
+
"secondary_name",
|
|
1841
|
+
models.CharField(
|
|
1842
|
+
blank=True,
|
|
1843
|
+
db_index=True,
|
|
1844
|
+
default="",
|
|
1845
|
+
help_text="Enter secondary contact name",
|
|
1846
|
+
max_length=50,
|
|
1847
|
+
verbose_name="Contact Name",
|
|
1848
|
+
),
|
|
1849
|
+
),
|
|
1850
|
+
(
|
|
1851
|
+
"secondary_phone1",
|
|
1852
|
+
models.CharField(
|
|
1853
|
+
blank=True,
|
|
1854
|
+
db_index=True,
|
|
1855
|
+
default="",
|
|
1856
|
+
help_text="Enter secondary contact primary phone number",
|
|
1857
|
+
max_length=50,
|
|
1858
|
+
verbose_name="Telephone (primary)",
|
|
1859
|
+
),
|
|
1860
|
+
),
|
|
1861
|
+
(
|
|
1862
|
+
"secondary_phone2",
|
|
1863
|
+
models.CharField(
|
|
1864
|
+
blank=True,
|
|
1865
|
+
db_index=True,
|
|
1866
|
+
default="",
|
|
1867
|
+
help_text="Enter secondary contact secondary phone number",
|
|
1868
|
+
max_length=50,
|
|
1869
|
+
verbose_name="Telephone (secondary)",
|
|
1870
|
+
),
|
|
1871
|
+
),
|
|
1872
|
+
(
|
|
1873
|
+
"secondary_fax",
|
|
1874
|
+
models.CharField(
|
|
1875
|
+
blank=True,
|
|
1876
|
+
db_index=True,
|
|
1877
|
+
default="",
|
|
1878
|
+
help_text="Enter secondary contact fax number",
|
|
1879
|
+
max_length=50,
|
|
1880
|
+
verbose_name="Fax",
|
|
1881
|
+
),
|
|
1882
|
+
),
|
|
1883
|
+
(
|
|
1884
|
+
"secondary_email",
|
|
1885
|
+
models.EmailField(
|
|
1886
|
+
blank=True,
|
|
1887
|
+
db_index=True,
|
|
1888
|
+
default="",
|
|
1889
|
+
help_text="Enter secondary contact email address",
|
|
1890
|
+
max_length=254,
|
|
1891
|
+
verbose_name="E-mail",
|
|
1892
|
+
),
|
|
1893
|
+
),
|
|
1894
|
+
(
|
|
1895
|
+
"additional_information",
|
|
1896
|
+
models.TextField(
|
|
1897
|
+
blank=True,
|
|
1898
|
+
default="",
|
|
1899
|
+
help_text="Enter additional relevant information regarding operational contacts. Format: (multiple lines).",
|
|
1900
|
+
verbose_name="Additional Information",
|
|
1901
|
+
),
|
|
1902
|
+
),
|
|
1903
|
+
(
|
|
1904
|
+
"site",
|
|
1905
|
+
models.ForeignKey(
|
|
1906
|
+
on_delete=django.db.models.deletion.CASCADE, to="slm.site"
|
|
1907
|
+
),
|
|
1908
|
+
),
|
|
1909
|
+
],
|
|
1910
|
+
options={
|
|
1911
|
+
"abstract": False,
|
|
1912
|
+
},
|
|
1913
|
+
),
|
|
1914
|
+
migrations.CreateModel(
|
|
1915
|
+
name="SiteMultiPathSources",
|
|
1916
|
+
fields=[
|
|
1917
|
+
(
|
|
1918
|
+
"id",
|
|
1919
|
+
models.BigAutoField(
|
|
1920
|
+
auto_created=True,
|
|
1921
|
+
primary_key=True,
|
|
1922
|
+
serialize=False,
|
|
1923
|
+
verbose_name="ID",
|
|
1924
|
+
),
|
|
1925
|
+
),
|
|
1926
|
+
("edited", models.DateTimeField(auto_now_add=True, db_index=True)),
|
|
1927
|
+
("published", models.BooleanField(db_index=True, default=False)),
|
|
1928
|
+
(
|
|
1929
|
+
"_flags",
|
|
1930
|
+
models.JSONField(
|
|
1931
|
+
blank=True,
|
|
1932
|
+
default=dict,
|
|
1933
|
+
encoder=slm.models.sitelog.DefaultToStrEncoder,
|
|
1934
|
+
),
|
|
1935
|
+
),
|
|
1936
|
+
(
|
|
1937
|
+
"num_flags",
|
|
1938
|
+
models.PositiveSmallIntegerField(db_index=True, default=0),
|
|
1939
|
+
),
|
|
1940
|
+
(
|
|
1941
|
+
"subsection",
|
|
1942
|
+
models.PositiveSmallIntegerField(blank=True, db_index=True),
|
|
1943
|
+
),
|
|
1944
|
+
("is_deleted", models.BooleanField(blank=True, default=False)),
|
|
1945
|
+
(
|
|
1946
|
+
"inserted",
|
|
1947
|
+
models.DateTimeField(
|
|
1948
|
+
db_index=True, default=django.utils.timezone.now
|
|
1949
|
+
),
|
|
1950
|
+
),
|
|
1951
|
+
(
|
|
1952
|
+
"effective_start",
|
|
1953
|
+
models.DateField(
|
|
1954
|
+
blank=True,
|
|
1955
|
+
db_index=True,
|
|
1956
|
+
default=None,
|
|
1957
|
+
help_text="Enter the effective start date for the condition. Format: (CCYY-MM-DD)",
|
|
1958
|
+
null=True,
|
|
1959
|
+
),
|
|
1960
|
+
),
|
|
1961
|
+
(
|
|
1962
|
+
"effective_end",
|
|
1963
|
+
models.DateField(
|
|
1964
|
+
blank=True,
|
|
1965
|
+
db_index=True,
|
|
1966
|
+
default=None,
|
|
1967
|
+
help_text="Enter the effective end date for the condition. Format: (CCYY-MM-DD)",
|
|
1968
|
+
null=True,
|
|
1969
|
+
),
|
|
1970
|
+
),
|
|
1971
|
+
(
|
|
1972
|
+
"additional_information",
|
|
1973
|
+
models.TextField(
|
|
1974
|
+
blank=True,
|
|
1975
|
+
default="",
|
|
1976
|
+
help_text="Enter additional relevant information about any radio interferences. Format: (multiple lines)",
|
|
1977
|
+
verbose_name="Additional Information",
|
|
1978
|
+
),
|
|
1979
|
+
),
|
|
1980
|
+
(
|
|
1981
|
+
"sources",
|
|
1982
|
+
models.CharField(
|
|
1983
|
+
blank=True,
|
|
1984
|
+
db_index=True,
|
|
1985
|
+
default="",
|
|
1986
|
+
help_text="Describe any potential multipath sources near the GNSS station. Format: .(METAL ROOF/DOME/VLBI ANTENNA/etc)",
|
|
1987
|
+
max_length=50,
|
|
1988
|
+
verbose_name="Multipath Sources",
|
|
1989
|
+
),
|
|
1990
|
+
),
|
|
1991
|
+
(
|
|
1992
|
+
"site",
|
|
1993
|
+
models.ForeignKey(
|
|
1994
|
+
on_delete=django.db.models.deletion.CASCADE, to="slm.site"
|
|
1995
|
+
),
|
|
1996
|
+
),
|
|
1997
|
+
],
|
|
1998
|
+
options={
|
|
1999
|
+
"abstract": False,
|
|
2000
|
+
},
|
|
2001
|
+
),
|
|
2002
|
+
migrations.CreateModel(
|
|
2003
|
+
name="SiteHumiditySensor",
|
|
2004
|
+
fields=[
|
|
2005
|
+
(
|
|
2006
|
+
"id",
|
|
2007
|
+
models.BigAutoField(
|
|
2008
|
+
auto_created=True,
|
|
2009
|
+
primary_key=True,
|
|
2010
|
+
serialize=False,
|
|
2011
|
+
verbose_name="ID",
|
|
2012
|
+
),
|
|
2013
|
+
),
|
|
2014
|
+
("edited", models.DateTimeField(auto_now_add=True, db_index=True)),
|
|
2015
|
+
("published", models.BooleanField(db_index=True, default=False)),
|
|
2016
|
+
(
|
|
2017
|
+
"_flags",
|
|
2018
|
+
models.JSONField(
|
|
2019
|
+
blank=True,
|
|
2020
|
+
default=dict,
|
|
2021
|
+
encoder=slm.models.sitelog.DefaultToStrEncoder,
|
|
2022
|
+
),
|
|
2023
|
+
),
|
|
2024
|
+
(
|
|
2025
|
+
"num_flags",
|
|
2026
|
+
models.PositiveSmallIntegerField(db_index=True, default=0),
|
|
2027
|
+
),
|
|
2028
|
+
(
|
|
2029
|
+
"subsection",
|
|
2030
|
+
models.PositiveSmallIntegerField(blank=True, db_index=True),
|
|
2031
|
+
),
|
|
2032
|
+
("is_deleted", models.BooleanField(blank=True, default=False)),
|
|
2033
|
+
(
|
|
2034
|
+
"inserted",
|
|
2035
|
+
models.DateTimeField(
|
|
2036
|
+
db_index=True, default=django.utils.timezone.now
|
|
2037
|
+
),
|
|
2038
|
+
),
|
|
2039
|
+
(
|
|
2040
|
+
"manufacturer",
|
|
2041
|
+
models.CharField(
|
|
2042
|
+
db_index=True,
|
|
2043
|
+
help_text="Enter manufacturer's name",
|
|
2044
|
+
max_length=255,
|
|
2045
|
+
verbose_name="Manufacturer",
|
|
2046
|
+
),
|
|
2047
|
+
),
|
|
2048
|
+
(
|
|
2049
|
+
"serial_number",
|
|
2050
|
+
models.CharField(
|
|
2051
|
+
blank=True,
|
|
2052
|
+
db_index=True,
|
|
2053
|
+
default="",
|
|
2054
|
+
help_text="Enter the serial number of the sensor",
|
|
2055
|
+
max_length=50,
|
|
2056
|
+
verbose_name="Serial Number",
|
|
2057
|
+
),
|
|
2058
|
+
),
|
|
2059
|
+
(
|
|
2060
|
+
"height_diff",
|
|
2061
|
+
models.FloatField(
|
|
2062
|
+
db_index=True,
|
|
2063
|
+
help_text="In meters, enter the difference in height between the sensor and the GNSS antenna. Positive number indicates the sensor is above the GNSS antenna. Decimeter accuracy preferred. Format: (m)",
|
|
2064
|
+
null=True,
|
|
2065
|
+
verbose_name="Height Diff to Ant (m)",
|
|
2066
|
+
),
|
|
2067
|
+
),
|
|
2068
|
+
(
|
|
2069
|
+
"calibration",
|
|
2070
|
+
models.DateField(
|
|
2071
|
+
blank=True,
|
|
2072
|
+
db_index=True,
|
|
2073
|
+
default=None,
|
|
2074
|
+
help_text="Enter the date the sensor was calibrated. Format: (CCYY-MM-DD)",
|
|
2075
|
+
null=True,
|
|
2076
|
+
verbose_name="Calibration Date",
|
|
2077
|
+
),
|
|
2078
|
+
),
|
|
2079
|
+
(
|
|
2080
|
+
"effective_start",
|
|
2081
|
+
models.DateField(
|
|
2082
|
+
db_index=True,
|
|
2083
|
+
help_text="Enter the effective start date for the sensor. Format: (CCYY-MM-DD)",
|
|
2084
|
+
null=True,
|
|
2085
|
+
),
|
|
2086
|
+
),
|
|
2087
|
+
(
|
|
2088
|
+
"effective_end",
|
|
2089
|
+
models.DateField(
|
|
2090
|
+
blank=True,
|
|
2091
|
+
db_index=True,
|
|
2092
|
+
default=None,
|
|
2093
|
+
help_text="Enter the effective end date for the sensor. Format: (CCYY-MM-DD)",
|
|
2094
|
+
null=True,
|
|
2095
|
+
),
|
|
2096
|
+
),
|
|
2097
|
+
(
|
|
2098
|
+
"notes",
|
|
2099
|
+
models.TextField(
|
|
2100
|
+
blank=True,
|
|
2101
|
+
default="",
|
|
2102
|
+
help_text="Enter any additional information relevant to the sensor. Format: (multiple lines)",
|
|
2103
|
+
verbose_name="Notes",
|
|
2104
|
+
),
|
|
2105
|
+
),
|
|
2106
|
+
(
|
|
2107
|
+
"model",
|
|
2108
|
+
models.CharField(
|
|
2109
|
+
db_index=True,
|
|
2110
|
+
help_text="Enter humidity sensor model",
|
|
2111
|
+
max_length=255,
|
|
2112
|
+
verbose_name="Humidity Sensor Model",
|
|
2113
|
+
),
|
|
2114
|
+
),
|
|
2115
|
+
(
|
|
2116
|
+
"sampling_interval",
|
|
2117
|
+
models.PositiveSmallIntegerField(
|
|
2118
|
+
blank=True,
|
|
2119
|
+
db_index=True,
|
|
2120
|
+
default=None,
|
|
2121
|
+
help_text="Enter the sample interval in seconds. Format: (sec)",
|
|
2122
|
+
null=True,
|
|
2123
|
+
verbose_name="Data Sampling Interval (sec)",
|
|
2124
|
+
),
|
|
2125
|
+
),
|
|
2126
|
+
(
|
|
2127
|
+
"accuracy",
|
|
2128
|
+
models.FloatField(
|
|
2129
|
+
blank=True,
|
|
2130
|
+
db_index=True,
|
|
2131
|
+
default=None,
|
|
2132
|
+
help_text="Enter the accuracy in % relative humidity. Format: (% rel h)",
|
|
2133
|
+
null=True,
|
|
2134
|
+
verbose_name="Accuracy (% rel h)",
|
|
2135
|
+
),
|
|
2136
|
+
),
|
|
2137
|
+
(
|
|
2138
|
+
"aspiration",
|
|
2139
|
+
django_enum.fields.EnumCharField(
|
|
2140
|
+
blank=True,
|
|
2141
|
+
choices=[("U", "UNASPIRATED"), ("N", "NATURAL"), ("F", "FAN")],
|
|
2142
|
+
db_index=True,
|
|
2143
|
+
default=None,
|
|
2144
|
+
help_text="Enter the aspiration type if known. Format: (UNASPIRATED/NATURAL/FAN/etc)",
|
|
2145
|
+
max_length=50,
|
|
2146
|
+
null=True,
|
|
2147
|
+
verbose_name="Aspiration",
|
|
2148
|
+
),
|
|
2149
|
+
),
|
|
2150
|
+
(
|
|
2151
|
+
"site",
|
|
2152
|
+
models.ForeignKey(
|
|
2153
|
+
on_delete=django.db.models.deletion.CASCADE, to="slm.site"
|
|
2154
|
+
),
|
|
2155
|
+
),
|
|
2156
|
+
],
|
|
2157
|
+
options={
|
|
2158
|
+
"abstract": False,
|
|
2159
|
+
},
|
|
2160
|
+
),
|
|
2161
|
+
migrations.CreateModel(
|
|
2162
|
+
name="SiteFileUpload",
|
|
2163
|
+
fields=[
|
|
2164
|
+
(
|
|
2165
|
+
"id",
|
|
2166
|
+
models.BigAutoField(
|
|
2167
|
+
auto_created=True,
|
|
2168
|
+
primary_key=True,
|
|
2169
|
+
serialize=False,
|
|
2170
|
+
verbose_name="ID",
|
|
2171
|
+
),
|
|
2172
|
+
),
|
|
2173
|
+
(
|
|
2174
|
+
"timestamp",
|
|
2175
|
+
models.DateTimeField(
|
|
2176
|
+
auto_now_add=True,
|
|
2177
|
+
db_index=True,
|
|
2178
|
+
help_text="When the file was uploaded.",
|
|
2179
|
+
),
|
|
2180
|
+
),
|
|
2181
|
+
(
|
|
2182
|
+
"file",
|
|
2183
|
+
models.FileField(
|
|
2184
|
+
help_text="A pointer to the uploaded file on disk.",
|
|
2185
|
+
max_length=255,
|
|
2186
|
+
upload_to=slm.models.system.site_upload_path,
|
|
2187
|
+
),
|
|
2188
|
+
),
|
|
2189
|
+
(
|
|
2190
|
+
"size",
|
|
2191
|
+
models.PositiveIntegerField(blank=True, default=None, null=True),
|
|
2192
|
+
),
|
|
2193
|
+
(
|
|
2194
|
+
"thumbnail",
|
|
2195
|
+
models.ImageField(
|
|
2196
|
+
blank=True,
|
|
2197
|
+
default=None,
|
|
2198
|
+
help_text="A pointer to the generated thumbnail file on disk.",
|
|
2199
|
+
null=True,
|
|
2200
|
+
upload_to=slm.models.system.site_thumbnail_path,
|
|
2201
|
+
),
|
|
2202
|
+
),
|
|
2203
|
+
(
|
|
2204
|
+
"mimetype",
|
|
2205
|
+
models.CharField(
|
|
2206
|
+
db_index=True,
|
|
2207
|
+
default="",
|
|
2208
|
+
help_text="The mimetype of the file.",
|
|
2209
|
+
max_length=255,
|
|
2210
|
+
),
|
|
2211
|
+
),
|
|
2212
|
+
(
|
|
2213
|
+
"file_type",
|
|
2214
|
+
django_enum.fields.EnumPositiveSmallIntegerField(
|
|
2215
|
+
choices=[(1, "Site Log"), (2, "Site Image"), (3, "Attachment")],
|
|
2216
|
+
db_index=True,
|
|
2217
|
+
default=3,
|
|
2218
|
+
help_text="The file type of the upload.",
|
|
2219
|
+
),
|
|
2220
|
+
),
|
|
2221
|
+
(
|
|
2222
|
+
"log_format",
|
|
2223
|
+
django_enum.fields.EnumPositiveSmallIntegerField(
|
|
2224
|
+
choices=[(1, "Legacy (ASCII)"), (2, "GeodesyML"), (3, "JSON")],
|
|
2225
|
+
db_index=True,
|
|
2226
|
+
default=None,
|
|
2227
|
+
help_text="The site log format. (Only if file_type is Site Log)",
|
|
2228
|
+
null=True,
|
|
2229
|
+
),
|
|
2230
|
+
),
|
|
2231
|
+
(
|
|
2232
|
+
"name",
|
|
2233
|
+
models.CharField(
|
|
2234
|
+
db_index=True, help_text="The name of the file.", max_length=255
|
|
2235
|
+
),
|
|
2236
|
+
),
|
|
2237
|
+
(
|
|
2238
|
+
"created",
|
|
2239
|
+
models.DateTimeField(
|
|
2240
|
+
blank=True,
|
|
2241
|
+
db_index=True,
|
|
2242
|
+
default=None,
|
|
2243
|
+
help_text="The date and time the file was created.",
|
|
2244
|
+
null=True,
|
|
2245
|
+
),
|
|
2246
|
+
),
|
|
2247
|
+
(
|
|
2248
|
+
"status",
|
|
2249
|
+
django_enum.fields.EnumPositiveSmallIntegerField(
|
|
2250
|
+
blank=True,
|
|
2251
|
+
choices=[
|
|
2252
|
+
(1, "Unpublished File"),
|
|
2253
|
+
(2, "Published File"),
|
|
2254
|
+
(3, "Invalid Site Log"),
|
|
2255
|
+
(4, "Warnings Site Log"),
|
|
2256
|
+
(5, "Valid Site Log"),
|
|
2257
|
+
],
|
|
2258
|
+
db_index=True,
|
|
2259
|
+
default=1,
|
|
2260
|
+
help_text="The status of the file. This will also depend on what type the file is.",
|
|
2261
|
+
),
|
|
2262
|
+
),
|
|
2263
|
+
(
|
|
2264
|
+
"context",
|
|
2265
|
+
models.JSONField(
|
|
2266
|
+
blank=True,
|
|
2267
|
+
default=dict,
|
|
2268
|
+
encoder=slm.models.sitelog.DefaultToStrEncoder,
|
|
2269
|
+
),
|
|
2270
|
+
),
|
|
2271
|
+
(
|
|
2272
|
+
"description",
|
|
2273
|
+
models.TextField(
|
|
2274
|
+
blank=True,
|
|
2275
|
+
default="",
|
|
2276
|
+
help_text="A description of what this file is (optional).",
|
|
2277
|
+
),
|
|
2278
|
+
),
|
|
2279
|
+
(
|
|
2280
|
+
"direction",
|
|
2281
|
+
django_enum.fields.EnumCharField(
|
|
2282
|
+
blank=True,
|
|
2283
|
+
choices=[
|
|
2284
|
+
("N", "North"),
|
|
2285
|
+
("S", "South"),
|
|
2286
|
+
("E", "East"),
|
|
2287
|
+
("W", "West"),
|
|
2288
|
+
("NW", "North West"),
|
|
2289
|
+
("NE", "North East"),
|
|
2290
|
+
("SW", "South West"),
|
|
2291
|
+
("SE", "South East"),
|
|
2292
|
+
],
|
|
2293
|
+
default=None,
|
|
2294
|
+
help_text="For images taken at the site, this is the cardinal direction the camera was pointing towards.",
|
|
2295
|
+
max_length=2,
|
|
2296
|
+
null=True,
|
|
2297
|
+
),
|
|
2298
|
+
),
|
|
2299
|
+
(
|
|
2300
|
+
"site",
|
|
2301
|
+
models.ForeignKey(
|
|
2302
|
+
help_text="The site this file is attached to.",
|
|
2303
|
+
on_delete=django.db.models.deletion.CASCADE,
|
|
2304
|
+
related_name="%(class)ss",
|
|
2305
|
+
to="slm.site",
|
|
2306
|
+
),
|
|
2307
|
+
),
|
|
2308
|
+
(
|
|
2309
|
+
"user",
|
|
2310
|
+
models.ForeignKey(
|
|
2311
|
+
default=None,
|
|
2312
|
+
help_text="The user that uploaded the file.",
|
|
2313
|
+
null=True,
|
|
2314
|
+
on_delete=django.db.models.deletion.SET_NULL,
|
|
2315
|
+
to=settings.AUTH_USER_MODEL,
|
|
2316
|
+
),
|
|
2317
|
+
),
|
|
2318
|
+
],
|
|
2319
|
+
options={
|
|
2320
|
+
"verbose_name_plural": "Site File Uploads",
|
|
2321
|
+
"ordering": ("-timestamp",),
|
|
2322
|
+
},
|
|
2323
|
+
),
|
|
2324
|
+
migrations.CreateModel(
|
|
2325
|
+
name="Network",
|
|
2326
|
+
fields=[
|
|
2327
|
+
(
|
|
2328
|
+
"id",
|
|
2329
|
+
models.BigAutoField(
|
|
2330
|
+
auto_created=True,
|
|
2331
|
+
primary_key=True,
|
|
2332
|
+
serialize=False,
|
|
2333
|
+
verbose_name="ID",
|
|
2334
|
+
),
|
|
2335
|
+
),
|
|
2336
|
+
("name", models.CharField(db_index=True, max_length=100)),
|
|
2337
|
+
(
|
|
2338
|
+
"public",
|
|
2339
|
+
models.BooleanField(
|
|
2340
|
+
blank=True,
|
|
2341
|
+
db_index=True,
|
|
2342
|
+
default=True,
|
|
2343
|
+
help_text="If false, this network will not appear in publicly facing data,interfaces and APIs.",
|
|
2344
|
+
),
|
|
2345
|
+
),
|
|
2346
|
+
(
|
|
2347
|
+
"sites",
|
|
2348
|
+
models.ManyToManyField(related_name="networks", to="slm.site"),
|
|
2349
|
+
),
|
|
2350
|
+
],
|
|
2351
|
+
),
|
|
2352
|
+
migrations.CreateModel(
|
|
2353
|
+
name="LogEntry",
|
|
2354
|
+
fields=[
|
|
2355
|
+
(
|
|
2356
|
+
"id",
|
|
2357
|
+
models.BigAutoField(
|
|
2358
|
+
auto_created=True,
|
|
2359
|
+
primary_key=True,
|
|
2360
|
+
serialize=False,
|
|
2361
|
+
verbose_name="ID",
|
|
2362
|
+
),
|
|
2363
|
+
),
|
|
2364
|
+
("timestamp", models.DateTimeField(auto_now_add=True, db_index=True)),
|
|
2365
|
+
("epoch", models.DateTimeField(blank=True, db_index=True)),
|
|
2366
|
+
(
|
|
2367
|
+
"type",
|
|
2368
|
+
django_enum.fields.EnumPositiveSmallIntegerField(
|
|
2369
|
+
choices=[
|
|
2370
|
+
(1, "New Site"),
|
|
2371
|
+
(2, "Add"),
|
|
2372
|
+
(3, "Update"),
|
|
2373
|
+
(4, "Delete"),
|
|
2374
|
+
(5, "Publish"),
|
|
2375
|
+
(6, "Log Upload"),
|
|
2376
|
+
(7, "File Upload"),
|
|
2377
|
+
]
|
|
2378
|
+
),
|
|
2379
|
+
),
|
|
2380
|
+
(
|
|
2381
|
+
"site_log_id",
|
|
2382
|
+
models.PositiveIntegerField(blank=True, default=None, null=True),
|
|
2383
|
+
),
|
|
2384
|
+
(
|
|
2385
|
+
"ip",
|
|
2386
|
+
models.GenericIPAddressField(blank=True, default=None, null=True),
|
|
2387
|
+
),
|
|
2388
|
+
(
|
|
2389
|
+
"polymorphic_ctype",
|
|
2390
|
+
models.ForeignKey(
|
|
2391
|
+
editable=False,
|
|
2392
|
+
null=True,
|
|
2393
|
+
on_delete=django.db.models.deletion.CASCADE,
|
|
2394
|
+
related_name="polymorphic_%(app_label)s.%(class)s_set+",
|
|
2395
|
+
to="contenttypes.contenttype",
|
|
2396
|
+
),
|
|
2397
|
+
),
|
|
2398
|
+
(
|
|
2399
|
+
"site",
|
|
2400
|
+
models.ForeignKey(
|
|
2401
|
+
blank=True,
|
|
2402
|
+
default=None,
|
|
2403
|
+
null=True,
|
|
2404
|
+
on_delete=django.db.models.deletion.CASCADE,
|
|
2405
|
+
to="slm.site",
|
|
2406
|
+
),
|
|
2407
|
+
),
|
|
2408
|
+
(
|
|
2409
|
+
"site_log_type",
|
|
2410
|
+
models.ForeignKey(
|
|
2411
|
+
blank=True,
|
|
2412
|
+
default=None,
|
|
2413
|
+
null=True,
|
|
2414
|
+
on_delete=django.db.models.deletion.CASCADE,
|
|
2415
|
+
related_name="logentries",
|
|
2416
|
+
to="contenttypes.contenttype",
|
|
2417
|
+
),
|
|
2418
|
+
),
|
|
2419
|
+
(
|
|
2420
|
+
"user",
|
|
2421
|
+
models.ForeignKey(
|
|
2422
|
+
blank=True,
|
|
2423
|
+
default=None,
|
|
2424
|
+
null=True,
|
|
2425
|
+
on_delete=django.db.models.deletion.SET_NULL,
|
|
2426
|
+
related_name="logentries",
|
|
2427
|
+
to=settings.AUTH_USER_MODEL,
|
|
2428
|
+
),
|
|
2429
|
+
),
|
|
2430
|
+
],
|
|
2431
|
+
options={
|
|
2432
|
+
"ordering": ("-timestamp",),
|
|
2433
|
+
},
|
|
2434
|
+
),
|
|
2435
|
+
migrations.CreateModel(
|
|
2436
|
+
name="DataCenter",
|
|
2437
|
+
fields=[
|
|
2438
|
+
(
|
|
2439
|
+
"id",
|
|
2440
|
+
models.BigAutoField(
|
|
2441
|
+
auto_created=True,
|
|
2442
|
+
primary_key=True,
|
|
2443
|
+
serialize=False,
|
|
2444
|
+
verbose_name="ID",
|
|
2445
|
+
),
|
|
2446
|
+
),
|
|
2447
|
+
("name", models.CharField(max_length=255, unique=True)),
|
|
2448
|
+
("url", models.URLField(max_length=255, unique=True)),
|
|
2449
|
+
("description", models.TextField(blank=True)),
|
|
2450
|
+
("ftp", models.URLField(max_length=255, unique=True)),
|
|
2451
|
+
("ftp_user", models.CharField(blank=True, max_length=255)),
|
|
2452
|
+
("ftp_password", models.CharField(blank=True, max_length=255)),
|
|
2453
|
+
("ftp_root", models.CharField(blank=True, max_length=255)),
|
|
2454
|
+
(
|
|
2455
|
+
"agency",
|
|
2456
|
+
models.ForeignKey(
|
|
2457
|
+
blank=True,
|
|
2458
|
+
null=True,
|
|
2459
|
+
on_delete=django.db.models.deletion.CASCADE,
|
|
2460
|
+
related_name="data_centers",
|
|
2461
|
+
to="slm.agency",
|
|
2462
|
+
),
|
|
2463
|
+
),
|
|
2464
|
+
],
|
|
2465
|
+
options={
|
|
2466
|
+
"verbose_name": "Data Center",
|
|
2467
|
+
"verbose_name_plural": "Data Centers",
|
|
2468
|
+
"ordering": ("name",),
|
|
2469
|
+
},
|
|
2470
|
+
),
|
|
2471
|
+
migrations.CreateModel(
|
|
2472
|
+
name="DataAvailability",
|
|
2473
|
+
fields=[
|
|
2474
|
+
(
|
|
2475
|
+
"id",
|
|
2476
|
+
models.BigAutoField(
|
|
2477
|
+
auto_created=True,
|
|
2478
|
+
primary_key=True,
|
|
2479
|
+
serialize=False,
|
|
2480
|
+
verbose_name="ID",
|
|
2481
|
+
),
|
|
2482
|
+
),
|
|
2483
|
+
(
|
|
2484
|
+
"rinex_version",
|
|
2485
|
+
django_enum.fields.EnumPositiveSmallIntegerField(
|
|
2486
|
+
choices=[
|
|
2487
|
+
(2, "RINEX 2"),
|
|
2488
|
+
(3, "RINEX 3"),
|
|
2489
|
+
(4, "RINEX 4"),
|
|
2490
|
+
(211, "RINEX 2.11"),
|
|
2491
|
+
(300, "RINEX 3.00"),
|
|
2492
|
+
(301, "RINEX 3.01"),
|
|
2493
|
+
(302, "RINEX 3.02"),
|
|
2494
|
+
(303, "RINEX 3.03"),
|
|
2495
|
+
(304, "RINEX 3.04"),
|
|
2496
|
+
(305, "RINEX 3.05"),
|
|
2497
|
+
(400, "RINEX 4.00"),
|
|
2498
|
+
],
|
|
2499
|
+
db_index=True,
|
|
2500
|
+
default=True,
|
|
2501
|
+
null=True,
|
|
2502
|
+
),
|
|
2503
|
+
),
|
|
2504
|
+
(
|
|
2505
|
+
"rate",
|
|
2506
|
+
django_enum.fields.EnumPositiveSmallIntegerField(
|
|
2507
|
+
choices=[(1, "Daily"), (2, "Hourly"), (3, "High Rate")],
|
|
2508
|
+
db_index=True,
|
|
2509
|
+
default=1,
|
|
2510
|
+
null=True,
|
|
2511
|
+
),
|
|
2512
|
+
),
|
|
2513
|
+
("last", models.DateField(db_index=True)),
|
|
2514
|
+
(
|
|
2515
|
+
"data_centers",
|
|
2516
|
+
models.ManyToManyField(blank=True, to="slm.datacenter"),
|
|
2517
|
+
),
|
|
2518
|
+
(
|
|
2519
|
+
"site",
|
|
2520
|
+
models.ForeignKey(
|
|
2521
|
+
on_delete=django.db.models.deletion.CASCADE, to="slm.site"
|
|
2522
|
+
),
|
|
2523
|
+
),
|
|
2524
|
+
],
|
|
2525
|
+
),
|
|
2526
|
+
migrations.CreateModel(
|
|
2527
|
+
name="ArchiveIndex",
|
|
2528
|
+
fields=[
|
|
2529
|
+
(
|
|
2530
|
+
"id",
|
|
2531
|
+
models.BigAutoField(
|
|
2532
|
+
auto_created=True,
|
|
2533
|
+
primary_key=True,
|
|
2534
|
+
serialize=False,
|
|
2535
|
+
verbose_name="ID",
|
|
2536
|
+
),
|
|
2537
|
+
),
|
|
2538
|
+
("begin", models.DateTimeField(db_index=True)),
|
|
2539
|
+
("end", models.DateTimeField(db_index=True, null=True)),
|
|
2540
|
+
(
|
|
2541
|
+
"site",
|
|
2542
|
+
models.ForeignKey(
|
|
2543
|
+
on_delete=django.db.models.deletion.CASCADE,
|
|
2544
|
+
related_name="indexes",
|
|
2545
|
+
to="slm.site",
|
|
2546
|
+
),
|
|
2547
|
+
),
|
|
2548
|
+
],
|
|
2549
|
+
options={
|
|
2550
|
+
"ordering": ("-begin",),
|
|
2551
|
+
},
|
|
2552
|
+
),
|
|
2553
|
+
migrations.CreateModel(
|
|
2554
|
+
name="ArchivedSiteLog",
|
|
2555
|
+
fields=[
|
|
2556
|
+
(
|
|
2557
|
+
"id",
|
|
2558
|
+
models.BigAutoField(
|
|
2559
|
+
auto_created=True,
|
|
2560
|
+
primary_key=True,
|
|
2561
|
+
serialize=False,
|
|
2562
|
+
verbose_name="ID",
|
|
2563
|
+
),
|
|
2564
|
+
),
|
|
2565
|
+
(
|
|
2566
|
+
"timestamp",
|
|
2567
|
+
models.DateTimeField(
|
|
2568
|
+
auto_now_add=True,
|
|
2569
|
+
db_index=True,
|
|
2570
|
+
help_text="When the file was uploaded.",
|
|
2571
|
+
),
|
|
2572
|
+
),
|
|
2573
|
+
(
|
|
2574
|
+
"file",
|
|
2575
|
+
models.FileField(
|
|
2576
|
+
help_text="A pointer to the uploaded file on disk.",
|
|
2577
|
+
max_length=255,
|
|
2578
|
+
upload_to=slm.models.system.site_upload_path,
|
|
2579
|
+
),
|
|
2580
|
+
),
|
|
2581
|
+
(
|
|
2582
|
+
"size",
|
|
2583
|
+
models.PositiveIntegerField(blank=True, default=None, null=True),
|
|
2584
|
+
),
|
|
2585
|
+
(
|
|
2586
|
+
"thumbnail",
|
|
2587
|
+
models.ImageField(
|
|
2588
|
+
blank=True,
|
|
2589
|
+
default=None,
|
|
2590
|
+
help_text="A pointer to the generated thumbnail file on disk.",
|
|
2591
|
+
null=True,
|
|
2592
|
+
upload_to=slm.models.system.site_thumbnail_path,
|
|
2593
|
+
),
|
|
2594
|
+
),
|
|
2595
|
+
(
|
|
2596
|
+
"mimetype",
|
|
2597
|
+
models.CharField(
|
|
2598
|
+
db_index=True,
|
|
2599
|
+
default="",
|
|
2600
|
+
help_text="The mimetype of the file.",
|
|
2601
|
+
max_length=255,
|
|
2602
|
+
),
|
|
2603
|
+
),
|
|
2604
|
+
(
|
|
2605
|
+
"file_type",
|
|
2606
|
+
django_enum.fields.EnumPositiveSmallIntegerField(
|
|
2607
|
+
choices=[(1, "Site Log"), (2, "Site Image"), (3, "Attachment")],
|
|
2608
|
+
db_index=True,
|
|
2609
|
+
default=3,
|
|
2610
|
+
help_text="The file type of the upload.",
|
|
2611
|
+
),
|
|
2612
|
+
),
|
|
2613
|
+
(
|
|
2614
|
+
"log_format",
|
|
2615
|
+
django_enum.fields.EnumPositiveSmallIntegerField(
|
|
2616
|
+
choices=[(1, "Legacy (ASCII)"), (2, "GeodesyML"), (3, "JSON")],
|
|
2617
|
+
db_index=True,
|
|
2618
|
+
default=None,
|
|
2619
|
+
help_text="The site log format. (Only if file_type is Site Log)",
|
|
2620
|
+
null=True,
|
|
2621
|
+
),
|
|
2622
|
+
),
|
|
2623
|
+
("name", models.CharField(max_length=50)),
|
|
2624
|
+
(
|
|
2625
|
+
"index",
|
|
2626
|
+
models.ForeignKey(
|
|
2627
|
+
on_delete=django.db.models.deletion.CASCADE,
|
|
2628
|
+
related_name="files",
|
|
2629
|
+
to="slm.archiveindex",
|
|
2630
|
+
),
|
|
2631
|
+
),
|
|
2632
|
+
(
|
|
2633
|
+
"site",
|
|
2634
|
+
models.ForeignKey(
|
|
2635
|
+
help_text="The site this file is attached to.",
|
|
2636
|
+
on_delete=django.db.models.deletion.CASCADE,
|
|
2637
|
+
related_name="%(class)ss",
|
|
2638
|
+
to="slm.site",
|
|
2639
|
+
),
|
|
2640
|
+
),
|
|
2641
|
+
],
|
|
2642
|
+
),
|
|
2643
|
+
migrations.CreateModel(
|
|
2644
|
+
name="Antenna",
|
|
2645
|
+
fields=[
|
|
2646
|
+
(
|
|
2647
|
+
"id",
|
|
2648
|
+
models.BigAutoField(
|
|
2649
|
+
auto_created=True,
|
|
2650
|
+
primary_key=True,
|
|
2651
|
+
serialize=False,
|
|
2652
|
+
verbose_name="ID",
|
|
2653
|
+
),
|
|
2654
|
+
),
|
|
2655
|
+
(
|
|
2656
|
+
"model",
|
|
2657
|
+
models.CharField(
|
|
2658
|
+
db_index=True,
|
|
2659
|
+
help_text="The alphanumeric model of designation of this equipment.",
|
|
2660
|
+
max_length=50,
|
|
2661
|
+
unique=True,
|
|
2662
|
+
),
|
|
2663
|
+
),
|
|
2664
|
+
(
|
|
2665
|
+
"description",
|
|
2666
|
+
models.CharField(
|
|
2667
|
+
blank=True,
|
|
2668
|
+
default="",
|
|
2669
|
+
help_text="The equipment characteristics.",
|
|
2670
|
+
max_length=500,
|
|
2671
|
+
),
|
|
2672
|
+
),
|
|
2673
|
+
(
|
|
2674
|
+
"state",
|
|
2675
|
+
django_enum.fields.EnumPositiveSmallIntegerField(
|
|
2676
|
+
choices=[(100, "Active"), (101, "Legacy"), (102, "Unverified")],
|
|
2677
|
+
db_index=True,
|
|
2678
|
+
default=102,
|
|
2679
|
+
help_text="Has this equipment been verified and is it in active production?",
|
|
2680
|
+
),
|
|
2681
|
+
),
|
|
2682
|
+
("graphic", models.TextField(blank=True, default="")),
|
|
2683
|
+
(
|
|
2684
|
+
"reference_point",
|
|
2685
|
+
django_enum.fields.EnumPositiveSmallIntegerField(
|
|
2686
|
+
blank=True,
|
|
2687
|
+
choices=[
|
|
2688
|
+
(1, "BAM (Bottom of Antenna Mount)"),
|
|
2689
|
+
(2, "BCR (Bottom of Chokering)"),
|
|
2690
|
+
(3, "BDG (Bottom of Dome Ground Plane)"),
|
|
2691
|
+
(4, "BGP (Bottom of Ground Plane)"),
|
|
2692
|
+
(5, "BPA (Bottom of Preamplifier)"),
|
|
2693
|
+
(6, "TCR (Top of Chokering)"),
|
|
2694
|
+
(7, "TDG (Top of Dome Ground Plane)"),
|
|
2695
|
+
(8, "TGP (Top of Ground Plane)"),
|
|
2696
|
+
(9, "TOP (Top of Pole)"),
|
|
2697
|
+
(10, "TPA (Top of Preamplifier)"),
|
|
2698
|
+
],
|
|
2699
|
+
db_index=True,
|
|
2700
|
+
default=None,
|
|
2701
|
+
help_text="Locate your antenna in the file https://files.igs.org/pub/station/general/antenna.gra. Indicate the three-letter abbreviation for the point which is indicated equivalent to ARP for your antenna. Contact the Central Bureau if your antenna does not appear. Format: (BPA/BCR/XXX from antenna.gra; see instr.)",
|
|
2702
|
+
null=True,
|
|
2703
|
+
verbose_name="Antenna Reference Point",
|
|
2704
|
+
),
|
|
2705
|
+
),
|
|
2706
|
+
(
|
|
2707
|
+
"features",
|
|
2708
|
+
django_enum.fields.EnumPositiveSmallIntegerField(
|
|
2709
|
+
blank=True,
|
|
2710
|
+
choices=[
|
|
2711
|
+
(1, "Man-Machine Interface"),
|
|
2712
|
+
(2, "North Orientation Mark"),
|
|
2713
|
+
(3, "Receiver Connector"),
|
|
2714
|
+
(4, "Battery Compartment Door Release"),
|
|
2715
|
+
(5, "Bottom of Tear Drop Shape"),
|
|
2716
|
+
(6, "Mounted Compass"),
|
|
2717
|
+
(7, "Display/Digital Readout"),
|
|
2718
|
+
(8, "Cap or Cover for Drying Agent"),
|
|
2719
|
+
(9, "PC Card Slot"),
|
|
2720
|
+
(10, "Tape Measure Tab or Notch for Slant Height Pole"),
|
|
2721
|
+
(11, "Nonspecific Cable Connector"),
|
|
2722
|
+
(12, "External Controller Connector"),
|
|
2723
|
+
(13, "Data Cable Connector"),
|
|
2724
|
+
(14, "Power Port"),
|
|
2725
|
+
(15, "RTK Connector"),
|
|
2726
|
+
(16, "Unknown"),
|
|
2727
|
+
],
|
|
2728
|
+
db_index=True,
|
|
2729
|
+
default=None,
|
|
2730
|
+
help_text='NOM/RXC/XXX from "antenna.gra"; see NRP abbreviations.',
|
|
2731
|
+
null=True,
|
|
2732
|
+
verbose_name="Antenna Features",
|
|
2733
|
+
),
|
|
2734
|
+
),
|
|
2735
|
+
(
|
|
2736
|
+
"manufacturer",
|
|
2737
|
+
models.ForeignKey(
|
|
2738
|
+
blank=True,
|
|
2739
|
+
default=None,
|
|
2740
|
+
help_text="The manufacturing organization.",
|
|
2741
|
+
null=True,
|
|
2742
|
+
on_delete=django.db.models.deletion.PROTECT,
|
|
2743
|
+
related_name="%(class)ss",
|
|
2744
|
+
to="slm.manufacturer",
|
|
2745
|
+
),
|
|
2746
|
+
),
|
|
2747
|
+
],
|
|
2748
|
+
options={
|
|
2749
|
+
"ordering": ("model",),
|
|
2750
|
+
"abstract": False,
|
|
2751
|
+
},
|
|
2752
|
+
),
|
|
2753
|
+
migrations.CreateModel(
|
|
2754
|
+
name="AntCal",
|
|
2755
|
+
fields=[
|
|
2756
|
+
(
|
|
2757
|
+
"id",
|
|
2758
|
+
models.BigAutoField(
|
|
2759
|
+
auto_created=True,
|
|
2760
|
+
primary_key=True,
|
|
2761
|
+
serialize=False,
|
|
2762
|
+
verbose_name="ID",
|
|
2763
|
+
),
|
|
2764
|
+
),
|
|
2765
|
+
(
|
|
2766
|
+
"method",
|
|
2767
|
+
django_enum.fields.EnumPositiveSmallIntegerField(
|
|
2768
|
+
blank=True,
|
|
2769
|
+
choices=[
|
|
2770
|
+
(0, "CONVERTED"),
|
|
2771
|
+
(1, "ROBOT"),
|
|
2772
|
+
(2, "FIELD"),
|
|
2773
|
+
(3, "CHAMBER"),
|
|
2774
|
+
(4, "COPIED"),
|
|
2775
|
+
],
|
|
2776
|
+
db_index=True,
|
|
2777
|
+
help_text="The method of calibration.",
|
|
2778
|
+
null=True,
|
|
2779
|
+
),
|
|
2780
|
+
),
|
|
2781
|
+
(
|
|
2782
|
+
"calibrated",
|
|
2783
|
+
models.DateField(
|
|
2784
|
+
blank=True,
|
|
2785
|
+
db_index=True,
|
|
2786
|
+
help_text="The date the calibration was done.",
|
|
2787
|
+
null=True,
|
|
2788
|
+
),
|
|
2789
|
+
),
|
|
2790
|
+
(
|
|
2791
|
+
"num_antennas",
|
|
2792
|
+
models.PositiveSmallIntegerField(
|
|
2793
|
+
default=None,
|
|
2794
|
+
help_text="The number of antennas that were calibrated.",
|
|
2795
|
+
null=True,
|
|
2796
|
+
),
|
|
2797
|
+
),
|
|
2798
|
+
(
|
|
2799
|
+
"agency",
|
|
2800
|
+
models.CharField(
|
|
2801
|
+
blank=True,
|
|
2802
|
+
default="",
|
|
2803
|
+
help_text="The agency performing the calibration.",
|
|
2804
|
+
max_length=50,
|
|
2805
|
+
),
|
|
2806
|
+
),
|
|
2807
|
+
("dazi", models.FloatField(blank=True, null=True)),
|
|
2808
|
+
("zen1", models.FloatField(blank=True, null=True)),
|
|
2809
|
+
("zen2", models.FloatField(blank=True, null=True)),
|
|
2810
|
+
("dzen", models.FloatField(blank=True, null=True)),
|
|
2811
|
+
(
|
|
2812
|
+
"antenna",
|
|
2813
|
+
models.ForeignKey(
|
|
2814
|
+
on_delete=django.db.models.deletion.CASCADE,
|
|
2815
|
+
related_name="calibrations",
|
|
2816
|
+
to="slm.antenna",
|
|
2817
|
+
),
|
|
2818
|
+
),
|
|
2819
|
+
(
|
|
2820
|
+
"radome",
|
|
2821
|
+
models.ForeignKey(
|
|
2822
|
+
null=True,
|
|
2823
|
+
on_delete=django.db.models.deletion.CASCADE,
|
|
2824
|
+
related_name="calibrations",
|
|
2825
|
+
to="slm.radome",
|
|
2826
|
+
),
|
|
2827
|
+
),
|
|
2828
|
+
],
|
|
2829
|
+
options={
|
|
2830
|
+
"verbose_name": "Antenna Calibration",
|
|
2831
|
+
"verbose_name_plural": "Antenna Calibrations",
|
|
2832
|
+
},
|
|
2833
|
+
),
|
|
2834
|
+
migrations.AddField(
|
|
2835
|
+
model_name="user",
|
|
2836
|
+
name="agencies",
|
|
2837
|
+
field=models.ManyToManyField(
|
|
2838
|
+
blank=True,
|
|
2839
|
+
help_text="The agencies this user is a member of. At bare minimum this user will have edit permissions for all these agency sites.",
|
|
2840
|
+
related_name="users",
|
|
2841
|
+
to="slm.agency",
|
|
2842
|
+
verbose_name="Agency",
|
|
2843
|
+
),
|
|
2844
|
+
),
|
|
2845
|
+
migrations.AddField(
|
|
2846
|
+
model_name="user",
|
|
2847
|
+
name="groups",
|
|
2848
|
+
field=models.ManyToManyField(
|
|
2849
|
+
blank=True,
|
|
2850
|
+
help_text="The groups this user belongs to. A user will get all permissions granted to each of their groups.",
|
|
2851
|
+
related_name="user_set",
|
|
2852
|
+
related_query_name="user",
|
|
2853
|
+
to="auth.group",
|
|
2854
|
+
verbose_name="groups",
|
|
2855
|
+
),
|
|
2856
|
+
),
|
|
2857
|
+
migrations.AddField(
|
|
2858
|
+
model_name="user",
|
|
2859
|
+
name="user_permissions",
|
|
2860
|
+
field=models.ManyToManyField(
|
|
2861
|
+
blank=True,
|
|
2862
|
+
help_text="Specific permissions for this user.",
|
|
2863
|
+
related_name="user_set",
|
|
2864
|
+
related_query_name="user",
|
|
2865
|
+
to="auth.permission",
|
|
2866
|
+
verbose_name="user permissions",
|
|
2867
|
+
),
|
|
2868
|
+
),
|
|
2869
|
+
migrations.CreateModel(
|
|
2870
|
+
name="UserAlert",
|
|
2871
|
+
fields=[
|
|
2872
|
+
(
|
|
2873
|
+
"alert_ptr",
|
|
2874
|
+
models.OneToOneField(
|
|
2875
|
+
auto_created=True,
|
|
2876
|
+
on_delete=django.db.models.deletion.CASCADE,
|
|
2877
|
+
parent_link=True,
|
|
2878
|
+
primary_key=True,
|
|
2879
|
+
serialize=False,
|
|
2880
|
+
to="slm.alert",
|
|
2881
|
+
),
|
|
2882
|
+
),
|
|
2883
|
+
(
|
|
2884
|
+
"user",
|
|
2885
|
+
models.ForeignKey(
|
|
2886
|
+
blank=True,
|
|
2887
|
+
default=None,
|
|
2888
|
+
help_text="Only this user will see this alert.",
|
|
2889
|
+
null=True,
|
|
2890
|
+
on_delete=django.db.models.deletion.CASCADE,
|
|
2891
|
+
related_name="alerts",
|
|
2892
|
+
to=settings.AUTH_USER_MODEL,
|
|
2893
|
+
),
|
|
2894
|
+
),
|
|
2895
|
+
],
|
|
2896
|
+
options={
|
|
2897
|
+
"verbose_name": "User Alert",
|
|
2898
|
+
"verbose_name_plural": " Alerts: User",
|
|
2899
|
+
},
|
|
2900
|
+
bases=("slm.alert",),
|
|
2901
|
+
),
|
|
2902
|
+
migrations.CreateModel(
|
|
2903
|
+
name="UpdatesRejected",
|
|
2904
|
+
fields=[
|
|
2905
|
+
(
|
|
2906
|
+
"alert_ptr",
|
|
2907
|
+
models.OneToOneField(
|
|
2908
|
+
auto_created=True,
|
|
2909
|
+
on_delete=django.db.models.deletion.CASCADE,
|
|
2910
|
+
parent_link=True,
|
|
2911
|
+
primary_key=True,
|
|
2912
|
+
serialize=False,
|
|
2913
|
+
to="slm.alert",
|
|
2914
|
+
),
|
|
2915
|
+
),
|
|
2916
|
+
(
|
|
2917
|
+
"requester",
|
|
2918
|
+
models.ForeignKey(
|
|
2919
|
+
blank=True,
|
|
2920
|
+
default=None,
|
|
2921
|
+
null=True,
|
|
2922
|
+
on_delete=django.db.models.deletion.SET_NULL,
|
|
2923
|
+
to=settings.AUTH_USER_MODEL,
|
|
2924
|
+
),
|
|
2925
|
+
),
|
|
2926
|
+
(
|
|
2927
|
+
"site",
|
|
2928
|
+
models.OneToOneField(
|
|
2929
|
+
blank=True,
|
|
2930
|
+
default=None,
|
|
2931
|
+
help_text="The site this alert applies to.",
|
|
2932
|
+
on_delete=django.db.models.deletion.CASCADE,
|
|
2933
|
+
related_name="updates_rejected",
|
|
2934
|
+
to="slm.site",
|
|
2935
|
+
),
|
|
2936
|
+
),
|
|
2937
|
+
],
|
|
2938
|
+
options={
|
|
2939
|
+
"verbose_name": "Updates Rejected",
|
|
2940
|
+
"verbose_name_plural": " Alerts: Updates Rejected",
|
|
2941
|
+
},
|
|
2942
|
+
bases=(slm.models.alerts.AutomatedAlertMixin, "slm.alert"),
|
|
2943
|
+
),
|
|
2944
|
+
migrations.CreateModel(
|
|
2945
|
+
name="SiteSurveyedLocalTies",
|
|
2946
|
+
fields=[
|
|
2947
|
+
(
|
|
2948
|
+
"id",
|
|
2949
|
+
models.BigAutoField(
|
|
2950
|
+
auto_created=True,
|
|
2951
|
+
primary_key=True,
|
|
2952
|
+
serialize=False,
|
|
2953
|
+
verbose_name="ID",
|
|
2954
|
+
),
|
|
2955
|
+
),
|
|
2956
|
+
("edited", models.DateTimeField(auto_now_add=True, db_index=True)),
|
|
2957
|
+
("published", models.BooleanField(db_index=True, default=False)),
|
|
2958
|
+
(
|
|
2959
|
+
"_flags",
|
|
2960
|
+
models.JSONField(
|
|
2961
|
+
blank=True,
|
|
2962
|
+
default=dict,
|
|
2963
|
+
encoder=slm.models.sitelog.DefaultToStrEncoder,
|
|
2964
|
+
),
|
|
2965
|
+
),
|
|
2966
|
+
(
|
|
2967
|
+
"num_flags",
|
|
2968
|
+
models.PositiveSmallIntegerField(db_index=True, default=0),
|
|
2969
|
+
),
|
|
2970
|
+
(
|
|
2971
|
+
"subsection",
|
|
2972
|
+
models.PositiveSmallIntegerField(blank=True, db_index=True),
|
|
2973
|
+
),
|
|
2974
|
+
("is_deleted", models.BooleanField(blank=True, default=False)),
|
|
2975
|
+
(
|
|
2976
|
+
"inserted",
|
|
2977
|
+
models.DateTimeField(
|
|
2978
|
+
db_index=True, default=django.utils.timezone.now
|
|
2979
|
+
),
|
|
2980
|
+
),
|
|
2981
|
+
(
|
|
2982
|
+
"name",
|
|
2983
|
+
models.CharField(
|
|
2984
|
+
blank=True,
|
|
2985
|
+
db_index=True,
|
|
2986
|
+
default="",
|
|
2987
|
+
help_text="Enter name of Tied Marker",
|
|
2988
|
+
max_length=50,
|
|
2989
|
+
verbose_name="Tied Marker Name",
|
|
2990
|
+
),
|
|
2991
|
+
),
|
|
2992
|
+
(
|
|
2993
|
+
"usage",
|
|
2994
|
+
models.CharField(
|
|
2995
|
+
blank=True,
|
|
2996
|
+
db_index=True,
|
|
2997
|
+
default="",
|
|
2998
|
+
help_text="Enter the purpose of the tied marker such as SLR, VLBI, DORIS, or other. Format: (SLR/VLBI/LOCAL CONTROL/FOOTPRINT/etc)",
|
|
2999
|
+
max_length=50,
|
|
3000
|
+
verbose_name="Tied Marker Usage",
|
|
3001
|
+
),
|
|
3002
|
+
),
|
|
3003
|
+
(
|
|
3004
|
+
"cdp_number",
|
|
3005
|
+
models.CharField(
|
|
3006
|
+
blank=True,
|
|
3007
|
+
db_index=True,
|
|
3008
|
+
default="",
|
|
3009
|
+
help_text="Enter the NASA CDP identifier if available. Format: (A4)",
|
|
3010
|
+
max_length=50,
|
|
3011
|
+
verbose_name="Tied Marker CDP Number",
|
|
3012
|
+
),
|
|
3013
|
+
),
|
|
3014
|
+
(
|
|
3015
|
+
"domes_number",
|
|
3016
|
+
models.CharField(
|
|
3017
|
+
blank=True,
|
|
3018
|
+
db_index=True,
|
|
3019
|
+
default="",
|
|
3020
|
+
help_text="Enter the tied marker DOMES number if available. Format: (A9)",
|
|
3021
|
+
max_length=50,
|
|
3022
|
+
verbose_name="Tied Marker DOMES Number",
|
|
3023
|
+
),
|
|
3024
|
+
),
|
|
3025
|
+
(
|
|
3026
|
+
"diff_xyz",
|
|
3027
|
+
django.contrib.gis.db.models.fields.PointField(
|
|
3028
|
+
db_index=True,
|
|
3029
|
+
dim=3,
|
|
3030
|
+
help_text="Enter the differential ITRF coordinates to one millimeter precision. Format: dx, dy, dz (m)",
|
|
3031
|
+
null=True,
|
|
3032
|
+
srid=7789,
|
|
3033
|
+
verbose_name="Δ XYZ (m)",
|
|
3034
|
+
),
|
|
3035
|
+
),
|
|
3036
|
+
(
|
|
3037
|
+
"accuracy",
|
|
3038
|
+
models.FloatField(
|
|
3039
|
+
blank=True,
|
|
3040
|
+
db_index=True,
|
|
3041
|
+
default=None,
|
|
3042
|
+
help_text="Enter the accuracy of the tied survey. Format: (mm).",
|
|
3043
|
+
null=True,
|
|
3044
|
+
verbose_name="Accuracy (mm)",
|
|
3045
|
+
),
|
|
3046
|
+
),
|
|
3047
|
+
(
|
|
3048
|
+
"survey_method",
|
|
3049
|
+
models.CharField(
|
|
3050
|
+
blank=True,
|
|
3051
|
+
db_index=True,
|
|
3052
|
+
default="",
|
|
3053
|
+
help_text="Enter the source or the survey method used to determine the differential coordinates, such as GNSS survey, conventional survey, or other. Format: (GPS CAMPAIGN/TRILATERATION/TRIANGULATION/etc)",
|
|
3054
|
+
max_length=50,
|
|
3055
|
+
verbose_name="Survey method",
|
|
3056
|
+
),
|
|
3057
|
+
),
|
|
3058
|
+
(
|
|
3059
|
+
"measured",
|
|
3060
|
+
models.DateTimeField(
|
|
3061
|
+
blank=True,
|
|
3062
|
+
db_index=True,
|
|
3063
|
+
default=None,
|
|
3064
|
+
help_text="Enter the date of the survey local ties measurement. Format: (CCYY-MM-DDThh:mmZ)",
|
|
3065
|
+
null=True,
|
|
3066
|
+
verbose_name="Date Measured (UTC)",
|
|
3067
|
+
),
|
|
3068
|
+
),
|
|
3069
|
+
(
|
|
3070
|
+
"additional_information",
|
|
3071
|
+
models.TextField(
|
|
3072
|
+
blank=True,
|
|
3073
|
+
default="",
|
|
3074
|
+
help_text="Enter any additional information relevant to surveyed local ties. Format: (multiple lines)",
|
|
3075
|
+
verbose_name="Additional Information",
|
|
3076
|
+
),
|
|
3077
|
+
),
|
|
3078
|
+
(
|
|
3079
|
+
"site",
|
|
3080
|
+
models.ForeignKey(
|
|
3081
|
+
on_delete=django.db.models.deletion.CASCADE, to="slm.site"
|
|
3082
|
+
),
|
|
3083
|
+
),
|
|
3084
|
+
],
|
|
3085
|
+
options={
|
|
3086
|
+
"ordering": ("-edited",),
|
|
3087
|
+
"abstract": False,
|
|
3088
|
+
"unique_together": {("site", "published", "subsection")},
|
|
3089
|
+
"index_together": {
|
|
3090
|
+
("site", "edited", "published"),
|
|
3091
|
+
("site", "edited", "published", "subsection"),
|
|
3092
|
+
("site", "edited"),
|
|
3093
|
+
("site", "edited", "subsection"),
|
|
3094
|
+
},
|
|
3095
|
+
},
|
|
3096
|
+
),
|
|
3097
|
+
migrations.CreateModel(
|
|
3098
|
+
name="SiteReceiver",
|
|
3099
|
+
fields=[
|
|
3100
|
+
(
|
|
3101
|
+
"id",
|
|
3102
|
+
models.BigAutoField(
|
|
3103
|
+
auto_created=True,
|
|
3104
|
+
primary_key=True,
|
|
3105
|
+
serialize=False,
|
|
3106
|
+
verbose_name="ID",
|
|
3107
|
+
),
|
|
3108
|
+
),
|
|
3109
|
+
("edited", models.DateTimeField(auto_now_add=True, db_index=True)),
|
|
3110
|
+
("published", models.BooleanField(db_index=True, default=False)),
|
|
3111
|
+
(
|
|
3112
|
+
"_flags",
|
|
3113
|
+
models.JSONField(
|
|
3114
|
+
blank=True,
|
|
3115
|
+
default=dict,
|
|
3116
|
+
encoder=slm.models.sitelog.DefaultToStrEncoder,
|
|
3117
|
+
),
|
|
3118
|
+
),
|
|
3119
|
+
(
|
|
3120
|
+
"num_flags",
|
|
3121
|
+
models.PositiveSmallIntegerField(db_index=True, default=0),
|
|
3122
|
+
),
|
|
3123
|
+
(
|
|
3124
|
+
"subsection",
|
|
3125
|
+
models.PositiveSmallIntegerField(blank=True, db_index=True),
|
|
3126
|
+
),
|
|
3127
|
+
("is_deleted", models.BooleanField(blank=True, default=False)),
|
|
3128
|
+
(
|
|
3129
|
+
"inserted",
|
|
3130
|
+
models.DateTimeField(
|
|
3131
|
+
db_index=True, default=django.utils.timezone.now
|
|
3132
|
+
),
|
|
3133
|
+
),
|
|
3134
|
+
(
|
|
3135
|
+
"serial_number",
|
|
3136
|
+
models.CharField(
|
|
3137
|
+
db_index=True,
|
|
3138
|
+
help_text="Enter the receiver serial number. Format: (A20, but note the first A5 is used in SINEX)",
|
|
3139
|
+
max_length=50,
|
|
3140
|
+
verbose_name="Serial Number",
|
|
3141
|
+
),
|
|
3142
|
+
),
|
|
3143
|
+
(
|
|
3144
|
+
"firmware",
|
|
3145
|
+
models.CharField(
|
|
3146
|
+
db_index=True,
|
|
3147
|
+
help_text="Enter the receiver firmware version. Format: (A11)",
|
|
3148
|
+
max_length=50,
|
|
3149
|
+
verbose_name="Firmware Version",
|
|
3150
|
+
),
|
|
3151
|
+
),
|
|
3152
|
+
(
|
|
3153
|
+
"elevation_cutoff",
|
|
3154
|
+
models.FloatField(
|
|
3155
|
+
blank=True,
|
|
3156
|
+
db_index=True,
|
|
3157
|
+
default=None,
|
|
3158
|
+
help_text="Please respond with the tracking cutoff as set in the receiver, regardless of terrain or obstructions in the area. Format: (deg)",
|
|
3159
|
+
null=True,
|
|
3160
|
+
validators=[
|
|
3161
|
+
django.core.validators.MinValueValidator(-5),
|
|
3162
|
+
django.core.validators.MaxValueValidator(15),
|
|
3163
|
+
],
|
|
3164
|
+
verbose_name="Elevation Cutoff Setting (°)",
|
|
3165
|
+
),
|
|
3166
|
+
),
|
|
3167
|
+
(
|
|
3168
|
+
"installed",
|
|
3169
|
+
models.DateTimeField(
|
|
3170
|
+
db_index=True,
|
|
3171
|
+
help_text="Enter the date and time the receiver was installed. Format: (CCYY-MM-DDThh:mmZ)",
|
|
3172
|
+
null=True,
|
|
3173
|
+
verbose_name="Date Installed (UTC)",
|
|
3174
|
+
),
|
|
3175
|
+
),
|
|
3176
|
+
(
|
|
3177
|
+
"removed",
|
|
3178
|
+
models.DateTimeField(
|
|
3179
|
+
blank=True,
|
|
3180
|
+
db_index=True,
|
|
3181
|
+
default=None,
|
|
3182
|
+
help_text="Enter the date and time the receiver was removed. It is important that the date removed is entered BEFORE the addition of a new receiver. Format: (CCYY-MM-DDThh:mmZ)",
|
|
3183
|
+
null=True,
|
|
3184
|
+
verbose_name="Date Removed (UTC)",
|
|
3185
|
+
),
|
|
3186
|
+
),
|
|
3187
|
+
(
|
|
3188
|
+
"temp_stabilized",
|
|
3189
|
+
models.BooleanField(
|
|
3190
|
+
blank=True,
|
|
3191
|
+
default=None,
|
|
3192
|
+
help_text="If null (default) the temperature stabilization status is unknown. If true the receiver is in a temperature stabilized environment, if false the receiver is not in a temperature stabilized environment.",
|
|
3193
|
+
null=True,
|
|
3194
|
+
verbose_name="Temperature Stabilized",
|
|
3195
|
+
),
|
|
3196
|
+
),
|
|
3197
|
+
(
|
|
3198
|
+
"temp_nominal",
|
|
3199
|
+
models.FloatField(
|
|
3200
|
+
blank=True,
|
|
3201
|
+
db_index=True,
|
|
3202
|
+
default=None,
|
|
3203
|
+
help_text="If the receiver is in a temperature controlled environment, please enter the approximate temperature of that environment. Format: (°C)",
|
|
3204
|
+
null=True,
|
|
3205
|
+
verbose_name="Nominal Temperature (°C)",
|
|
3206
|
+
),
|
|
3207
|
+
),
|
|
3208
|
+
(
|
|
3209
|
+
"temp_deviation",
|
|
3210
|
+
models.FloatField(
|
|
3211
|
+
blank=True,
|
|
3212
|
+
db_index=True,
|
|
3213
|
+
default=None,
|
|
3214
|
+
help_text="If the receiver is in a temperature controlled environment, please enter the expected temperature deviation from nominal of that environment. Format: (± °C)",
|
|
3215
|
+
null=True,
|
|
3216
|
+
verbose_name="Temperature Deviation (± °C)",
|
|
3217
|
+
),
|
|
3218
|
+
),
|
|
3219
|
+
(
|
|
3220
|
+
"additional_info",
|
|
3221
|
+
models.TextField(
|
|
3222
|
+
blank=True,
|
|
3223
|
+
default="",
|
|
3224
|
+
help_text="Enter any additional relevant information about the receiver. Format: (multiple lines)",
|
|
3225
|
+
verbose_name="Additional Information",
|
|
3226
|
+
),
|
|
3227
|
+
),
|
|
3228
|
+
(
|
|
3229
|
+
"receiver_type",
|
|
3230
|
+
models.ForeignKey(
|
|
3231
|
+
help_text="Please find your receiver in https://files.igs.org/pub/station/general/rcvr_ant.tab and use the official name, taking care to get capital letters, hyphens, etc. exactly correct. If you do not find a listing for your receiver, please notify the IGS Central Bureau. Format: (A20, from rcvr_ant.tab; see instructions)",
|
|
3232
|
+
on_delete=django.db.models.deletion.PROTECT,
|
|
3233
|
+
related_name="site_receivers",
|
|
3234
|
+
to="slm.receiver",
|
|
3235
|
+
verbose_name="Receiver Type",
|
|
3236
|
+
),
|
|
3237
|
+
),
|
|
3238
|
+
(
|
|
3239
|
+
"satellite_system",
|
|
3240
|
+
models.ManyToManyField(
|
|
3241
|
+
blank=True,
|
|
3242
|
+
help_text="Check all GNSS systems that apply",
|
|
3243
|
+
to="slm.satellitesystem",
|
|
3244
|
+
verbose_name="Satellite System",
|
|
3245
|
+
),
|
|
3246
|
+
),
|
|
3247
|
+
(
|
|
3248
|
+
"site",
|
|
3249
|
+
models.ForeignKey(
|
|
3250
|
+
on_delete=django.db.models.deletion.CASCADE, to="slm.site"
|
|
3251
|
+
),
|
|
3252
|
+
),
|
|
3253
|
+
],
|
|
3254
|
+
options={
|
|
3255
|
+
"ordering": ("-edited",),
|
|
3256
|
+
"abstract": False,
|
|
3257
|
+
"unique_together": {("site", "published", "subsection")},
|
|
3258
|
+
"index_together": {
|
|
3259
|
+
("site", "edited", "published"),
|
|
3260
|
+
("site", "edited", "published", "subsection"),
|
|
3261
|
+
("site", "edited"),
|
|
3262
|
+
("site", "edited", "subsection"),
|
|
3263
|
+
},
|
|
3264
|
+
},
|
|
3265
|
+
),
|
|
3266
|
+
migrations.CreateModel(
|
|
3267
|
+
name="SiteOtherInstrumentation",
|
|
3268
|
+
fields=[
|
|
3269
|
+
(
|
|
3270
|
+
"id",
|
|
3271
|
+
models.BigAutoField(
|
|
3272
|
+
auto_created=True,
|
|
3273
|
+
primary_key=True,
|
|
3274
|
+
serialize=False,
|
|
3275
|
+
verbose_name="ID",
|
|
3276
|
+
),
|
|
3277
|
+
),
|
|
3278
|
+
("edited", models.DateTimeField(auto_now_add=True, db_index=True)),
|
|
3279
|
+
("published", models.BooleanField(db_index=True, default=False)),
|
|
3280
|
+
(
|
|
3281
|
+
"_flags",
|
|
3282
|
+
models.JSONField(
|
|
3283
|
+
blank=True,
|
|
3284
|
+
default=dict,
|
|
3285
|
+
encoder=slm.models.sitelog.DefaultToStrEncoder,
|
|
3286
|
+
),
|
|
3287
|
+
),
|
|
3288
|
+
(
|
|
3289
|
+
"num_flags",
|
|
3290
|
+
models.PositiveSmallIntegerField(db_index=True, default=0),
|
|
3291
|
+
),
|
|
3292
|
+
(
|
|
3293
|
+
"subsection",
|
|
3294
|
+
models.PositiveSmallIntegerField(blank=True, db_index=True),
|
|
3295
|
+
),
|
|
3296
|
+
("is_deleted", models.BooleanField(blank=True, default=False)),
|
|
3297
|
+
(
|
|
3298
|
+
"inserted",
|
|
3299
|
+
models.DateTimeField(
|
|
3300
|
+
db_index=True, default=django.utils.timezone.now
|
|
3301
|
+
),
|
|
3302
|
+
),
|
|
3303
|
+
(
|
|
3304
|
+
"instrumentation",
|
|
3305
|
+
models.TextField(
|
|
3306
|
+
help_text="Enter any other relevant information regarding meteorological instrumentation near the site. Format: (multiple lines)",
|
|
3307
|
+
verbose_name="Other Instrumentation",
|
|
3308
|
+
),
|
|
3309
|
+
),
|
|
3310
|
+
(
|
|
3311
|
+
"site",
|
|
3312
|
+
models.ForeignKey(
|
|
3313
|
+
on_delete=django.db.models.deletion.CASCADE, to="slm.site"
|
|
3314
|
+
),
|
|
3315
|
+
),
|
|
3316
|
+
],
|
|
3317
|
+
options={
|
|
3318
|
+
"ordering": ("-edited",),
|
|
3319
|
+
"abstract": False,
|
|
3320
|
+
"unique_together": {("site", "published", "subsection")},
|
|
3321
|
+
"index_together": {
|
|
3322
|
+
("site", "edited", "published"),
|
|
3323
|
+
("site", "edited", "published", "subsection"),
|
|
3324
|
+
("site", "edited"),
|
|
3325
|
+
("site", "edited", "subsection"),
|
|
3326
|
+
},
|
|
3327
|
+
},
|
|
3328
|
+
),
|
|
3329
|
+
migrations.CreateModel(
|
|
3330
|
+
name="SiteMoreInformation",
|
|
3331
|
+
fields=[
|
|
3332
|
+
(
|
|
3333
|
+
"id",
|
|
3334
|
+
models.BigAutoField(
|
|
3335
|
+
auto_created=True,
|
|
3336
|
+
primary_key=True,
|
|
3337
|
+
serialize=False,
|
|
3338
|
+
verbose_name="ID",
|
|
3339
|
+
),
|
|
3340
|
+
),
|
|
3341
|
+
("edited", models.DateTimeField(auto_now_add=True, db_index=True)),
|
|
3342
|
+
("published", models.BooleanField(db_index=True, default=False)),
|
|
3343
|
+
(
|
|
3344
|
+
"_flags",
|
|
3345
|
+
models.JSONField(
|
|
3346
|
+
blank=True,
|
|
3347
|
+
default=dict,
|
|
3348
|
+
encoder=slm.models.sitelog.DefaultToStrEncoder,
|
|
3349
|
+
),
|
|
3350
|
+
),
|
|
3351
|
+
(
|
|
3352
|
+
"num_flags",
|
|
3353
|
+
models.PositiveSmallIntegerField(db_index=True, default=0),
|
|
3354
|
+
),
|
|
3355
|
+
(
|
|
3356
|
+
"primary",
|
|
3357
|
+
models.CharField(
|
|
3358
|
+
db_index=True,
|
|
3359
|
+
help_text="Enter the name of the primary operational data center",
|
|
3360
|
+
max_length=50,
|
|
3361
|
+
verbose_name="Primary Data Center",
|
|
3362
|
+
),
|
|
3363
|
+
),
|
|
3364
|
+
(
|
|
3365
|
+
"secondary",
|
|
3366
|
+
models.CharField(
|
|
3367
|
+
db_index=True,
|
|
3368
|
+
help_text="Enter the name of the secondary or backup data center",
|
|
3369
|
+
max_length=50,
|
|
3370
|
+
verbose_name="Secondary Data Center",
|
|
3371
|
+
),
|
|
3372
|
+
),
|
|
3373
|
+
(
|
|
3374
|
+
"more_info",
|
|
3375
|
+
models.URLField(
|
|
3376
|
+
blank=True,
|
|
3377
|
+
db_index=True,
|
|
3378
|
+
default="",
|
|
3379
|
+
verbose_name="URL for More Information",
|
|
3380
|
+
),
|
|
3381
|
+
),
|
|
3382
|
+
(
|
|
3383
|
+
"sitemap",
|
|
3384
|
+
models.CharField(
|
|
3385
|
+
blank=True,
|
|
3386
|
+
db_index=True,
|
|
3387
|
+
default="",
|
|
3388
|
+
help_text="Enter the site map URL",
|
|
3389
|
+
max_length=255,
|
|
3390
|
+
verbose_name="Site Map",
|
|
3391
|
+
),
|
|
3392
|
+
),
|
|
3393
|
+
(
|
|
3394
|
+
"site_diagram",
|
|
3395
|
+
models.CharField(
|
|
3396
|
+
blank=True,
|
|
3397
|
+
db_index=True,
|
|
3398
|
+
default="",
|
|
3399
|
+
help_text="Enter URL for site diagram",
|
|
3400
|
+
max_length=255,
|
|
3401
|
+
verbose_name="Site Diagram",
|
|
3402
|
+
),
|
|
3403
|
+
),
|
|
3404
|
+
(
|
|
3405
|
+
"horizon_mask",
|
|
3406
|
+
models.CharField(
|
|
3407
|
+
blank=True,
|
|
3408
|
+
db_index=True,
|
|
3409
|
+
default="",
|
|
3410
|
+
help_text="Enter Horizon mask URL",
|
|
3411
|
+
max_length=255,
|
|
3412
|
+
verbose_name="Horizon Mask",
|
|
3413
|
+
),
|
|
3414
|
+
),
|
|
3415
|
+
(
|
|
3416
|
+
"monument_description",
|
|
3417
|
+
models.CharField(
|
|
3418
|
+
blank=True,
|
|
3419
|
+
db_index=True,
|
|
3420
|
+
default="",
|
|
3421
|
+
help_text="Enter monument description URL",
|
|
3422
|
+
max_length=255,
|
|
3423
|
+
verbose_name="Monument Description",
|
|
3424
|
+
),
|
|
3425
|
+
),
|
|
3426
|
+
(
|
|
3427
|
+
"site_picture",
|
|
3428
|
+
models.CharField(
|
|
3429
|
+
blank=True,
|
|
3430
|
+
db_index=True,
|
|
3431
|
+
default="",
|
|
3432
|
+
help_text="Enter site pictures URL",
|
|
3433
|
+
max_length=255,
|
|
3434
|
+
verbose_name="Site Pictures",
|
|
3435
|
+
),
|
|
3436
|
+
),
|
|
3437
|
+
(
|
|
3438
|
+
"additional_information",
|
|
3439
|
+
models.TextField(
|
|
3440
|
+
blank=True,
|
|
3441
|
+
default="",
|
|
3442
|
+
help_text="Enter additional relevant information. Format: (multiple lines)",
|
|
3443
|
+
verbose_name="Additional Information",
|
|
3444
|
+
),
|
|
3445
|
+
),
|
|
3446
|
+
(
|
|
3447
|
+
"site",
|
|
3448
|
+
models.ForeignKey(
|
|
3449
|
+
on_delete=django.db.models.deletion.CASCADE, to="slm.site"
|
|
3450
|
+
),
|
|
3451
|
+
),
|
|
3452
|
+
],
|
|
3453
|
+
options={
|
|
3454
|
+
"ordering": ("-edited",),
|
|
3455
|
+
"abstract": False,
|
|
3456
|
+
"unique_together": {("site", "published")},
|
|
3457
|
+
"index_together": {
|
|
3458
|
+
("site", "edited", "published"),
|
|
3459
|
+
("edited", "published"),
|
|
3460
|
+
("site", "edited"),
|
|
3461
|
+
},
|
|
3462
|
+
},
|
|
3463
|
+
),
|
|
3464
|
+
migrations.CreateModel(
|
|
3465
|
+
name="SiteLocation",
|
|
3466
|
+
fields=[
|
|
3467
|
+
(
|
|
3468
|
+
"id",
|
|
3469
|
+
models.BigAutoField(
|
|
3470
|
+
auto_created=True,
|
|
3471
|
+
primary_key=True,
|
|
3472
|
+
serialize=False,
|
|
3473
|
+
verbose_name="ID",
|
|
3474
|
+
),
|
|
3475
|
+
),
|
|
3476
|
+
("edited", models.DateTimeField(auto_now_add=True, db_index=True)),
|
|
3477
|
+
("published", models.BooleanField(db_index=True, default=False)),
|
|
3478
|
+
(
|
|
3479
|
+
"_flags",
|
|
3480
|
+
models.JSONField(
|
|
3481
|
+
blank=True,
|
|
3482
|
+
default=dict,
|
|
3483
|
+
encoder=slm.models.sitelog.DefaultToStrEncoder,
|
|
3484
|
+
),
|
|
3485
|
+
),
|
|
3486
|
+
(
|
|
3487
|
+
"num_flags",
|
|
3488
|
+
models.PositiveSmallIntegerField(db_index=True, default=0),
|
|
3489
|
+
),
|
|
3490
|
+
(
|
|
3491
|
+
"city",
|
|
3492
|
+
models.CharField(
|
|
3493
|
+
db_index=True,
|
|
3494
|
+
help_text="Enter the city or town the site is located in",
|
|
3495
|
+
max_length=50,
|
|
3496
|
+
verbose_name="City or Town",
|
|
3497
|
+
),
|
|
3498
|
+
),
|
|
3499
|
+
(
|
|
3500
|
+
"state",
|
|
3501
|
+
models.CharField(
|
|
3502
|
+
blank=True,
|
|
3503
|
+
db_index=True,
|
|
3504
|
+
default="",
|
|
3505
|
+
help_text="Enter the state or province the site is located in",
|
|
3506
|
+
max_length=50,
|
|
3507
|
+
verbose_name="State or Province",
|
|
3508
|
+
),
|
|
3509
|
+
),
|
|
3510
|
+
(
|
|
3511
|
+
"country",
|
|
3512
|
+
django_enum.fields.EnumCharField(
|
|
3513
|
+
choices=[
|
|
3514
|
+
("AD", "Andorra"),
|
|
3515
|
+
("AE", "United Arab Emirates (the)"),
|
|
3516
|
+
("AF", "Afghanistan"),
|
|
3517
|
+
("AG", "Antigua and Barbuda"),
|
|
3518
|
+
("AI", "Anguilla"),
|
|
3519
|
+
("AL", "Albania"),
|
|
3520
|
+
("AM", "Armenia"),
|
|
3521
|
+
("AO", "Angola"),
|
|
3522
|
+
("AQ", "Antarctica"),
|
|
3523
|
+
("AR", "Argentina"),
|
|
3524
|
+
("AS", "American Samoa"),
|
|
3525
|
+
("AT", "Austria"),
|
|
3526
|
+
("AU", "Australia"),
|
|
3527
|
+
("AW", "Aruba"),
|
|
3528
|
+
("AX", "Åland Islands"),
|
|
3529
|
+
("AZ", "Azerbaijan"),
|
|
3530
|
+
("BA", "Bosnia and Herzegovina"),
|
|
3531
|
+
("BB", "Barbados"),
|
|
3532
|
+
("BD", "Bangladesh"),
|
|
3533
|
+
("BE", "Belgium"),
|
|
3534
|
+
("BF", "Burkina Faso"),
|
|
3535
|
+
("BG", "Bulgaria"),
|
|
3536
|
+
("BH", "Bahrain"),
|
|
3537
|
+
("BI", "Burundi"),
|
|
3538
|
+
("BJ", "Benin"),
|
|
3539
|
+
("BL", "Saint Barthélemy"),
|
|
3540
|
+
("BM", "Bermuda"),
|
|
3541
|
+
("BN", "Brunei Darussalam"),
|
|
3542
|
+
("BO", "Bolivia (Plurinational State of)"),
|
|
3543
|
+
("BQ", "Bonaire, Sint Eustatius and Saba"),
|
|
3544
|
+
("BR", "Brazil"),
|
|
3545
|
+
("BS", "Bahamas (the)"),
|
|
3546
|
+
("BT", "Bhutan"),
|
|
3547
|
+
("BV", "Bouvet Island"),
|
|
3548
|
+
("BW", "Botswana"),
|
|
3549
|
+
("BY", "Belarus"),
|
|
3550
|
+
("BZ", "Belize"),
|
|
3551
|
+
("CA", "Canada"),
|
|
3552
|
+
("CC", "Cocos (Keeling) Islands (the)"),
|
|
3553
|
+
("CD", "Congo (the Democratic Republic of the)"),
|
|
3554
|
+
("CF", "Central African Republic (the)"),
|
|
3555
|
+
("CG", "Congo (the)"),
|
|
3556
|
+
("CH", "Switzerland"),
|
|
3557
|
+
("CI", "Côte d'Ivoire"),
|
|
3558
|
+
("CK", "Cook Islands (the)"),
|
|
3559
|
+
("CL", "Chile"),
|
|
3560
|
+
("CM", "Cameroon"),
|
|
3561
|
+
("CN", "China"),
|
|
3562
|
+
("CO", "Colombia"),
|
|
3563
|
+
("CR", "Costa Rica"),
|
|
3564
|
+
("CU", "Cuba"),
|
|
3565
|
+
("CV", "Cabo Verde"),
|
|
3566
|
+
("CW", "Curaçao"),
|
|
3567
|
+
("CX", "Christmas Island"),
|
|
3568
|
+
("CY", "Cyprus"),
|
|
3569
|
+
("CZ", "Czechia"),
|
|
3570
|
+
("DE", "Germany"),
|
|
3571
|
+
("DJ", "Djibouti"),
|
|
3572
|
+
("DK", "Denmark"),
|
|
3573
|
+
("DM", "Dominica"),
|
|
3574
|
+
("DO", "Dominican Republic (the)"),
|
|
3575
|
+
("DZ", "Algeria"),
|
|
3576
|
+
("EC", "Ecuador"),
|
|
3577
|
+
("EE", "Estonia"),
|
|
3578
|
+
("EG", "Egypt"),
|
|
3579
|
+
("EH", "Western Sahara*"),
|
|
3580
|
+
("ER", "Eritrea"),
|
|
3581
|
+
("ES", "Spain"),
|
|
3582
|
+
("ET", "Ethiopia"),
|
|
3583
|
+
("FI", "Finland"),
|
|
3584
|
+
("FJ", "Fiji"),
|
|
3585
|
+
("FK", "Falkland Islands (the) [Malvinas]"),
|
|
3586
|
+
("FM", "Micronesia (Federated States of)"),
|
|
3587
|
+
("FO", "Faroe Islands (the)"),
|
|
3588
|
+
("FR", "France"),
|
|
3589
|
+
("GA", "Gabon"),
|
|
3590
|
+
(
|
|
3591
|
+
"GB",
|
|
3592
|
+
"United Kingdom of Great Britain and Northern Ireland (the)",
|
|
3593
|
+
),
|
|
3594
|
+
("GD", "Grenada"),
|
|
3595
|
+
("GE", "Georgia"),
|
|
3596
|
+
("GF", "French Guiana"),
|
|
3597
|
+
("GG", "Guernsey"),
|
|
3598
|
+
("GH", "Ghana"),
|
|
3599
|
+
("GI", "Gibraltar"),
|
|
3600
|
+
("GL", "Greenland"),
|
|
3601
|
+
("GM", "Gambia (the)"),
|
|
3602
|
+
("GN", "Guinea"),
|
|
3603
|
+
("GP", "Guadeloupe"),
|
|
3604
|
+
("GQ", "Equatorial Guinea"),
|
|
3605
|
+
("GR", "Greece"),
|
|
3606
|
+
("GS", "South Georgia and the South Sandwich Islands"),
|
|
3607
|
+
("GT", "Guatemala"),
|
|
3608
|
+
("GU", "Guam"),
|
|
3609
|
+
("GW", "Guinea-Bissau"),
|
|
3610
|
+
("GY", "Guyana"),
|
|
3611
|
+
("HK", "Hong Kong"),
|
|
3612
|
+
("HM", "Heard Island and McDonald Islands"),
|
|
3613
|
+
("HN", "Honduras"),
|
|
3614
|
+
("HR", "Croatia"),
|
|
3615
|
+
("HT", "Haiti"),
|
|
3616
|
+
("HU", "Hungary"),
|
|
3617
|
+
("ID", "Indonesia"),
|
|
3618
|
+
("IE", "Ireland"),
|
|
3619
|
+
("IL", "Israel"),
|
|
3620
|
+
("IM", "Isle of Man"),
|
|
3621
|
+
("IN", "India"),
|
|
3622
|
+
("IO", "British Indian Ocean Territory (the)"),
|
|
3623
|
+
("IQ", "Iraq"),
|
|
3624
|
+
("IR", "Iran (Islamic Republic of)"),
|
|
3625
|
+
("IS", "Iceland"),
|
|
3626
|
+
("IT", "Italy"),
|
|
3627
|
+
("JE", "Jersey"),
|
|
3628
|
+
("JM", "Jamaica"),
|
|
3629
|
+
("JO", "Jordan"),
|
|
3630
|
+
("JP", "Japan"),
|
|
3631
|
+
("KE", "Kenya"),
|
|
3632
|
+
("KG", "Kyrgyzstan"),
|
|
3633
|
+
("KH", "Cambodia"),
|
|
3634
|
+
("KI", "Kiribati"),
|
|
3635
|
+
("KM", "Comoros (the)"),
|
|
3636
|
+
("KN", "Saint Kitts and Nevis"),
|
|
3637
|
+
("KP", "Korea (the Democratic People's Republic of)"),
|
|
3638
|
+
("KR", "Korea (the Republic of)"),
|
|
3639
|
+
("KW", "Kuwait"),
|
|
3640
|
+
("KY", "Cayman Islands (the)"),
|
|
3641
|
+
("KZ", "Kazakhstan"),
|
|
3642
|
+
("LA", "Lao People's Democratic Republic (the)"),
|
|
3643
|
+
("LB", "Lebanon"),
|
|
3644
|
+
("LC", "Saint Lucia"),
|
|
3645
|
+
("LI", "Liechtenstein"),
|
|
3646
|
+
("LK", "Sri Lanka"),
|
|
3647
|
+
("LR", "Liberia"),
|
|
3648
|
+
("LS", "Lesotho"),
|
|
3649
|
+
("LT", "Lithuania"),
|
|
3650
|
+
("LU", "Luxembourg"),
|
|
3651
|
+
("LV", "Latvia"),
|
|
3652
|
+
("LY", "Libya"),
|
|
3653
|
+
("MA", "Morocco"),
|
|
3654
|
+
("MC", "Monaco"),
|
|
3655
|
+
("MD", "Moldova (the Republic of)"),
|
|
3656
|
+
("ME", "Montenegro"),
|
|
3657
|
+
("MF", "Saint Martin (French part)"),
|
|
3658
|
+
("MG", "Madagascar"),
|
|
3659
|
+
("MH", "Marshall Islands (the)"),
|
|
3660
|
+
("MK", "North Macedonia"),
|
|
3661
|
+
("ML", "Mali"),
|
|
3662
|
+
("MM", "Myanmar"),
|
|
3663
|
+
("MN", "Mongolia"),
|
|
3664
|
+
("MO", "Macao"),
|
|
3665
|
+
("MP", "Northern Mariana Islands (the)"),
|
|
3666
|
+
("MQ", "Martinique"),
|
|
3667
|
+
("MR", "Mauritania"),
|
|
3668
|
+
("MS", "Montserrat"),
|
|
3669
|
+
("MT", "Malta"),
|
|
3670
|
+
("MU", "Mauritius"),
|
|
3671
|
+
("MV", "Maldives"),
|
|
3672
|
+
("MW", "Malawi"),
|
|
3673
|
+
("MX", "Mexico"),
|
|
3674
|
+
("MY", "Malaysia"),
|
|
3675
|
+
("MZ", "Mozambique"),
|
|
3676
|
+
("NA", "Namibia"),
|
|
3677
|
+
("NC", "New Caledonia"),
|
|
3678
|
+
("NE", "Niger (the)"),
|
|
3679
|
+
("NF", "Norfolk Island"),
|
|
3680
|
+
("NG", "Nigeria"),
|
|
3681
|
+
("NI", "Nicaragua"),
|
|
3682
|
+
("NL", "Netherlands (the)"),
|
|
3683
|
+
("NO", "Norway"),
|
|
3684
|
+
("NP", "Nepal"),
|
|
3685
|
+
("NR", "Nauru"),
|
|
3686
|
+
("NU", "Niue"),
|
|
3687
|
+
("NZ", "New Zealand"),
|
|
3688
|
+
("OM", "Oman"),
|
|
3689
|
+
("PA", "Panama"),
|
|
3690
|
+
("PE", "Peru"),
|
|
3691
|
+
("PF", "French Polynesia"),
|
|
3692
|
+
("PG", "Papua New Guinea"),
|
|
3693
|
+
("PH", "Philippines (the)"),
|
|
3694
|
+
("PK", "Pakistan"),
|
|
3695
|
+
("PL", "Poland"),
|
|
3696
|
+
("PM", "Saint Pierre and Miquelon"),
|
|
3697
|
+
("PN", "Pitcairn"),
|
|
3698
|
+
("PR", "Puerto Rico"),
|
|
3699
|
+
("PS", "Palestine, State of"),
|
|
3700
|
+
("PT", "Portugal"),
|
|
3701
|
+
("PW", "Palau"),
|
|
3702
|
+
("PY", "Paraguay"),
|
|
3703
|
+
("QA", "Qatar"),
|
|
3704
|
+
("RE", "Réunion"),
|
|
3705
|
+
("RO", "Romania"),
|
|
3706
|
+
("RS", "Serbia"),
|
|
3707
|
+
("RU", "Russian Federation (the)"),
|
|
3708
|
+
("RW", "Rwanda"),
|
|
3709
|
+
("SA", "Saudi Arabia"),
|
|
3710
|
+
("SB", "Solomon Islands"),
|
|
3711
|
+
("SC", "Seychelles"),
|
|
3712
|
+
("SD", "Sudan (the)"),
|
|
3713
|
+
("SE", "Sweden"),
|
|
3714
|
+
("SG", "Singapore"),
|
|
3715
|
+
("SH", "Saint Helena, Ascension and Tristan da Cunha"),
|
|
3716
|
+
("SI", "Slovenia"),
|
|
3717
|
+
("SJ", "Svalbard and Jan Mayen"),
|
|
3718
|
+
("SK", "Slovakia"),
|
|
3719
|
+
("SL", "Sierra Leone"),
|
|
3720
|
+
("SM", "San Marino"),
|
|
3721
|
+
("SN", "Senegal"),
|
|
3722
|
+
("SO", "Somalia"),
|
|
3723
|
+
("SR", "Suriname"),
|
|
3724
|
+
("SS", "South Sudan"),
|
|
3725
|
+
("ST", "Sao Tome and Principe"),
|
|
3726
|
+
("SV", "El Salvador"),
|
|
3727
|
+
("SX", "Sint Maarten (Dutch part)"),
|
|
3728
|
+
("SY", "Syrian Arab Republic (the)"),
|
|
3729
|
+
("SZ", "Eswatini"),
|
|
3730
|
+
("TC", "Turks and Caicos Islands (the)"),
|
|
3731
|
+
("TD", "Chad"),
|
|
3732
|
+
("TF", "French Southern Territories (the)"),
|
|
3733
|
+
("TG", "Togo"),
|
|
3734
|
+
("TH", "Thailand"),
|
|
3735
|
+
("TJ", "Tajikistan"),
|
|
3736
|
+
("TK", "Tokelau"),
|
|
3737
|
+
("TL", "Timor-Leste"),
|
|
3738
|
+
("TM", "Turkmenistan"),
|
|
3739
|
+
("TN", "Tunisia"),
|
|
3740
|
+
("TO", "Tonga"),
|
|
3741
|
+
("TR", "Türkiye"),
|
|
3742
|
+
("TT", "Trinidad and Tobago"),
|
|
3743
|
+
("TV", "Tuvalu"),
|
|
3744
|
+
("TW", "Taiwan"),
|
|
3745
|
+
("TZ", "Tanzania, the United Republic of"),
|
|
3746
|
+
("UA", "Ukraine"),
|
|
3747
|
+
("UG", "Uganda"),
|
|
3748
|
+
("UM", "United States Minor Outlying Islands (the)"),
|
|
3749
|
+
("US", "United States of America (the)"),
|
|
3750
|
+
("UY", "Uruguay"),
|
|
3751
|
+
("UZ", "Uzbekistan"),
|
|
3752
|
+
("VA", "Holy See (the)"),
|
|
3753
|
+
("VC", "Saint Vincent and the Grenadines"),
|
|
3754
|
+
("VE", "Venezuela (Bolivarian Republic of)"),
|
|
3755
|
+
("VG", "Virgin Islands (British)"),
|
|
3756
|
+
("VI", "Virgin Islands (U.S.)"),
|
|
3757
|
+
("VN", "Viet Nam"),
|
|
3758
|
+
("VU", "Vanuatu"),
|
|
3759
|
+
("WF", "Wallis and Futuna"),
|
|
3760
|
+
("WS", "Samoa"),
|
|
3761
|
+
("YE", "Yemen"),
|
|
3762
|
+
("YT", "Mayotte"),
|
|
3763
|
+
("ZA", "South Africa"),
|
|
3764
|
+
("ZM", "Zambia"),
|
|
3765
|
+
("ZW", "Zimbabwe"),
|
|
3766
|
+
],
|
|
3767
|
+
db_index=True,
|
|
3768
|
+
help_text="Enter the country/region the site is located in",
|
|
3769
|
+
max_length=100,
|
|
3770
|
+
null=True,
|
|
3771
|
+
verbose_name="Country or Region",
|
|
3772
|
+
),
|
|
3773
|
+
),
|
|
3774
|
+
(
|
|
3775
|
+
"tectonic",
|
|
3776
|
+
django_enum.fields.EnumCharField(
|
|
3777
|
+
blank=True,
|
|
3778
|
+
choices=[
|
|
3779
|
+
("AF", "African"),
|
|
3780
|
+
("AN", "Antarctic"),
|
|
3781
|
+
("AR", "Arabian"),
|
|
3782
|
+
("AU", "Australian"),
|
|
3783
|
+
("CA", "Caribbean"),
|
|
3784
|
+
("CO", "Cocos"),
|
|
3785
|
+
("EU", "Eurasian"),
|
|
3786
|
+
("IN", "Indian"),
|
|
3787
|
+
("JU", "Juan de Fuca"),
|
|
3788
|
+
("NZ", "Nazca"),
|
|
3789
|
+
("NA", "North American"),
|
|
3790
|
+
("PA", "Pacific"),
|
|
3791
|
+
("PH", "Philippine"),
|
|
3792
|
+
("SC", "Scotia"),
|
|
3793
|
+
("SA", "South American"),
|
|
3794
|
+
("NU", "Nubia"),
|
|
3795
|
+
("SO", "Somalia"),
|
|
3796
|
+
("MA", "Mariana"),
|
|
3797
|
+
],
|
|
3798
|
+
db_index=True,
|
|
3799
|
+
default=None,
|
|
3800
|
+
help_text="Select the primary tectonic plate that the GNSS site occupies",
|
|
3801
|
+
max_length=50,
|
|
3802
|
+
null=True,
|
|
3803
|
+
verbose_name="Tectonic Plate",
|
|
3804
|
+
),
|
|
3805
|
+
),
|
|
3806
|
+
(
|
|
3807
|
+
"xyz",
|
|
3808
|
+
django.contrib.gis.db.models.fields.PointField(
|
|
3809
|
+
db_index=True,
|
|
3810
|
+
dim=3,
|
|
3811
|
+
help_text="Enter the ITRF position to a one meter precision. Format (m)",
|
|
3812
|
+
null=True,
|
|
3813
|
+
srid=7789,
|
|
3814
|
+
verbose_name="Position (X, Y, Z)",
|
|
3815
|
+
),
|
|
3816
|
+
),
|
|
3817
|
+
(
|
|
3818
|
+
"llh",
|
|
3819
|
+
django.contrib.gis.db.models.fields.PointField(
|
|
3820
|
+
db_index=True,
|
|
3821
|
+
dim=3,
|
|
3822
|
+
help_text="Enter the ITRF latitude and longitude in decimal degrees and elevation in meters to one meter precision. Note, legacy site log format is (+/-DDMMSS.SS) and elevation may be given to more decimal places than F7.1. F7.1 is the minimum for the SINEX format.",
|
|
3823
|
+
null=True,
|
|
3824
|
+
srid=4979,
|
|
3825
|
+
verbose_name="Position (Lat, Lon, Elev)",
|
|
3826
|
+
),
|
|
3827
|
+
),
|
|
3828
|
+
(
|
|
3829
|
+
"additional_information",
|
|
3830
|
+
models.TextField(
|
|
3831
|
+
blank=True,
|
|
3832
|
+
default="",
|
|
3833
|
+
help_text="Describe the source of these coordinates or any other relevant information. Format: (multiple lines)",
|
|
3834
|
+
verbose_name="Additional Information",
|
|
3835
|
+
),
|
|
3836
|
+
),
|
|
3837
|
+
(
|
|
3838
|
+
"site",
|
|
3839
|
+
models.ForeignKey(
|
|
3840
|
+
on_delete=django.db.models.deletion.CASCADE, to="slm.site"
|
|
3841
|
+
),
|
|
3842
|
+
),
|
|
3843
|
+
],
|
|
3844
|
+
options={
|
|
3845
|
+
"ordering": ("-edited",),
|
|
3846
|
+
"abstract": False,
|
|
3847
|
+
"unique_together": {("site", "published")},
|
|
3848
|
+
"index_together": {
|
|
3849
|
+
("site", "edited", "published"),
|
|
3850
|
+
("edited", "published"),
|
|
3851
|
+
("site", "edited"),
|
|
3852
|
+
},
|
|
3853
|
+
},
|
|
3854
|
+
),
|
|
3855
|
+
migrations.CreateModel(
|
|
3856
|
+
name="SiteLocalEpisodicEffects",
|
|
3857
|
+
fields=[
|
|
3858
|
+
(
|
|
3859
|
+
"id",
|
|
3860
|
+
models.BigAutoField(
|
|
3861
|
+
auto_created=True,
|
|
3862
|
+
primary_key=True,
|
|
3863
|
+
serialize=False,
|
|
3864
|
+
verbose_name="ID",
|
|
3865
|
+
),
|
|
3866
|
+
),
|
|
3867
|
+
("edited", models.DateTimeField(auto_now_add=True, db_index=True)),
|
|
3868
|
+
("published", models.BooleanField(db_index=True, default=False)),
|
|
3869
|
+
(
|
|
3870
|
+
"_flags",
|
|
3871
|
+
models.JSONField(
|
|
3872
|
+
blank=True,
|
|
3873
|
+
default=dict,
|
|
3874
|
+
encoder=slm.models.sitelog.DefaultToStrEncoder,
|
|
3875
|
+
),
|
|
3876
|
+
),
|
|
3877
|
+
(
|
|
3878
|
+
"num_flags",
|
|
3879
|
+
models.PositiveSmallIntegerField(db_index=True, default=0),
|
|
3880
|
+
),
|
|
3881
|
+
(
|
|
3882
|
+
"subsection",
|
|
3883
|
+
models.PositiveSmallIntegerField(blank=True, db_index=True),
|
|
3884
|
+
),
|
|
3885
|
+
("is_deleted", models.BooleanField(blank=True, default=False)),
|
|
3886
|
+
(
|
|
3887
|
+
"inserted",
|
|
3888
|
+
models.DateTimeField(
|
|
3889
|
+
db_index=True, default=django.utils.timezone.now
|
|
3890
|
+
),
|
|
3891
|
+
),
|
|
3892
|
+
(
|
|
3893
|
+
"event",
|
|
3894
|
+
models.TextField(
|
|
3895
|
+
blank=True,
|
|
3896
|
+
default="",
|
|
3897
|
+
help_text="Describe any events near the GNSS station that may affect data quality such as tree clearing, construction, or weather events. Format: (TREE CLEARING/CONSTRUCTION/etc)",
|
|
3898
|
+
verbose_name="Event",
|
|
3899
|
+
),
|
|
3900
|
+
),
|
|
3901
|
+
(
|
|
3902
|
+
"effective_start",
|
|
3903
|
+
models.DateField(
|
|
3904
|
+
blank=True,
|
|
3905
|
+
db_index=True,
|
|
3906
|
+
default=None,
|
|
3907
|
+
help_text="Enter the effective start date for the local episodic effect. Format: (CCYY-MM-DD)",
|
|
3908
|
+
null=True,
|
|
3909
|
+
),
|
|
3910
|
+
),
|
|
3911
|
+
(
|
|
3912
|
+
"effective_end",
|
|
3913
|
+
models.DateField(
|
|
3914
|
+
blank=True,
|
|
3915
|
+
db_index=True,
|
|
3916
|
+
default=None,
|
|
3917
|
+
help_text="Enter the effective end date for the local episodic effect. Format: (CCYY-MM-DD)",
|
|
3918
|
+
null=True,
|
|
3919
|
+
),
|
|
3920
|
+
),
|
|
3921
|
+
(
|
|
3922
|
+
"site",
|
|
3923
|
+
models.ForeignKey(
|
|
3924
|
+
on_delete=django.db.models.deletion.CASCADE, to="slm.site"
|
|
3925
|
+
),
|
|
3926
|
+
),
|
|
3927
|
+
],
|
|
3928
|
+
options={
|
|
3929
|
+
"ordering": ("-edited",),
|
|
3930
|
+
"abstract": False,
|
|
3931
|
+
"unique_together": {("site", "published", "subsection")},
|
|
3932
|
+
"index_together": {
|
|
3933
|
+
("site", "edited", "published"),
|
|
3934
|
+
("site", "edited", "published", "subsection"),
|
|
3935
|
+
("site", "edited"),
|
|
3936
|
+
("site", "edited", "subsection"),
|
|
3937
|
+
},
|
|
3938
|
+
},
|
|
3939
|
+
),
|
|
3940
|
+
migrations.CreateModel(
|
|
3941
|
+
name="SiteIdentification",
|
|
3942
|
+
fields=[
|
|
3943
|
+
(
|
|
3944
|
+
"id",
|
|
3945
|
+
models.BigAutoField(
|
|
3946
|
+
auto_created=True,
|
|
3947
|
+
primary_key=True,
|
|
3948
|
+
serialize=False,
|
|
3949
|
+
verbose_name="ID",
|
|
3950
|
+
),
|
|
3951
|
+
),
|
|
3952
|
+
("edited", models.DateTimeField(auto_now_add=True, db_index=True)),
|
|
3953
|
+
("published", models.BooleanField(db_index=True, default=False)),
|
|
3954
|
+
(
|
|
3955
|
+
"_flags",
|
|
3956
|
+
models.JSONField(
|
|
3957
|
+
blank=True,
|
|
3958
|
+
default=dict,
|
|
3959
|
+
encoder=slm.models.sitelog.DefaultToStrEncoder,
|
|
3960
|
+
),
|
|
3961
|
+
),
|
|
3962
|
+
(
|
|
3963
|
+
"num_flags",
|
|
3964
|
+
models.PositiveSmallIntegerField(db_index=True, default=0),
|
|
3965
|
+
),
|
|
3966
|
+
(
|
|
3967
|
+
"site_name",
|
|
3968
|
+
models.CharField(
|
|
3969
|
+
db_index=True,
|
|
3970
|
+
help_text="Enter the name of the site.",
|
|
3971
|
+
max_length=255,
|
|
3972
|
+
verbose_name="Site Name",
|
|
3973
|
+
),
|
|
3974
|
+
),
|
|
3975
|
+
(
|
|
3976
|
+
"monument_inscription",
|
|
3977
|
+
models.CharField(
|
|
3978
|
+
blank=True,
|
|
3979
|
+
db_index=True,
|
|
3980
|
+
default="",
|
|
3981
|
+
help_text="Enter what is stamped on the monument",
|
|
3982
|
+
max_length=50,
|
|
3983
|
+
verbose_name="Monument Inscription",
|
|
3984
|
+
),
|
|
3985
|
+
),
|
|
3986
|
+
(
|
|
3987
|
+
"iers_domes_number",
|
|
3988
|
+
models.CharField(
|
|
3989
|
+
db_index=True,
|
|
3990
|
+
help_text="This is strictly required. See https://itrf.ign.fr/en/network/domes/request to obtain one. Format: 9 character alphanumeric (A9)",
|
|
3991
|
+
max_length=9,
|
|
3992
|
+
verbose_name="IERS DOMES Number",
|
|
3993
|
+
),
|
|
3994
|
+
),
|
|
3995
|
+
(
|
|
3996
|
+
"cdp_number",
|
|
3997
|
+
models.CharField(
|
|
3998
|
+
blank=True,
|
|
3999
|
+
db_index=True,
|
|
4000
|
+
default="",
|
|
4001
|
+
help_text="Enter the NASA CDP identifier if available. Format: 4 character alphanumeric (A4)",
|
|
4002
|
+
max_length=50,
|
|
4003
|
+
verbose_name="CDP Number",
|
|
4004
|
+
),
|
|
4005
|
+
),
|
|
4006
|
+
(
|
|
4007
|
+
"date_installed",
|
|
4008
|
+
models.DateTimeField(
|
|
4009
|
+
db_index=True,
|
|
4010
|
+
help_text="Enter the original date that this site was included in the IGS. Format: (CCYY-MM-DDThh:mmZ)",
|
|
4011
|
+
null=True,
|
|
4012
|
+
verbose_name="Date Installed (UTC)",
|
|
4013
|
+
),
|
|
4014
|
+
),
|
|
4015
|
+
(
|
|
4016
|
+
"monument_description",
|
|
4017
|
+
models.CharField(
|
|
4018
|
+
blank=True,
|
|
4019
|
+
db_index=True,
|
|
4020
|
+
default="",
|
|
4021
|
+
help_text="Provide a general description of the GNSS monument. Format: (PILLAR/BRASS PLATE/STEEL MAST/etc)",
|
|
4022
|
+
max_length=50,
|
|
4023
|
+
verbose_name="Monument Description",
|
|
4024
|
+
),
|
|
4025
|
+
),
|
|
4026
|
+
(
|
|
4027
|
+
"monument_height",
|
|
4028
|
+
models.FloatField(
|
|
4029
|
+
blank=True,
|
|
4030
|
+
db_index=True,
|
|
4031
|
+
default=None,
|
|
4032
|
+
help_text="Enter the height of the monument above the ground surface in meters. Units: (m)",
|
|
4033
|
+
null=True,
|
|
4034
|
+
verbose_name="Height of the Monument (m)",
|
|
4035
|
+
),
|
|
4036
|
+
),
|
|
4037
|
+
(
|
|
4038
|
+
"monument_foundation",
|
|
4039
|
+
models.CharField(
|
|
4040
|
+
blank=True,
|
|
4041
|
+
db_index=True,
|
|
4042
|
+
default="",
|
|
4043
|
+
help_text="Describe how the GNSS monument is attached to the ground. Format: (STEEL RODS, CONCRETE BLOCK, ROOF, etc)",
|
|
4044
|
+
max_length=50,
|
|
4045
|
+
verbose_name="Monument Foundation",
|
|
4046
|
+
),
|
|
4047
|
+
),
|
|
4048
|
+
(
|
|
4049
|
+
"foundation_depth",
|
|
4050
|
+
models.FloatField(
|
|
4051
|
+
blank=True,
|
|
4052
|
+
db_index=True,
|
|
4053
|
+
default=None,
|
|
4054
|
+
help_text="Enter the depth of the monument foundation below the ground surface in meters. Format: (m)",
|
|
4055
|
+
null=True,
|
|
4056
|
+
verbose_name="Foundation Depth (m)",
|
|
4057
|
+
),
|
|
4058
|
+
),
|
|
4059
|
+
(
|
|
4060
|
+
"marker_description",
|
|
4061
|
+
models.CharField(
|
|
4062
|
+
blank=True,
|
|
4063
|
+
db_index=True,
|
|
4064
|
+
default="",
|
|
4065
|
+
help_text="Describe the actual physical marker reference point. Format: (CHISELLED CROSS/DIVOT/BRASS NAIL/etc)",
|
|
4066
|
+
max_length=50,
|
|
4067
|
+
verbose_name="Marker Description",
|
|
4068
|
+
),
|
|
4069
|
+
),
|
|
4070
|
+
(
|
|
4071
|
+
"geologic_characteristic",
|
|
4072
|
+
models.CharField(
|
|
4073
|
+
blank=True,
|
|
4074
|
+
db_index=True,
|
|
4075
|
+
default="",
|
|
4076
|
+
help_text="Describe the general geologic characteristics of the GNSS site. Format: (BEDROCK/CLAY/CONGLOMERATE/GRAVEL/SAND/etc)",
|
|
4077
|
+
max_length=50,
|
|
4078
|
+
verbose_name="Geologic Characteristic",
|
|
4079
|
+
),
|
|
4080
|
+
),
|
|
4081
|
+
(
|
|
4082
|
+
"bedrock_type",
|
|
4083
|
+
models.CharField(
|
|
4084
|
+
blank=True,
|
|
4085
|
+
db_index=True,
|
|
4086
|
+
default="",
|
|
4087
|
+
help_text="If the site is located on bedrock, describe the nature of that bedrock. Format: (IGNEOUS/METAMORPHIC/SEDIMENTARY)",
|
|
4088
|
+
max_length=50,
|
|
4089
|
+
verbose_name="Bedrock Type",
|
|
4090
|
+
),
|
|
4091
|
+
),
|
|
4092
|
+
(
|
|
4093
|
+
"bedrock_condition",
|
|
4094
|
+
models.CharField(
|
|
4095
|
+
blank=True,
|
|
4096
|
+
db_index=True,
|
|
4097
|
+
default="",
|
|
4098
|
+
help_text="If the site is located on bedrock, describe the condition of that bedrock. Format: (FRESH/JOINTED/WEATHERED)",
|
|
4099
|
+
max_length=50,
|
|
4100
|
+
verbose_name="Bedrock Condition",
|
|
4101
|
+
),
|
|
4102
|
+
),
|
|
4103
|
+
(
|
|
4104
|
+
"fracture_spacing",
|
|
4105
|
+
django_enum.fields.EnumCharField(
|
|
4106
|
+
blank=True,
|
|
4107
|
+
choices=[
|
|
4108
|
+
("1", "1-10 cm"),
|
|
4109
|
+
("11", "11-50 cm"),
|
|
4110
|
+
("51", "51-200 cm"),
|
|
4111
|
+
("200", "over 200 cm"),
|
|
4112
|
+
],
|
|
4113
|
+
db_index=True,
|
|
4114
|
+
default=None,
|
|
4115
|
+
help_text="If known, describe the fracture spacing of the bedrock. Format: (1-10 cm/11-50 cm/51-200 cm/over 200 cm)",
|
|
4116
|
+
max_length=50,
|
|
4117
|
+
null=True,
|
|
4118
|
+
verbose_name="Fracture Spacing",
|
|
4119
|
+
),
|
|
4120
|
+
),
|
|
4121
|
+
(
|
|
4122
|
+
"fault_zones",
|
|
4123
|
+
models.CharField(
|
|
4124
|
+
blank=True,
|
|
4125
|
+
db_index=True,
|
|
4126
|
+
default="",
|
|
4127
|
+
help_text="Enter the name of any known faults near the site. Format: (YES/NO/Name of the zone)",
|
|
4128
|
+
max_length=50,
|
|
4129
|
+
verbose_name="Fault Zones Nearby",
|
|
4130
|
+
),
|
|
4131
|
+
),
|
|
4132
|
+
(
|
|
4133
|
+
"distance",
|
|
4134
|
+
models.TextField(
|
|
4135
|
+
blank=True,
|
|
4136
|
+
default="",
|
|
4137
|
+
help_text="Describe proximity of the site to any known faults. Format: (multiple lines)",
|
|
4138
|
+
verbose_name="Distance/activity",
|
|
4139
|
+
),
|
|
4140
|
+
),
|
|
4141
|
+
(
|
|
4142
|
+
"additional_information",
|
|
4143
|
+
models.TextField(
|
|
4144
|
+
blank=True,
|
|
4145
|
+
default="",
|
|
4146
|
+
help_text="Enter any additional information about the geologic characteristics of the GNSS site. Format: (multiple lines)",
|
|
4147
|
+
verbose_name="Additional Information",
|
|
4148
|
+
),
|
|
4149
|
+
),
|
|
4150
|
+
(
|
|
4151
|
+
"site",
|
|
4152
|
+
models.ForeignKey(
|
|
4153
|
+
on_delete=django.db.models.deletion.CASCADE, to="slm.site"
|
|
4154
|
+
),
|
|
4155
|
+
),
|
|
4156
|
+
],
|
|
4157
|
+
options={
|
|
4158
|
+
"ordering": ("-edited",),
|
|
4159
|
+
"abstract": False,
|
|
4160
|
+
"unique_together": {("site", "published")},
|
|
4161
|
+
"index_together": {
|
|
4162
|
+
("site", "edited", "published"),
|
|
4163
|
+
("edited", "published"),
|
|
4164
|
+
("site", "edited"),
|
|
4165
|
+
},
|
|
4166
|
+
},
|
|
4167
|
+
),
|
|
4168
|
+
migrations.CreateModel(
|
|
4169
|
+
name="SiteFrequencyStandard",
|
|
4170
|
+
fields=[
|
|
4171
|
+
(
|
|
4172
|
+
"id",
|
|
4173
|
+
models.BigAutoField(
|
|
4174
|
+
auto_created=True,
|
|
4175
|
+
primary_key=True,
|
|
4176
|
+
serialize=False,
|
|
4177
|
+
verbose_name="ID",
|
|
4178
|
+
),
|
|
4179
|
+
),
|
|
4180
|
+
("edited", models.DateTimeField(auto_now_add=True, db_index=True)),
|
|
4181
|
+
("published", models.BooleanField(db_index=True, default=False)),
|
|
4182
|
+
(
|
|
4183
|
+
"_flags",
|
|
4184
|
+
models.JSONField(
|
|
4185
|
+
blank=True,
|
|
4186
|
+
default=dict,
|
|
4187
|
+
encoder=slm.models.sitelog.DefaultToStrEncoder,
|
|
4188
|
+
),
|
|
4189
|
+
),
|
|
4190
|
+
(
|
|
4191
|
+
"num_flags",
|
|
4192
|
+
models.PositiveSmallIntegerField(db_index=True, default=0),
|
|
4193
|
+
),
|
|
4194
|
+
(
|
|
4195
|
+
"subsection",
|
|
4196
|
+
models.PositiveSmallIntegerField(blank=True, db_index=True),
|
|
4197
|
+
),
|
|
4198
|
+
("is_deleted", models.BooleanField(blank=True, default=False)),
|
|
4199
|
+
(
|
|
4200
|
+
"inserted",
|
|
4201
|
+
models.DateTimeField(
|
|
4202
|
+
db_index=True, default=django.utils.timezone.now
|
|
4203
|
+
),
|
|
4204
|
+
),
|
|
4205
|
+
(
|
|
4206
|
+
"standard_type",
|
|
4207
|
+
django_enum.fields.EnumCharField(
|
|
4208
|
+
choices=[
|
|
4209
|
+
("I", "INTERNAL"),
|
|
4210
|
+
("H", "EXTERNAL H-MASER"),
|
|
4211
|
+
("C", "EXTERNAL CESIUM"),
|
|
4212
|
+
("R", "EXTERNAL RUBIDIUM"),
|
|
4213
|
+
("Q", "EXTERNAL QUARTZ"),
|
|
4214
|
+
],
|
|
4215
|
+
db_index=True,
|
|
4216
|
+
help_text="Select whether the frequency standard is INTERNAL or EXTERNAL and describe the oscillator type. Format: (INTERNAL or EXTERNAL H-MASER/CESIUM/etc)",
|
|
4217
|
+
max_length=50,
|
|
4218
|
+
null=True,
|
|
4219
|
+
verbose_name="Standard Type",
|
|
4220
|
+
),
|
|
4221
|
+
),
|
|
4222
|
+
(
|
|
4223
|
+
"input_frequency",
|
|
4224
|
+
models.FloatField(
|
|
4225
|
+
blank=True,
|
|
4226
|
+
db_index=True,
|
|
4227
|
+
default=None,
|
|
4228
|
+
help_text="Enter the input frequency in MHz if known.",
|
|
4229
|
+
null=True,
|
|
4230
|
+
verbose_name="Input Frequency (MHz)",
|
|
4231
|
+
),
|
|
4232
|
+
),
|
|
4233
|
+
(
|
|
4234
|
+
"notes",
|
|
4235
|
+
models.TextField(
|
|
4236
|
+
blank=True,
|
|
4237
|
+
default="",
|
|
4238
|
+
help_text="Enter any additional information relevant to frequency standard. Format: (multiple lines)",
|
|
4239
|
+
verbose_name="Notes",
|
|
4240
|
+
),
|
|
4241
|
+
),
|
|
4242
|
+
(
|
|
4243
|
+
"effective_start",
|
|
4244
|
+
models.DateField(
|
|
4245
|
+
db_index=True,
|
|
4246
|
+
help_text="Enter the effective start date for the frequency standard. Format: (CCYY-MM-DD)",
|
|
4247
|
+
null=True,
|
|
4248
|
+
),
|
|
4249
|
+
),
|
|
4250
|
+
(
|
|
4251
|
+
"effective_end",
|
|
4252
|
+
models.DateField(
|
|
4253
|
+
blank=True,
|
|
4254
|
+
db_index=True,
|
|
4255
|
+
default=None,
|
|
4256
|
+
help_text="Enter the effective end date for the frequency standard. Format: (CCYY-MM-DD)",
|
|
4257
|
+
null=True,
|
|
4258
|
+
),
|
|
4259
|
+
),
|
|
4260
|
+
(
|
|
4261
|
+
"site",
|
|
4262
|
+
models.ForeignKey(
|
|
4263
|
+
on_delete=django.db.models.deletion.CASCADE, to="slm.site"
|
|
4264
|
+
),
|
|
4265
|
+
),
|
|
4266
|
+
],
|
|
4267
|
+
options={
|
|
4268
|
+
"ordering": ("-edited",),
|
|
4269
|
+
"abstract": False,
|
|
4270
|
+
"unique_together": {("site", "published", "subsection")},
|
|
4271
|
+
"index_together": {
|
|
4272
|
+
("site", "edited", "published"),
|
|
4273
|
+
("site", "edited", "published", "subsection"),
|
|
4274
|
+
("site", "edited"),
|
|
4275
|
+
("site", "edited", "subsection"),
|
|
4276
|
+
},
|
|
4277
|
+
},
|
|
4278
|
+
),
|
|
4279
|
+
migrations.CreateModel(
|
|
4280
|
+
name="SiteForm",
|
|
4281
|
+
fields=[
|
|
4282
|
+
(
|
|
4283
|
+
"id",
|
|
4284
|
+
models.BigAutoField(
|
|
4285
|
+
auto_created=True,
|
|
4286
|
+
primary_key=True,
|
|
4287
|
+
serialize=False,
|
|
4288
|
+
verbose_name="ID",
|
|
4289
|
+
),
|
|
4290
|
+
),
|
|
4291
|
+
("edited", models.DateTimeField(auto_now_add=True, db_index=True)),
|
|
4292
|
+
("published", models.BooleanField(db_index=True, default=False)),
|
|
4293
|
+
(
|
|
4294
|
+
"_flags",
|
|
4295
|
+
models.JSONField(
|
|
4296
|
+
blank=True,
|
|
4297
|
+
default=dict,
|
|
4298
|
+
encoder=slm.models.sitelog.DefaultToStrEncoder,
|
|
4299
|
+
),
|
|
4300
|
+
),
|
|
4301
|
+
(
|
|
4302
|
+
"num_flags",
|
|
4303
|
+
models.PositiveSmallIntegerField(db_index=True, default=0),
|
|
4304
|
+
),
|
|
4305
|
+
(
|
|
4306
|
+
"prepared_by",
|
|
4307
|
+
models.CharField(
|
|
4308
|
+
blank=True,
|
|
4309
|
+
help_text="Enter the name of who prepared this site log",
|
|
4310
|
+
max_length=50,
|
|
4311
|
+
verbose_name="Prepared by (full name)",
|
|
4312
|
+
),
|
|
4313
|
+
),
|
|
4314
|
+
(
|
|
4315
|
+
"date_prepared",
|
|
4316
|
+
models.DateField(
|
|
4317
|
+
blank=True,
|
|
4318
|
+
db_index=True,
|
|
4319
|
+
help_text="Enter the date the site log was prepared (CCYY-MM-DD).",
|
|
4320
|
+
null=True,
|
|
4321
|
+
verbose_name="Date Prepared",
|
|
4322
|
+
),
|
|
4323
|
+
),
|
|
4324
|
+
(
|
|
4325
|
+
"report_type",
|
|
4326
|
+
models.CharField(
|
|
4327
|
+
blank=True,
|
|
4328
|
+
default=None,
|
|
4329
|
+
help_text="Enter type of report. Example: (UPDATE).",
|
|
4330
|
+
max_length=50,
|
|
4331
|
+
verbose_name="Report Type",
|
|
4332
|
+
),
|
|
4333
|
+
),
|
|
4334
|
+
(
|
|
4335
|
+
"modified_section",
|
|
4336
|
+
models.TextField(
|
|
4337
|
+
blank=True,
|
|
4338
|
+
default="",
|
|
4339
|
+
help_text="Enter the sections which have changed from the previous version of the log. Example: (3.2, 4.2)",
|
|
4340
|
+
verbose_name="Modified/Added Sections",
|
|
4341
|
+
),
|
|
4342
|
+
),
|
|
4343
|
+
(
|
|
4344
|
+
"previous",
|
|
4345
|
+
models.ForeignKey(
|
|
4346
|
+
blank=True,
|
|
4347
|
+
default=None,
|
|
4348
|
+
null=True,
|
|
4349
|
+
on_delete=django.db.models.deletion.SET_NULL,
|
|
4350
|
+
to="slm.archiveindex",
|
|
4351
|
+
),
|
|
4352
|
+
),
|
|
4353
|
+
(
|
|
4354
|
+
"site",
|
|
4355
|
+
models.ForeignKey(
|
|
4356
|
+
on_delete=django.db.models.deletion.CASCADE, to="slm.site"
|
|
4357
|
+
),
|
|
4358
|
+
),
|
|
4359
|
+
],
|
|
4360
|
+
options={
|
|
4361
|
+
"ordering": ("-edited",),
|
|
4362
|
+
"abstract": False,
|
|
4363
|
+
"unique_together": {("site", "published")},
|
|
4364
|
+
"index_together": {
|
|
4365
|
+
("site", "edited", "published"),
|
|
4366
|
+
("edited", "published"),
|
|
4367
|
+
("site", "edited"),
|
|
4368
|
+
},
|
|
4369
|
+
},
|
|
4370
|
+
),
|
|
4371
|
+
migrations.CreateModel(
|
|
4372
|
+
name="SiteCollocation",
|
|
4373
|
+
fields=[
|
|
4374
|
+
(
|
|
4375
|
+
"id",
|
|
4376
|
+
models.BigAutoField(
|
|
4377
|
+
auto_created=True,
|
|
4378
|
+
primary_key=True,
|
|
4379
|
+
serialize=False,
|
|
4380
|
+
verbose_name="ID",
|
|
4381
|
+
),
|
|
4382
|
+
),
|
|
4383
|
+
("edited", models.DateTimeField(auto_now_add=True, db_index=True)),
|
|
4384
|
+
("published", models.BooleanField(db_index=True, default=False)),
|
|
4385
|
+
(
|
|
4386
|
+
"_flags",
|
|
4387
|
+
models.JSONField(
|
|
4388
|
+
blank=True,
|
|
4389
|
+
default=dict,
|
|
4390
|
+
encoder=slm.models.sitelog.DefaultToStrEncoder,
|
|
4391
|
+
),
|
|
4392
|
+
),
|
|
4393
|
+
(
|
|
4394
|
+
"num_flags",
|
|
4395
|
+
models.PositiveSmallIntegerField(db_index=True, default=0),
|
|
4396
|
+
),
|
|
4397
|
+
(
|
|
4398
|
+
"subsection",
|
|
4399
|
+
models.PositiveSmallIntegerField(blank=True, db_index=True),
|
|
4400
|
+
),
|
|
4401
|
+
("is_deleted", models.BooleanField(blank=True, default=False)),
|
|
4402
|
+
(
|
|
4403
|
+
"inserted",
|
|
4404
|
+
models.DateTimeField(
|
|
4405
|
+
db_index=True, default=django.utils.timezone.now
|
|
4406
|
+
),
|
|
4407
|
+
),
|
|
4408
|
+
(
|
|
4409
|
+
"instrument_type",
|
|
4410
|
+
models.CharField(
|
|
4411
|
+
db_index=True,
|
|
4412
|
+
help_text="Select all collocated instrument types that apply",
|
|
4413
|
+
max_length=50,
|
|
4414
|
+
verbose_name="Instrumentation Type",
|
|
4415
|
+
),
|
|
4416
|
+
),
|
|
4417
|
+
(
|
|
4418
|
+
"status",
|
|
4419
|
+
django_enum.fields.EnumCharField(
|
|
4420
|
+
choices=[("P", "PERMANENT"), ("M", "MOBILE")],
|
|
4421
|
+
db_index=True,
|
|
4422
|
+
default=None,
|
|
4423
|
+
help_text="Select appropriate status",
|
|
4424
|
+
max_length=50,
|
|
4425
|
+
null=True,
|
|
4426
|
+
verbose_name="Status",
|
|
4427
|
+
),
|
|
4428
|
+
),
|
|
4429
|
+
(
|
|
4430
|
+
"notes",
|
|
4431
|
+
models.TextField(
|
|
4432
|
+
blank=True,
|
|
4433
|
+
default="",
|
|
4434
|
+
help_text="Enter any additional information relevant to collocation. Format: (multiple lines)",
|
|
4435
|
+
verbose_name="Notes",
|
|
4436
|
+
),
|
|
4437
|
+
),
|
|
4438
|
+
(
|
|
4439
|
+
"effective_start",
|
|
4440
|
+
models.DateField(
|
|
4441
|
+
db_index=True,
|
|
4442
|
+
help_text="Enter the effective start date of the collocated instrument. Format: (CCYY-MM-DD)",
|
|
4443
|
+
max_length=50,
|
|
4444
|
+
null=True,
|
|
4445
|
+
),
|
|
4446
|
+
),
|
|
4447
|
+
(
|
|
4448
|
+
"effective_end",
|
|
4449
|
+
models.DateField(
|
|
4450
|
+
blank=True,
|
|
4451
|
+
db_index=True,
|
|
4452
|
+
help_text="Enter the effective end date of the collocated instrument. Format: (CCYY-MM-DD)",
|
|
4453
|
+
max_length=50,
|
|
4454
|
+
null=True,
|
|
4455
|
+
),
|
|
4456
|
+
),
|
|
4457
|
+
(
|
|
4458
|
+
"site",
|
|
4459
|
+
models.ForeignKey(
|
|
4460
|
+
on_delete=django.db.models.deletion.CASCADE, to="slm.site"
|
|
4461
|
+
),
|
|
4462
|
+
),
|
|
4463
|
+
],
|
|
4464
|
+
options={
|
|
4465
|
+
"ordering": ("-edited",),
|
|
4466
|
+
"abstract": False,
|
|
4467
|
+
"unique_together": {("site", "published", "subsection")},
|
|
4468
|
+
"index_together": {
|
|
4469
|
+
("site", "edited", "published"),
|
|
4470
|
+
("site", "edited", "published", "subsection"),
|
|
4471
|
+
("site", "edited"),
|
|
4472
|
+
("site", "edited", "subsection"),
|
|
4473
|
+
},
|
|
4474
|
+
},
|
|
4475
|
+
),
|
|
4476
|
+
migrations.CreateModel(
|
|
4477
|
+
name="SiteAntenna",
|
|
4478
|
+
fields=[
|
|
4479
|
+
(
|
|
4480
|
+
"id",
|
|
4481
|
+
models.BigAutoField(
|
|
4482
|
+
auto_created=True,
|
|
4483
|
+
primary_key=True,
|
|
4484
|
+
serialize=False,
|
|
4485
|
+
verbose_name="ID",
|
|
4486
|
+
),
|
|
4487
|
+
),
|
|
4488
|
+
("edited", models.DateTimeField(auto_now_add=True, db_index=True)),
|
|
4489
|
+
("published", models.BooleanField(db_index=True, default=False)),
|
|
4490
|
+
(
|
|
4491
|
+
"_flags",
|
|
4492
|
+
models.JSONField(
|
|
4493
|
+
blank=True,
|
|
4494
|
+
default=dict,
|
|
4495
|
+
encoder=slm.models.sitelog.DefaultToStrEncoder,
|
|
4496
|
+
),
|
|
4497
|
+
),
|
|
4498
|
+
(
|
|
4499
|
+
"num_flags",
|
|
4500
|
+
models.PositiveSmallIntegerField(db_index=True, default=0),
|
|
4501
|
+
),
|
|
4502
|
+
(
|
|
4503
|
+
"subsection",
|
|
4504
|
+
models.PositiveSmallIntegerField(blank=True, db_index=True),
|
|
4505
|
+
),
|
|
4506
|
+
("is_deleted", models.BooleanField(blank=True, default=False)),
|
|
4507
|
+
(
|
|
4508
|
+
"inserted",
|
|
4509
|
+
models.DateTimeField(
|
|
4510
|
+
db_index=True, default=django.utils.timezone.now
|
|
4511
|
+
),
|
|
4512
|
+
),
|
|
4513
|
+
(
|
|
4514
|
+
"serial_number",
|
|
4515
|
+
models.CharField(
|
|
4516
|
+
db_index=True,
|
|
4517
|
+
help_text="Only Alpha Numeric Chars and - . Symbols allowed",
|
|
4518
|
+
max_length=128,
|
|
4519
|
+
verbose_name="Serial Number",
|
|
4520
|
+
),
|
|
4521
|
+
),
|
|
4522
|
+
(
|
|
4523
|
+
"reference_point",
|
|
4524
|
+
django_enum.fields.EnumPositiveSmallIntegerField(
|
|
4525
|
+
choices=[
|
|
4526
|
+
(1, "BAM (Bottom of Antenna Mount)"),
|
|
4527
|
+
(2, "BCR (Bottom of Chokering)"),
|
|
4528
|
+
(3, "BDG (Bottom of Dome Ground Plane)"),
|
|
4529
|
+
(4, "BGP (Bottom of Ground Plane)"),
|
|
4530
|
+
(5, "BPA (Bottom of Preamplifier)"),
|
|
4531
|
+
(6, "TCR (Top of Chokering)"),
|
|
4532
|
+
(7, "TDG (Top of Dome Ground Plane)"),
|
|
4533
|
+
(8, "TGP (Top of Ground Plane)"),
|
|
4534
|
+
(9, "TOP (Top of Pole)"),
|
|
4535
|
+
(10, "TPA (Top of Preamplifier)"),
|
|
4536
|
+
],
|
|
4537
|
+
db_index=True,
|
|
4538
|
+
help_text="Locate your antenna in the file https://files.igs.org/pub/station/general/antenna.gra. Indicate the three-letter abbreviation for the point which is indicated equivalent to ARP for your antenna. Contact the Central Bureau if your antenna does not appear. Format: (BPA/BCR/XXX from antenna.gra; see instr.)",
|
|
4539
|
+
null=True,
|
|
4540
|
+
verbose_name="Antenna Reference Point",
|
|
4541
|
+
),
|
|
4542
|
+
),
|
|
4543
|
+
(
|
|
4544
|
+
"marker_enu",
|
|
4545
|
+
django.contrib.gis.db.models.fields.PointField(
|
|
4546
|
+
dim=3,
|
|
4547
|
+
help_text="ENU eccentricity is the offset between the ARP and marker described in section 1 measured to an accuracy of 1mm. Format: (F8.4) Value 0 is OK",
|
|
4548
|
+
srid=0,
|
|
4549
|
+
verbose_name="Marker->ARP ENU Ecc (m)",
|
|
4550
|
+
),
|
|
4551
|
+
),
|
|
4552
|
+
(
|
|
4553
|
+
"alignment",
|
|
4554
|
+
models.FloatField(
|
|
4555
|
+
db_index=True,
|
|
4556
|
+
help_text='Enter the clockwise offset from true north in degrees. The positive direction is clockwise, so that due east would be equivalent to a response of "+90". Format: (deg; + is clockwise/east)',
|
|
4557
|
+
null=True,
|
|
4558
|
+
validators=[
|
|
4559
|
+
django.core.validators.MinValueValidator(-180),
|
|
4560
|
+
django.core.validators.MaxValueValidator(180),
|
|
4561
|
+
],
|
|
4562
|
+
verbose_name="Alignment from True N (°)",
|
|
4563
|
+
),
|
|
4564
|
+
),
|
|
4565
|
+
(
|
|
4566
|
+
"radome_serial_number",
|
|
4567
|
+
models.CharField(
|
|
4568
|
+
blank=True,
|
|
4569
|
+
db_index=True,
|
|
4570
|
+
default="",
|
|
4571
|
+
help_text="Enter the serial number of the radome if available",
|
|
4572
|
+
max_length=50,
|
|
4573
|
+
verbose_name="Radome Serial Number",
|
|
4574
|
+
),
|
|
4575
|
+
),
|
|
4576
|
+
(
|
|
4577
|
+
"cable_type",
|
|
4578
|
+
models.CharField(
|
|
4579
|
+
blank=True,
|
|
4580
|
+
db_index=True,
|
|
4581
|
+
default="",
|
|
4582
|
+
help_text="Enter the antenna cable specification if know. Format: (vendor & type number)",
|
|
4583
|
+
max_length=50,
|
|
4584
|
+
verbose_name="Antenna Cable Type",
|
|
4585
|
+
),
|
|
4586
|
+
),
|
|
4587
|
+
(
|
|
4588
|
+
"cable_length",
|
|
4589
|
+
models.FloatField(
|
|
4590
|
+
blank=True,
|
|
4591
|
+
db_index=True,
|
|
4592
|
+
default=None,
|
|
4593
|
+
help_text="Enter the antenna cable length in meters. Format: (m)",
|
|
4594
|
+
null=True,
|
|
4595
|
+
verbose_name="Antenna Cable Length",
|
|
4596
|
+
),
|
|
4597
|
+
),
|
|
4598
|
+
(
|
|
4599
|
+
"installed",
|
|
4600
|
+
models.DateTimeField(
|
|
4601
|
+
db_index=True,
|
|
4602
|
+
help_text="Enter the date the receiver was installed. Format: (CCYY-MM-DDThh:mmZ)",
|
|
4603
|
+
verbose_name="Date Installed (UTC)",
|
|
4604
|
+
),
|
|
4605
|
+
),
|
|
4606
|
+
(
|
|
4607
|
+
"removed",
|
|
4608
|
+
models.DateTimeField(
|
|
4609
|
+
blank=True,
|
|
4610
|
+
db_index=True,
|
|
4611
|
+
default=None,
|
|
4612
|
+
help_text="Enter the date the receiver was removed. It is important that the date removed is entered before the addition of a new receiver. Format: (CCYY-MM-DDThh:mmZ)",
|
|
4613
|
+
null=True,
|
|
4614
|
+
verbose_name="Date Removed (UTC)",
|
|
4615
|
+
),
|
|
4616
|
+
),
|
|
4617
|
+
(
|
|
4618
|
+
"additional_information",
|
|
4619
|
+
models.TextField(
|
|
4620
|
+
blank=True,
|
|
4621
|
+
default="",
|
|
4622
|
+
help_text="Enter additional relevant information about the antenna, cable and radome. Indicate if a signal splitter has been used. Format: (multiple lines)",
|
|
4623
|
+
verbose_name="Additional Information",
|
|
4624
|
+
),
|
|
4625
|
+
),
|
|
4626
|
+
(
|
|
4627
|
+
"custom_graphic",
|
|
4628
|
+
models.TextField(
|
|
4629
|
+
blank=True,
|
|
4630
|
+
default="",
|
|
4631
|
+
help_text="Custom antenna graphic - if different than the default.",
|
|
4632
|
+
),
|
|
4633
|
+
),
|
|
4634
|
+
(
|
|
4635
|
+
"antenna_type",
|
|
4636
|
+
models.ForeignKey(
|
|
4637
|
+
help_text='Please find your antenna radome type in https://files.igs.org/pub/station/general/rcvr_ant.tab and use the official name, taking care to get capital letters, hyphens, etc. exactly correct. The radome code from rcvr_ant.tab must be indicated in columns 17-20 of the Antenna Type, use "NONE" if no radome is installed. The antenna+radome pair must have an entry in https://files.igs.org/pub/station/general/igs05.atx with zenith- and azimuth-dependent calibration values down to the horizon. If not, notify the CB. Format: (A20, from rcvr_ant.tab; see instructions)',
|
|
4638
|
+
on_delete=django.db.models.deletion.PROTECT,
|
|
4639
|
+
related_name="site_antennas",
|
|
4640
|
+
to="slm.antenna",
|
|
4641
|
+
verbose_name="Antenna Type",
|
|
4642
|
+
),
|
|
4643
|
+
),
|
|
4644
|
+
(
|
|
4645
|
+
"radome_type",
|
|
4646
|
+
models.ForeignKey(
|
|
4647
|
+
help_text='Please find your antenna radome type in https://files.igs.org/pub/station/general/rcvr_ant.tab and use the official name, taking care to get capital letters, hyphens, etc. exactly correct. The radome code from rcvr_ant.tab must be indicated in columns 17-20 of the Antenna Type, use "NONE" if no radome is installed. The antenna+radome pair must have an entry in https://files.igs.org/pub/station/general/igs05.atx with zenith- and azimuth-dependent calibration values down to the horizon. If not, notify the CB. Format: (A20, from rcvr_ant.tab; see instructions)',
|
|
4648
|
+
on_delete=django.db.models.deletion.PROTECT,
|
|
4649
|
+
related_name="site_radomes",
|
|
4650
|
+
to="slm.radome",
|
|
4651
|
+
verbose_name="Antenna Radome Type",
|
|
4652
|
+
),
|
|
4653
|
+
),
|
|
4654
|
+
(
|
|
4655
|
+
"site",
|
|
4656
|
+
models.ForeignKey(
|
|
4657
|
+
on_delete=django.db.models.deletion.CASCADE, to="slm.site"
|
|
4658
|
+
),
|
|
4659
|
+
),
|
|
4660
|
+
],
|
|
4661
|
+
options={
|
|
4662
|
+
"ordering": ("-edited",),
|
|
4663
|
+
"abstract": False,
|
|
4664
|
+
"unique_together": {("site", "published", "subsection")},
|
|
4665
|
+
"index_together": {
|
|
4666
|
+
("site", "edited", "published"),
|
|
4667
|
+
("site", "edited", "published", "subsection"),
|
|
4668
|
+
("site", "edited"),
|
|
4669
|
+
("site", "edited", "subsection"),
|
|
4670
|
+
},
|
|
4671
|
+
},
|
|
4672
|
+
),
|
|
4673
|
+
migrations.CreateModel(
|
|
4674
|
+
name="SiteAlert",
|
|
4675
|
+
fields=[
|
|
4676
|
+
(
|
|
4677
|
+
"alert_ptr",
|
|
4678
|
+
models.OneToOneField(
|
|
4679
|
+
auto_created=True,
|
|
4680
|
+
on_delete=django.db.models.deletion.CASCADE,
|
|
4681
|
+
parent_link=True,
|
|
4682
|
+
primary_key=True,
|
|
4683
|
+
serialize=False,
|
|
4684
|
+
to="slm.alert",
|
|
4685
|
+
),
|
|
4686
|
+
),
|
|
4687
|
+
(
|
|
4688
|
+
"site",
|
|
4689
|
+
models.ForeignKey(
|
|
4690
|
+
blank=True,
|
|
4691
|
+
default=None,
|
|
4692
|
+
help_text="Only users with access to this site will see this alert.",
|
|
4693
|
+
null=True,
|
|
4694
|
+
on_delete=django.db.models.deletion.CASCADE,
|
|
4695
|
+
related_name="alerts",
|
|
4696
|
+
to="slm.site",
|
|
4697
|
+
),
|
|
4698
|
+
),
|
|
4699
|
+
],
|
|
4700
|
+
options={
|
|
4701
|
+
"verbose_name": "Site Alert",
|
|
4702
|
+
"verbose_name_plural": " Alerts: Site",
|
|
4703
|
+
},
|
|
4704
|
+
bases=("slm.alert",),
|
|
4705
|
+
),
|
|
4706
|
+
migrations.CreateModel(
|
|
4707
|
+
name="ReviewRequested",
|
|
4708
|
+
fields=[
|
|
4709
|
+
(
|
|
4710
|
+
"alert_ptr",
|
|
4711
|
+
models.OneToOneField(
|
|
4712
|
+
auto_created=True,
|
|
4713
|
+
on_delete=django.db.models.deletion.CASCADE,
|
|
4714
|
+
parent_link=True,
|
|
4715
|
+
primary_key=True,
|
|
4716
|
+
serialize=False,
|
|
4717
|
+
to="slm.alert",
|
|
4718
|
+
),
|
|
4719
|
+
),
|
|
4720
|
+
(
|
|
4721
|
+
"site",
|
|
4722
|
+
models.OneToOneField(
|
|
4723
|
+
blank=True,
|
|
4724
|
+
default=None,
|
|
4725
|
+
help_text="The site this alert applies to.",
|
|
4726
|
+
on_delete=django.db.models.deletion.CASCADE,
|
|
4727
|
+
related_name="review_requested",
|
|
4728
|
+
to="slm.site",
|
|
4729
|
+
),
|
|
4730
|
+
),
|
|
4731
|
+
],
|
|
4732
|
+
options={
|
|
4733
|
+
"verbose_name": "Review Requested",
|
|
4734
|
+
"verbose_name_plural": " Alerts: Review Requested",
|
|
4735
|
+
},
|
|
4736
|
+
bases=(slm.models.alerts.AutomatedAlertMixin, "slm.alert"),
|
|
4737
|
+
),
|
|
4738
|
+
migrations.AddIndex(
|
|
4739
|
+
model_name="logentry",
|
|
4740
|
+
index=models.Index(
|
|
4741
|
+
fields=["site_log_type", "site_log_id"],
|
|
4742
|
+
name="slm_logentr_site_lo_7a2af7_idx",
|
|
4743
|
+
),
|
|
4744
|
+
),
|
|
4745
|
+
migrations.AddField(
|
|
4746
|
+
model_name="importalert",
|
|
4747
|
+
name="site",
|
|
4748
|
+
field=models.OneToOneField(
|
|
4749
|
+
help_text="Only users with access to this site will see this alert.",
|
|
4750
|
+
on_delete=django.db.models.deletion.CASCADE,
|
|
4751
|
+
related_name="import_alert",
|
|
4752
|
+
to="slm.site",
|
|
4753
|
+
),
|
|
4754
|
+
),
|
|
4755
|
+
migrations.AddField(
|
|
4756
|
+
model_name="geodesymlinvalid",
|
|
4757
|
+
name="site",
|
|
4758
|
+
field=models.OneToOneField(
|
|
4759
|
+
blank=True,
|
|
4760
|
+
default=None,
|
|
4761
|
+
help_text="The site this alert applies to.",
|
|
4762
|
+
on_delete=django.db.models.deletion.CASCADE,
|
|
4763
|
+
related_name="geodesymlinvalid",
|
|
4764
|
+
to="slm.site",
|
|
4765
|
+
),
|
|
4766
|
+
),
|
|
4767
|
+
migrations.AlterUniqueTogether(
|
|
4768
|
+
name="dataavailability",
|
|
4769
|
+
unique_together={("site", "rinex_version", "rate", "last")},
|
|
4770
|
+
),
|
|
4771
|
+
migrations.AlterIndexTogether(
|
|
4772
|
+
name="dataavailability",
|
|
4773
|
+
index_together={
|
|
4774
|
+
("site", "rinex_version", "rate", "last"),
|
|
4775
|
+
("site", "rinex_version"),
|
|
4776
|
+
("site", "rinex_version", "last"),
|
|
4777
|
+
("site", "last"),
|
|
4778
|
+
("site", "rinex_version", "rate"),
|
|
4779
|
+
},
|
|
4780
|
+
),
|
|
4781
|
+
migrations.AlterUniqueTogether(
|
|
4782
|
+
name="archiveindex",
|
|
4783
|
+
unique_together={("site", "end"), ("site", "begin")},
|
|
4784
|
+
),
|
|
4785
|
+
migrations.AlterIndexTogether(
|
|
4786
|
+
name="archiveindex",
|
|
4787
|
+
index_together={("begin", "end"), ("site", "begin", "end")},
|
|
4788
|
+
),
|
|
4789
|
+
migrations.AlterUniqueTogether(
|
|
4790
|
+
name="archivedsitelog",
|
|
4791
|
+
unique_together={("index", "log_format")},
|
|
4792
|
+
),
|
|
4793
|
+
migrations.AlterUniqueTogether(
|
|
4794
|
+
name="antcal",
|
|
4795
|
+
unique_together={("antenna", "radome")},
|
|
4796
|
+
),
|
|
4797
|
+
migrations.AlterIndexTogether(
|
|
4798
|
+
name="antcal",
|
|
4799
|
+
index_together={("antenna", "radome")},
|
|
4800
|
+
),
|
|
4801
|
+
migrations.AddField(
|
|
4802
|
+
model_name="agencyalert",
|
|
4803
|
+
name="agency",
|
|
4804
|
+
field=models.ForeignKey(
|
|
4805
|
+
blank=True,
|
|
4806
|
+
default=None,
|
|
4807
|
+
help_text="Only members of this agency will see this alert.",
|
|
4808
|
+
null=True,
|
|
4809
|
+
on_delete=django.db.models.deletion.CASCADE,
|
|
4810
|
+
related_name="alerts",
|
|
4811
|
+
to="slm.agency",
|
|
4812
|
+
),
|
|
4813
|
+
),
|
|
4814
|
+
migrations.AlterUniqueTogether(
|
|
4815
|
+
name="updatesrejected",
|
|
4816
|
+
unique_together={("site",)},
|
|
4817
|
+
),
|
|
4818
|
+
migrations.AlterUniqueTogether(
|
|
4819
|
+
name="reviewrequested",
|
|
4820
|
+
unique_together={("site",)},
|
|
4821
|
+
),
|
|
4822
|
+
migrations.AlterUniqueTogether(
|
|
4823
|
+
name="geodesymlinvalid",
|
|
4824
|
+
unique_together={("site",)},
|
|
4825
|
+
),
|
|
4826
|
+
]
|