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,212 @@
|
|
|
1
|
+
if (typeof slm === 'undefined' || slm == null) { var slm = {}; }
|
|
2
|
+
|
|
3
|
+
slm.time24Init = function(inputs = null) {
|
|
4
|
+
|
|
5
|
+
inputs = inputs || $('fieldset.time-24hr');
|
|
6
|
+
|
|
7
|
+
inputs.click(function() {
|
|
8
|
+
//const timeSelect = $(this).siblings('div.time-select');
|
|
9
|
+
const timeSelect = $(this).find('div.time-select');
|
|
10
|
+
if (timeSelect.css('display') !== 'none') {
|
|
11
|
+
toggleTimeSelectDropDown(timeSelect);
|
|
12
|
+
}
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
inputs.keydown(function( event ) {
|
|
16
|
+
//let timeSelect = $(this).siblings('div.time-select');
|
|
17
|
+
if ($(this).attr('disabled') !== undefined) {
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
let timeSelect = $(this).find('div.time-select');
|
|
21
|
+
let selected = $(this).find('span.time-input-selected');
|
|
22
|
+
let currentTime = timeSelect.find('span.time-selected');
|
|
23
|
+
let isMinutes = selected.hasClass('minutes');
|
|
24
|
+
if (event.which === 39 || event.which === 37) {
|
|
25
|
+
// left/right
|
|
26
|
+
if (!currentTime.length) {
|
|
27
|
+
if (selected.length > 0) {
|
|
28
|
+
selectSpanText(event.which === 39 ? selected.next() : selected.prev());
|
|
29
|
+
} else {
|
|
30
|
+
selectSpanText(timeSelect.find('span.hours'));
|
|
31
|
+
}
|
|
32
|
+
} else {
|
|
33
|
+
if (currentTime.parent().hasClass('minute-scroll')) {
|
|
34
|
+
if (event.which === 37) {
|
|
35
|
+
selectTime(timeSelect.find('div.hour-scroll > span.time-set'));
|
|
36
|
+
selectSpanText($(this).find('span.hours'));
|
|
37
|
+
}
|
|
38
|
+
} else {
|
|
39
|
+
if (event.which === 39) {
|
|
40
|
+
selectTime(timeSelect.find('div.minute-scroll > span.time-set'));
|
|
41
|
+
selectSpanText($(this).find('span.minutes'));
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
event.preventDefault();
|
|
46
|
+
} else if (event.which === 38 || event.which === 40) {
|
|
47
|
+
// up/down
|
|
48
|
+
if (!currentTime.length) {
|
|
49
|
+
currentTime = timeSelect.find(
|
|
50
|
+
`div.${ isMinutes ? "minute" : "hour"}-scroll > span.time-set`
|
|
51
|
+
);
|
|
52
|
+
} else {
|
|
53
|
+
currentTime = event.which === 40 ? currentTime.next() : currentTime.prev();
|
|
54
|
+
}
|
|
55
|
+
selectTime(currentTime);
|
|
56
|
+
selectSpanText(selected);
|
|
57
|
+
event.preventDefault();
|
|
58
|
+
} else if (event.which === 13) {
|
|
59
|
+
// enter
|
|
60
|
+
$(this).trigger("blur");
|
|
61
|
+
} else if (event.which >= 48 && event.which <= 57) {
|
|
62
|
+
// 0-9
|
|
63
|
+
if (timeSelect.css('display') === 'none') {
|
|
64
|
+
let num = event.which - 48;
|
|
65
|
+
let numStr = num.toString();
|
|
66
|
+
let keyState = selected.data('keyState');
|
|
67
|
+
let max10s = isMinutes ? 5 : 2;
|
|
68
|
+
let max1s = isMinutes ? 9 : 3;
|
|
69
|
+
let skip;
|
|
70
|
+
let skipWrite = false;
|
|
71
|
+
if (!keyState) {
|
|
72
|
+
keyState = `0${numStr}`;
|
|
73
|
+
skip = num > max10s;
|
|
74
|
+
} else if (keyState.length >= 2) {
|
|
75
|
+
skipWrite = num > max1s && parseInt(keyState[1]) === max10s;
|
|
76
|
+
keyState = `${keyState[1]}${numStr}`;
|
|
77
|
+
skip = true;
|
|
78
|
+
}
|
|
79
|
+
if (!skipWrite) {
|
|
80
|
+
selected.data('keyState', keyState);
|
|
81
|
+
selected.html(keyState);
|
|
82
|
+
selectTime(timeSelect.find(
|
|
83
|
+
`div.${isMinutes ? "minute" : "hour"}-scroll > span:contains('${keyState}')`
|
|
84
|
+
))
|
|
85
|
+
}
|
|
86
|
+
if (skip) {
|
|
87
|
+
if (isMinutes) {
|
|
88
|
+
$(this).trigger('blur');
|
|
89
|
+
} else {
|
|
90
|
+
selectSpanText($(this).find('span.minutes'));
|
|
91
|
+
}
|
|
92
|
+
} else {
|
|
93
|
+
selectSpanText(selected);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
});
|
|
98
|
+
|
|
99
|
+
const toggleTimeSelectDropDown = function(timeSelect) {
|
|
100
|
+
if (timeSelect.css('display') === 'none') {
|
|
101
|
+
timeSelect.css('display', 'flex');
|
|
102
|
+
initScroll(timeSelect);
|
|
103
|
+
} else {
|
|
104
|
+
timeSelect.css('display', 'none');
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
inputs.find('svg.clock-icon').click(function() {
|
|
108
|
+
const timeInput = $(this).closest('fieldset.time-24hr');
|
|
109
|
+
toggleTimeSelectDropDown(timeInput.find('.time-select'));
|
|
110
|
+
//toggleTimeSelectDropDown(timeInput.siblings('.time-select'));
|
|
111
|
+
timeInput.focus();
|
|
112
|
+
return false;
|
|
113
|
+
});
|
|
114
|
+
|
|
115
|
+
//inputs.siblings('div.time-select').find(
|
|
116
|
+
inputs.find('div.time-select').find(
|
|
117
|
+
'div.hour-scroll > span, div.minute-scroll > span'
|
|
118
|
+
).click(function() {selectTime($(this))});
|
|
119
|
+
|
|
120
|
+
inputs.blur(function(event) {
|
|
121
|
+
if ($(event.relatedTarget).parents('div.time-select').length > 0) {
|
|
122
|
+
$(this).focus();
|
|
123
|
+
return false;
|
|
124
|
+
}
|
|
125
|
+
//let selectDiv = $(this).siblings('div.time-select');
|
|
126
|
+
let selectDiv = $(this).find('div.time-select');
|
|
127
|
+
selectDiv.css('display', 'none');
|
|
128
|
+
selectDiv.find('span.time-selected').removeClass('time-selected');
|
|
129
|
+
$(this).find('span.hours').data('keyState', null);
|
|
130
|
+
$(this).find('span.minutes').data('keyState', null);
|
|
131
|
+
$(this).find('span.time-input-selected').removeClass('time-input-selected');
|
|
132
|
+
window.getSelection().removeAllRanges();
|
|
133
|
+
});
|
|
134
|
+
|
|
135
|
+
inputs.focusin(function() {
|
|
136
|
+
selectSpanText($(this).find('span.hours'));
|
|
137
|
+
});
|
|
138
|
+
|
|
139
|
+
const selectSpanText = function(span) {
|
|
140
|
+
if (!span.length) {
|
|
141
|
+
return;
|
|
142
|
+
}
|
|
143
|
+
span.addClass('time-input-selected');
|
|
144
|
+
span.siblings('span').removeClass('time-input-selected');
|
|
145
|
+
let range, selection;
|
|
146
|
+
if (window.getSelection && document.createRange) {
|
|
147
|
+
selection = window.getSelection();
|
|
148
|
+
range = document.createRange();
|
|
149
|
+
range.selectNodeContents(span.get(0));
|
|
150
|
+
selection.removeAllRanges();
|
|
151
|
+
selection.addRange(range);
|
|
152
|
+
} else if (document.selection && document.body.createTextRange) {
|
|
153
|
+
range = document.body.createTextRange();
|
|
154
|
+
range.moveToElementText(span.get(0));
|
|
155
|
+
range.select();
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
const initScroll = function(timeSelect) {
|
|
160
|
+
const hourScroll = timeSelect.find('div.hour-scroll');
|
|
161
|
+
setScroll(hourScroll, hourScroll.find('span.time-set'), true);
|
|
162
|
+
const minuteScroll = timeSelect.find('div.minute-scroll');
|
|
163
|
+
setScroll(minuteScroll, minuteScroll.find('span.time-set'), true);
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
const setScroll = function(scroll, span, top=false) {
|
|
167
|
+
const selectTop = scroll.get(0).getBoundingClientRect().y;
|
|
168
|
+
const selectBottom = selectTop + scroll.height();
|
|
169
|
+
const spanTop = span.get(0).getBoundingClientRect().y;
|
|
170
|
+
if (spanTop > (selectBottom - 5)) {
|
|
171
|
+
scroll.get(0).scrollTop += (spanTop - selectBottom) + (top ? scroll.height() : span.height() + 5);
|
|
172
|
+
} else if (spanTop < selectTop) {
|
|
173
|
+
scroll.get(0).scrollTop -= selectTop - spanTop;
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
const selectTime = function(timeSpan) {
|
|
178
|
+
if (!timeSpan.length) { return; }
|
|
179
|
+
const timeSelect = timeSpan.closest('div.time-select');
|
|
180
|
+
//const timeInput = timeSelect.siblings('div.time-24hr');
|
|
181
|
+
const timeInput = timeSelect.closest('fieldset.time-24hr');
|
|
182
|
+
const column = timeSpan.closest('div.time-scroll');
|
|
183
|
+
timeSpan.siblings('span.time-set').removeClass('time-set');
|
|
184
|
+
timeSpan.addClass('time-set');
|
|
185
|
+
timeSelect.find('span.time-selected').removeClass('time-selected');
|
|
186
|
+
timeSpan.addClass('time-selected');
|
|
187
|
+
setScroll(column, timeSpan);
|
|
188
|
+
setTime(timeInput, timeSelect);
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
const setTime = function(timeInput, timeSelect) {
|
|
192
|
+
let hours = timeSelect.find('div.hour-scroll > span.time-set').text();
|
|
193
|
+
let minutes = timeSelect.find('div.minute-scroll > span.time-set').text();
|
|
194
|
+
timeInput.find('span.hours').html(hours);
|
|
195
|
+
timeInput.find('span.minutes').html(minutes);
|
|
196
|
+
if (hours !== null && minutes !== null) {
|
|
197
|
+
timeInput.find('input[type="time"]').val(
|
|
198
|
+
`${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}:00`
|
|
199
|
+
);
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
inputs.find('input[type="time"]').each(function() {
|
|
204
|
+
let value = $(this).val().split(':');
|
|
205
|
+
if (value[0]) {
|
|
206
|
+
//const timeSelect = $(this).closest('fieldset.time-24hr').siblings('div.time-select');
|
|
207
|
+
const timeSelect = $(this).closest('fieldset.time-24hr').find('div.time-select');
|
|
208
|
+
selectTime(timeSelect.find(`div.hour-scroll > span:contains('${value[0]}')`));
|
|
209
|
+
selectTime(timeSelect.find(`div.minute-scroll > span:contains('${value[1]}')`));
|
|
210
|
+
}
|
|
211
|
+
});
|
|
212
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
div.slm-status input + label:before {
|
|
2
|
+
font-family: 'Bootstrap-icons';
|
|
3
|
+
content: '\F582';
|
|
4
|
+
border: 1px solid #000;
|
|
5
|
+
border-radius: 4px;
|
|
6
|
+
}
|
|
7
|
+
{% for status in SiteLogStatus %}
|
|
8
|
+
div.slm-status input[value='{{ status.value }}'] + label:before {
|
|
9
|
+
color: {{ status.color }};
|
|
10
|
+
}
|
|
11
|
+
.slm-bg-{{ status.name|lower }} {
|
|
12
|
+
background-color: {{ status.color }};
|
|
13
|
+
}
|
|
14
|
+
.slm-text-{{ status.name|lower }} {
|
|
15
|
+
color: {{ status.color }};
|
|
16
|
+
}
|
|
17
|
+
{% endfor %}
|
|
18
|
+
|
|
19
|
+
div.slm-alert-level input + label:before {
|
|
20
|
+
font-family: 'Bootstrap-icons';
|
|
21
|
+
content: '\F189';
|
|
22
|
+
}
|
|
23
|
+
{% for level in AlertLevel %}
|
|
24
|
+
div.slm-alert-level input[value='{{ level.value }}'] + label:before {
|
|
25
|
+
color: {{ level.color }};
|
|
26
|
+
}{% endfor %}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
if (typeof slm === 'undefined' || slm == null) { var slm = {}; }
|
|
2
|
+
|
|
3
|
+
{% enums_to_js enums=enums raise_on_not_found=False symmetric_properties=True %}
|
|
4
|
+
|
|
5
|
+
SiteLogStatus.prototype.set = function (child) {
|
|
6
|
+
if (
|
|
7
|
+
this === SiteLogStatus.PUBLISHED ||
|
|
8
|
+
this === SiteLogStatus.UPDATED ||
|
|
9
|
+
this === SiteLogStatus.EMPTY
|
|
10
|
+
) {
|
|
11
|
+
return child;
|
|
12
|
+
}
|
|
13
|
+
return this.merge(child);
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
SiteLogStatus.prototype.merge = function (sibling) {
|
|
17
|
+
if (sibling !== null && sibling.value < this.value) {
|
|
18
|
+
return sibling;
|
|
19
|
+
}
|
|
20
|
+
return this;
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
slm.LogEntryType = LogEntryType;
|
|
24
|
+
slm.SiteLogStatus = SiteLogStatus;
|
|
25
|
+
slm.SiteFileUploadStatus = SiteFileUploadStatus;
|
|
26
|
+
slm.AlertLevel = AlertLevel;
|
|
27
|
+
slm.SiteLogFormat = SiteLogFormat;
|
|
28
|
+
slm.SLMFileType = SLMFileType;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
if (typeof slm === 'undefined' || slm == null) { var slm = {}; }
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
slm.iconMap = {{% for subtype, icon in ICON_MAP.items %}
|
|
5
|
+
'{{ subtype }}': '{{ icon }}'{% if not forloop.last %},{% endif %}{% endfor %}
|
|
6
|
+
};
|
|
7
|
+
|
|
8
|
+
slm.fileIcon = function(mimetype) {
|
|
9
|
+
if (mimetype) {
|
|
10
|
+
let subtype = mimetype.substring(mimetype.indexOf('/') + 1);
|
|
11
|
+
if (slm.iconMap.hasOwnProperty(subtype)) {
|
|
12
|
+
return slm.iconMap[subtype];
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
return "{{ DEFAULT_ICON }}";
|
|
16
|
+
};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{% extends "slm/base.html" %}
|
|
2
|
+
{% load widget_tweaks i18n %}
|
|
3
|
+
|
|
4
|
+
{% block head %}
|
|
5
|
+
{{ block.super }}
|
|
6
|
+
<style>
|
|
7
|
+
body {
|
|
8
|
+
background: url("/static/slm/img/login-bg.jpg") no-repeat center center fixed;
|
|
9
|
+
background-size: cover;
|
|
10
|
+
-webkit-background-size: cover;
|
|
11
|
+
-moz-background-size: cover;
|
|
12
|
+
-o-background-size: cover;
|
|
13
|
+
}
|
|
14
|
+
</style>
|
|
15
|
+
{% endblock %}
|
|
16
|
+
|
|
17
|
+
{% block station_list %}{% endblock %}
|
|
18
|
+
|
|
19
|
+
{% block page_content %}
|
|
20
|
+
{% endblock %}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
{% load i18n %}
|
|
2
|
+
{% load static %}
|
|
3
|
+
|
|
4
|
+
{% static 'slm/img/email-branding.png' as branding %}
|
|
5
|
+
|
|
6
|
+
{% autoescape off %}
|
|
7
|
+
<div id="container" style="background-color: #f6f6f6; padding: 10%; font-family: Arial, sans-serif, 'Open Sans'; overflow-wrap: break-word;">
|
|
8
|
+
<div id="logo" style="background-color: #212529; padding: 5% 10%; text-decoration: none;">
|
|
9
|
+
<a href="{% url "slm:home" %}"><img id="logo" style="margin-right: 16px; display: inline-block; vertical-align: middle; max-width: 100%; height: auto;" src="{{ branding|absolute_url:request }}" alt="International GNSS Service"/>
|
|
10
|
+
<span style="color: white; font-weight: bold; font-size: 20px;">Site Log Manager</span>
|
|
11
|
+
</a>
|
|
12
|
+
</div>
|
|
13
|
+
|
|
14
|
+
<div id="wrapper" style="background-color: #fff; border: 1px solid #d6d6d6; padding: 5% 10% 5% 10%;">
|
|
15
|
+
<div id="title" style="margin-bottom: 32px; font-weight: bold;">
|
|
16
|
+
<h1>{% block title %}{% endblock %}</h1>
|
|
17
|
+
</div>
|
|
18
|
+
|
|
19
|
+
{% block greeting %}
|
|
20
|
+
<div id="greeting" style="font-weight: bold;">
|
|
21
|
+
{% blocktrans with site_name=current_site.name %}Hello from {{ site_name }}!{% endblocktrans %}
|
|
22
|
+
<br>
|
|
23
|
+
<br>
|
|
24
|
+
</div>
|
|
25
|
+
{% endblock greeting %}
|
|
26
|
+
|
|
27
|
+
<div id="content" style="margin-bottom: 32px;">
|
|
28
|
+
{% block content %}{% endblock %}
|
|
29
|
+
</div>
|
|
30
|
+
|
|
31
|
+
<hr>
|
|
32
|
+
|
|
33
|
+
<div id="footer" style="margin-top: 5%; text-align: center;">
|
|
34
|
+
{% block email_preferences %}
|
|
35
|
+
{% endblock %}
|
|
36
|
+
{% trans 'Thank you for using' %} {{ current_site.name }}!
|
|
37
|
+
<br>
|
|
38
|
+
{{ current_site.domain }}
|
|
39
|
+
</div>
|
|
40
|
+
</div>
|
|
41
|
+
</div>
|
|
42
|
+
|
|
43
|
+
{% endautoescape %}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{% load i18n %}{% autoescape off %}{% blocktrans with site_name=current_site.name %}Hello from {{ site_name }}!{% endblocktrans %}
|
|
2
|
+
|
|
3
|
+
{% block content %}{% endblock %}
|
|
4
|
+
|
|
5
|
+
{% blocktrans with site_name=current_site.name site_domain=current_site.domain %}Thank you for using {{ site_name }}!
|
|
6
|
+
{{ site_domain }}{% endblocktrans %}
|
|
7
|
+
{% endautoescape %}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{% extends "account/email/base.html" %}
|
|
2
|
+
{% load account %}
|
|
3
|
+
{% load i18n %}
|
|
4
|
+
|
|
5
|
+
{% block title %}
|
|
6
|
+
Confirm Account Registration
|
|
7
|
+
{% endblock %}
|
|
8
|
+
|
|
9
|
+
{% block content %}{% autoescape off %}{% user_display user as user_display %}{% blocktrans with site_name=current_site.name site_domain=current_site.domain %}
|
|
10
|
+
|
|
11
|
+
You're receiving this e-mail because user <strong>{{ user_display }}</strong> has given your e-mail address to register an account on {{ site_domain }}.
|
|
12
|
+
<br>
|
|
13
|
+
<br>
|
|
14
|
+
To confirm this is correct, go to <a href="{{ activate_url }}">{{ activate_url }}</a>
|
|
15
|
+
|
|
16
|
+
{% endblocktrans %}{% endautoescape %}{% endblock %}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{% extends "account/email/base_message.txt" %}
|
|
2
|
+
{% load account %}
|
|
3
|
+
{% load i18n %}
|
|
4
|
+
|
|
5
|
+
{% block content %}{% autoescape off %}{% user_display user as user_display %}{% blocktrans with site_name=current_site.name site_domain=current_site.domain %}You're receiving this e-mail because user {{ user_display }} has given your e-mail address to register an account on {{ site_domain }}.
|
|
6
|
+
|
|
7
|
+
To confirm this is correct, go to {{ activate_url }}{% endblocktrans %}{% endautoescape %}{% endblock %}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{% include "account/email/email_confirmation_message.txt" %}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{% include "account/email/email_confirmation_message.txt" %}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{% include "account/email/email_confirmation_subject.txt" %}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
{% extends "account/email/base.html" %}
|
|
2
|
+
{% load i18n %}
|
|
3
|
+
|
|
4
|
+
{% block title %}
|
|
5
|
+
Password Reset
|
|
6
|
+
{% endblock %}
|
|
7
|
+
|
|
8
|
+
{% block content %}{% autoescape off %}
|
|
9
|
+
|
|
10
|
+
{% blocktrans %}
|
|
11
|
+
You're receiving this e-mail because you or someone else has requested a password for your user account.
|
|
12
|
+
<br>
|
|
13
|
+
<br>
|
|
14
|
+
It can be safely ignored if you did not request a password reset.
|
|
15
|
+
<br>
|
|
16
|
+
<br>
|
|
17
|
+
Click the link below to reset your password.
|
|
18
|
+
{% endblocktrans %}
|
|
19
|
+
<br>
|
|
20
|
+
<br>
|
|
21
|
+
<a href="{{ password_reset_url }}">{{ password_reset_url }}</a>
|
|
22
|
+
<br>
|
|
23
|
+
<br>
|
|
24
|
+
{% if username %}{% blocktrans %}
|
|
25
|
+
In case you forgot, your username is {{ username }}.
|
|
26
|
+
{% endblocktrans %}{% endif %}
|
|
27
|
+
|
|
28
|
+
{% endautoescape %}{% endblock %}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{% extends "account/email/base_message.txt" %}
|
|
2
|
+
{% load i18n %}
|
|
3
|
+
|
|
4
|
+
{% block content %}{% autoescape off %}{% blocktrans %}You're receiving this e-mail because you or someone else has requested a password for your user account.
|
|
5
|
+
It can be safely ignored if you did not request a password reset. Click the link below to reset your password.{% endblocktrans %}
|
|
6
|
+
|
|
7
|
+
{{ password_reset_url }}{% if username %}
|
|
8
|
+
|
|
9
|
+
{% blocktrans %}In case you forgot, your username is {{ username }}.{% endblocktrans %}{% endif %}{% endautoescape %}{% endblock %}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
{% extends "account/email/base.html" %}
|
|
2
|
+
{% load i18n %}
|
|
3
|
+
|
|
4
|
+
{% block title %}
|
|
5
|
+
No Account Found
|
|
6
|
+
{% endblock %}
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
{% block content %}{% autoescape off %}{% blocktrans %}
|
|
10
|
+
|
|
11
|
+
You are receiving this e-mail because you or someone else has requested a
|
|
12
|
+
password for your user account. However, we do not have any record of a user
|
|
13
|
+
with email <strong>{{ email }}</strong> in our databases.
|
|
14
|
+
<br>
|
|
15
|
+
<br>
|
|
16
|
+
This mail can be safely ignored if you did not request a password reset.
|
|
17
|
+
<br>
|
|
18
|
+
<br>
|
|
19
|
+
If it was you, you can sign up for an account using the link below.{% endblocktrans %}
|
|
20
|
+
<br>
|
|
21
|
+
<br>
|
|
22
|
+
<a href="{{ signup_url }}">{{ signup_url }}</a>
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
{% endautoescape %}{% endblock %}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
{% extends "account/email/base_message.txt" %}
|
|
2
|
+
{% load i18n %}
|
|
3
|
+
|
|
4
|
+
{% block content %}{% autoescape off %}{% blocktrans %}You are receiving this e-mail because you or someone else has requested a
|
|
5
|
+
password for your user account. However, we do not have any record of a user
|
|
6
|
+
with email {{ email }} in our database.
|
|
7
|
+
|
|
8
|
+
This mail can be safely ignored if you did not request a password reset.
|
|
9
|
+
|
|
10
|
+
If it was you, you can sign up for an account using the link below.{% endblocktrans %}
|
|
11
|
+
|
|
12
|
+
{{ signup_url }}{% endautoescape %}{% endblock %}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
{% extends "account/base.html" %}
|
|
2
|
+
|
|
3
|
+
{% load i18n %}
|
|
4
|
+
{% load account widget_tweaks %}
|
|
5
|
+
|
|
6
|
+
{% block content %}
|
|
7
|
+
|
|
8
|
+
<h1>{% trans "Sign In" %}</h1>
|
|
9
|
+
|
|
10
|
+
<p>{% blocktrans %}If you have not created an account yet, then please
|
|
11
|
+
<a href="{{ signup_url }}">sign up</a> first.{% endblocktrans %}</p>
|
|
12
|
+
|
|
13
|
+
{% block page_content %}
|
|
14
|
+
<div class="card slm-account-card" style="width: 50rem;">
|
|
15
|
+
<div class="card-body bg-light p-5">
|
|
16
|
+
{% include "messages.html" %}
|
|
17
|
+
<h1 class="card-title">Welcome</h1>
|
|
18
|
+
<p class="card-text">Please sign in with your IGS Member login information. For registration inquiries, please contact us.</p>
|
|
19
|
+
<p class="card-header" style="font-weight: bold;">(Note: This site is ONLY for Authorized Users to Edit and Maintain IGS Site Log Data. If you need to view Site Log Data go to igs.org)</p>
|
|
20
|
+
<br>
|
|
21
|
+
<!-- Uses form for login authentication -->
|
|
22
|
+
<form class="login" method="POST" action="{% url 'account_login' %}">
|
|
23
|
+
{% for error in form.non_field_errors %}
|
|
24
|
+
<div class="alert alert-danger">
|
|
25
|
+
<strong>{{ error|escape }}</strong>
|
|
26
|
+
</div>
|
|
27
|
+
{% endfor %}
|
|
28
|
+
{% csrf_token %}
|
|
29
|
+
<div class="input-group mb-3">
|
|
30
|
+
{% for error in form.login.errors %}
|
|
31
|
+
<div class="alert alert-danger">
|
|
32
|
+
<strong>{{ error|escape }}</strong>
|
|
33
|
+
</div>
|
|
34
|
+
{% endfor %}
|
|
35
|
+
{% render_field form.login class="form-control" %}
|
|
36
|
+
</div>
|
|
37
|
+
<div class="input-group mb-3">
|
|
38
|
+
{% for error in form.password.errors %}
|
|
39
|
+
<div class="alert alert-danger">
|
|
40
|
+
<strong>{{ error|escape }}</strong>
|
|
41
|
+
</div>
|
|
42
|
+
{% endfor %}
|
|
43
|
+
{% render_field form.password class="form-control" %}
|
|
44
|
+
</div>
|
|
45
|
+
<div class="row mb-3">
|
|
46
|
+
<div class="col offset-sm-0">
|
|
47
|
+
<div class="form-check">
|
|
48
|
+
{% render_field form.remember class="form-check-input" %}
|
|
49
|
+
<label class="form-check-label" for="{{ form.remember.id_for_label }}">{% trans "Remember Me" %}</label>
|
|
50
|
+
</div>
|
|
51
|
+
</div>
|
|
52
|
+
</div>
|
|
53
|
+
|
|
54
|
+
{% if redirect_field_value %}
|
|
55
|
+
<input type="hidden" name="{{ redirect_field_name }}" value="{{ redirect_field_value }}" />
|
|
56
|
+
{% endif %}
|
|
57
|
+
<div class="d-grid gap-2 d-md-flex justify-content-xxl-between">
|
|
58
|
+
<button class="primaryAction btn btn-primary" type="submit">{% trans "Sign In" %}</button>
|
|
59
|
+
</div>
|
|
60
|
+
<div class="mt-3">
|
|
61
|
+
<a type="button" href="{% url "account_reset_password" %}">Forgot Password?</a>
|
|
62
|
+
</div>
|
|
63
|
+
</form>
|
|
64
|
+
</div>
|
|
65
|
+
</div>
|
|
66
|
+
{% endblock %}
|
|
67
|
+
{% endblock %}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
{% extends "account/base.html" %}
|
|
2
|
+
|
|
3
|
+
{% load i18n %}
|
|
4
|
+
{% load account widget_tweaks %}
|
|
5
|
+
|
|
6
|
+
{% block head %}
|
|
7
|
+
{{ block.super }}
|
|
8
|
+
<style>
|
|
9
|
+
body {
|
|
10
|
+
background: url("/static/slm/img/login-bg.jpg") no-repeat center center fixed;
|
|
11
|
+
background-size: cover;
|
|
12
|
+
-webkit-background-size: cover;
|
|
13
|
+
-moz-background-size: cover;
|
|
14
|
+
-o-background-size: cover;
|
|
15
|
+
}
|
|
16
|
+
</style>
|
|
17
|
+
{% endblock %}
|
|
18
|
+
|
|
19
|
+
{% block page_content %}
|
|
20
|
+
<div class="card slm-account-card" style="width: 50rem;">
|
|
21
|
+
<div class="card-body bg-light p-5">
|
|
22
|
+
|
|
23
|
+
{% include "messages.html" %}
|
|
24
|
+
|
|
25
|
+
<h1>{% trans "Sign Out" %}</h1>
|
|
26
|
+
|
|
27
|
+
<p>{% trans 'Are you sure you want to sign out?' %}</p>
|
|
28
|
+
|
|
29
|
+
<form method="post" action="{% url 'account_logout' %}">
|
|
30
|
+
{% csrf_token %}
|
|
31
|
+
{% if redirect_field_value %}
|
|
32
|
+
<input type="hidden" name="{{ redirect_field_name }}" value="{{ redirect_field_value }}"/>
|
|
33
|
+
{% endif %}
|
|
34
|
+
<button type="submit" class="btn btn-success">{% trans 'Sign Out' %}</button>
|
|
35
|
+
</form>
|
|
36
|
+
</div>
|
|
37
|
+
</div>
|
|
38
|
+
{% endblock %}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
{% extends "account/base.html" %}
|
|
2
|
+
{% load widget_tweaks i18n %}
|
|
3
|
+
|
|
4
|
+
{% block page_content %}
|
|
5
|
+
<div class="card slm-account-card" style="min-width: 75%">
|
|
6
|
+
<div class="card-body bg-light p-5">
|
|
7
|
+
|
|
8
|
+
<!-- Title -->
|
|
9
|
+
<h1 class="card-title">{% translate "Change Password" %}</h1>
|
|
10
|
+
|
|
11
|
+
<div class="card-text p-3">
|
|
12
|
+
|
|
13
|
+
{% include "messages.html" %}
|
|
14
|
+
<form method="post">
|
|
15
|
+
{% csrf_token %}
|
|
16
|
+
{% for error in form.non_field_errors %}
|
|
17
|
+
<div class="alert alert-danger mt-1 p-1">
|
|
18
|
+
<strong>{{ error|escape }}</strong>
|
|
19
|
+
</div>
|
|
20
|
+
{% endfor %}
|
|
21
|
+
{% for field in form %}
|
|
22
|
+
<div {% if field.is_hidden %}style="display: none"{% else %}class="row align-items-center d-flex justify-content-between mb-2"{% endif %}>
|
|
23
|
+
<div class="col-3">
|
|
24
|
+
<label class="form-label">{{ field.label }}</label>
|
|
25
|
+
</div>
|
|
26
|
+
<div class="col-6">
|
|
27
|
+
{% render_field field class="form-control" %}
|
|
28
|
+
{% for error in field.errors %}
|
|
29
|
+
<div class="alert alert-danger mt-1 p-1">
|
|
30
|
+
<strong>{{ error|escape }}</strong>
|
|
31
|
+
</div>
|
|
32
|
+
{% endfor %}
|
|
33
|
+
</div>
|
|
34
|
+
<div class="col-3">
|
|
35
|
+
</div>
|
|
36
|
+
</div>
|
|
37
|
+
{% endfor %}
|
|
38
|
+
|
|
39
|
+
<div id="update" class="d-grid gap-2 d-flex justify-content-between">
|
|
40
|
+
<button type='submit' name='update' class="btn btn-success">
|
|
41
|
+
{% translate "Change Password" %}
|
|
42
|
+
</button>
|
|
43
|
+
</div>
|
|
44
|
+
</form>
|
|
45
|
+
</div>
|
|
46
|
+
</div>
|
|
47
|
+
</div>
|
|
48
|
+
{% endblock %}
|