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,334 @@
|
|
|
1
|
+
{% load static %}
|
|
2
|
+
{% load i18n %}
|
|
3
|
+
{% load rest_framework compress %}
|
|
4
|
+
|
|
5
|
+
<!DOCTYPE html>
|
|
6
|
+
<html>
|
|
7
|
+
<head>
|
|
8
|
+
{% block head %}
|
|
9
|
+
|
|
10
|
+
<link rel="shortcut icon" type="image/png" href="{% static 'slm/img/favicon.ico' %}"/>
|
|
11
|
+
{% block meta %}
|
|
12
|
+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
|
|
13
|
+
<meta name="robots" content="NONE,NOARCHIVE" />
|
|
14
|
+
{% endblock %}
|
|
15
|
+
|
|
16
|
+
<title>{% block title %}{% if name %}{{ name }} – {% endif %}SLM API{% endblock %}</title>
|
|
17
|
+
|
|
18
|
+
{% block style %}
|
|
19
|
+
{% block bootstrap_theme %}
|
|
20
|
+
<link rel="stylesheet" type="text/css" href="{% static "rest_framework/css/bootstrap.min.css" %}"/>
|
|
21
|
+
<link rel="stylesheet" type="text/css" href="{% static "rest_framework/css/bootstrap-tweaks.css" %}"/>
|
|
22
|
+
{% endblock %}
|
|
23
|
+
|
|
24
|
+
<link rel="stylesheet" type="text/css" href="{% static "rest_framework/css/prettify.css" %}"/>
|
|
25
|
+
<link rel="stylesheet" type="text/css" href="{% static "rest_framework/css/default.css" %}"/>
|
|
26
|
+
|
|
27
|
+
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.13.2/themes/base/jquery-ui.min.css" integrity="sha512-ELV+xyi8IhEApPS/pSj66+Jiw+sOT1Mqkzlh8ExXihe4zfqbWkxPRi8wptXIO9g73FSlhmquFlUOuMSoXz5IRw==" crossorigin="anonymous" referrerpolicy="no-referrer" />
|
|
28
|
+
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-icons/1.8.3/font/bootstrap-icons.min.css" integrity="sha512-YzwGgFdO1NQw1CZkPoGyRkEnUTxPSbGWXvGiXrWk8IeSqdyci0dEDYdLLjMxq1zCoU0QBa4kHAFiRhUL3z2bow==" crossorigin="anonymous" referrerpolicy="no-referrer" />
|
|
29
|
+
<link rel="preconnect" href="https://fonts.googleapis.com">
|
|
30
|
+
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
31
|
+
<link href="https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,300;0,400;0,700;0,900;1,300;1,400;1,700;1,900&display=swap" rel="stylesheet">
|
|
32
|
+
|
|
33
|
+
<!-- https://github.com/lipis/flag-icons -->
|
|
34
|
+
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/lipis/flag-icons@6.6.6/css/flag-icons.min.css"/>
|
|
35
|
+
|
|
36
|
+
{% compress css %}
|
|
37
|
+
<link rel='stylesheet' type='text/css' media='screen' href='{% static "slm/css/style.css" %}'>
|
|
38
|
+
<link rel='stylesheet' type='text/css' media='screen' href='{% static "slm/css/defines.css" %}'>
|
|
39
|
+
{% endcompress %}
|
|
40
|
+
|
|
41
|
+
{% if code_style %}<style>{{ code_style }}</style>{% endif %}
|
|
42
|
+
{% endblock %}
|
|
43
|
+
|
|
44
|
+
{% endblock %}
|
|
45
|
+
</head>
|
|
46
|
+
|
|
47
|
+
{% block body %}
|
|
48
|
+
<body class="{% block bodyclass %}{% endblock %}">
|
|
49
|
+
|
|
50
|
+
<div class="wrapper">
|
|
51
|
+
{% block navbar %}
|
|
52
|
+
<div class="navbar navbar-expand-md fixed-top {% block bootstrap_navbar_variant %}navbar-dark{% endblock %}"
|
|
53
|
+
role="navigation" aria-label="{% trans "navbar" %}">
|
|
54
|
+
<div class="container">
|
|
55
|
+
{% block branding %}
|
|
56
|
+
<img id="logo" src="{% static 'slm/img/slm-logo.svg' %}" alt="International GNSS Service">
|
|
57
|
+
{% endblock %}
|
|
58
|
+
<ul class="navbar-nav">
|
|
59
|
+
{% block userlinks %}
|
|
60
|
+
{% if user.is_authenticated %}
|
|
61
|
+
{% optional_logout request user csrf_token %}
|
|
62
|
+
{% else %}
|
|
63
|
+
{% optional_login request %}
|
|
64
|
+
{% endif %}
|
|
65
|
+
{% endblock %}
|
|
66
|
+
</ul>
|
|
67
|
+
</div>
|
|
68
|
+
</div>
|
|
69
|
+
{% endblock %}
|
|
70
|
+
|
|
71
|
+
<div class="container">
|
|
72
|
+
{% block breadcrumbs %}
|
|
73
|
+
<ul class="breadcrumb">
|
|
74
|
+
{% for breadcrumb_name, breadcrumb_url in breadcrumblist %}
|
|
75
|
+
{% if forloop.last %}
|
|
76
|
+
<li class="breadcrumb-item active"><a href="{{ breadcrumb_url }}">{{ breadcrumb_name }}</a></li>
|
|
77
|
+
{% else %}
|
|
78
|
+
<li class="breadcrumb-item"><a href="{{ breadcrumb_url }}">{{ breadcrumb_name }}</a></li>
|
|
79
|
+
{% endif %}
|
|
80
|
+
{% empty %}
|
|
81
|
+
{% block breadcrumbs_empty %} {% endblock breadcrumbs_empty %}
|
|
82
|
+
{% endfor %}
|
|
83
|
+
</ul>
|
|
84
|
+
{% endblock %}
|
|
85
|
+
|
|
86
|
+
<!-- Content -->
|
|
87
|
+
<div id="content" role="main" aria-label="{% trans "content" %}">
|
|
88
|
+
{% block content %}
|
|
89
|
+
|
|
90
|
+
<div class="region" aria-label="{% trans "request form" %}">
|
|
91
|
+
{% block request_forms %}
|
|
92
|
+
|
|
93
|
+
{% if 'GET' in allowed_methods %}
|
|
94
|
+
<form id="get-form" class="float-end">
|
|
95
|
+
<fieldset>
|
|
96
|
+
{% if api_settings.URL_FORMAT_OVERRIDE %}
|
|
97
|
+
<div class="btn-group">
|
|
98
|
+
<button class="btn btn-primary" data-bs-toggle="tooltip" href="{{ request.get_full_path }}" rel="nofollow" title="Make a GET request on the {{ name }} resource">GET</button>
|
|
99
|
+
<button class="btn btn-primary dropdown-toggle dropdown-toggle-split" data-bs-toggle="dropdown">
|
|
100
|
+
</button>
|
|
101
|
+
<ul class="dropdown-menu">
|
|
102
|
+
{% for format in available_formats %}
|
|
103
|
+
<li>
|
|
104
|
+
<a class="dropdown-item" data-bs-toggle="tooltip" href="{% add_query_param request api_settings.URL_FORMAT_OVERRIDE format %}" rel="nofollow" title="Make a GET request on the {{ name }} resource with the format set to `{{ format }}`">{{ format }}</a>
|
|
105
|
+
</li>
|
|
106
|
+
{% endfor %}
|
|
107
|
+
</ul>
|
|
108
|
+
</div>
|
|
109
|
+
{% else %}
|
|
110
|
+
<a class="btn btn-primary" data-bs-toggle="tooltip" href="{{ request.get_full_path }}" rel="nofollow" title="Make a GET request on the {{ name }} resource">GET</a>
|
|
111
|
+
{% endif %}
|
|
112
|
+
</fieldset>
|
|
113
|
+
</form>
|
|
114
|
+
{% endif %}
|
|
115
|
+
|
|
116
|
+
{% if options_form %}
|
|
117
|
+
<form class="button-form" action="{{ request.get_full_path }}" data-method="OPTIONS">
|
|
118
|
+
<button class="btn btn-primary" data-bs-toggle="tooltip" title="Make an OPTIONS request on the {{ name }} resource">OPTIONS</button>
|
|
119
|
+
</form>
|
|
120
|
+
{% endif %}
|
|
121
|
+
|
|
122
|
+
{% if delete_form %}
|
|
123
|
+
<button class="btn btn-danger button-form" data-bs-toggle="tooltip" title="Make a DELETE request on the {{ name }} resource" data-bs-toggle="modal" data-bs-target="#deleteModal">DELETE</button>
|
|
124
|
+
|
|
125
|
+
<!-- Delete Modal -->
|
|
126
|
+
<div class="modal fade" id="deleteModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
|
|
127
|
+
<div class="modal-dialog">
|
|
128
|
+
<div class="modal-content">
|
|
129
|
+
<div class="modal-body">
|
|
130
|
+
<h4 class="text-center">Are you sure you want to delete this {{ name }}?</h4>
|
|
131
|
+
</div>
|
|
132
|
+
<div class="modal-footer">
|
|
133
|
+
<button type="button" class="btn btn-default" data-bs-dismiss="modal">Cancel</button>
|
|
134
|
+
<form class="button-form" action="{{ request.get_full_path }}" data-method="DELETE">
|
|
135
|
+
<button class="btn btn-danger">Delete</button>
|
|
136
|
+
</form>
|
|
137
|
+
</div>
|
|
138
|
+
</div>
|
|
139
|
+
</div>
|
|
140
|
+
</div>
|
|
141
|
+
{% endif %}
|
|
142
|
+
|
|
143
|
+
{% if extra_actions %}
|
|
144
|
+
<div class="dropdown" style="float: right; margin-right: 10px">
|
|
145
|
+
<button class="btn btn-info dropdown-toggle" id="extra-actions-menu" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
|
146
|
+
{% trans "Extra Actions" %}
|
|
147
|
+
</button>
|
|
148
|
+
<ul class="dropdown-menu" aria-labelledby="extra-actions-menu">
|
|
149
|
+
{% for action_name, url in extra_actions|items %}
|
|
150
|
+
<li><a class="dropdown-item" href="{{ url }}">{{ action_name }}</a></li>
|
|
151
|
+
{% endfor %}
|
|
152
|
+
</ul>
|
|
153
|
+
</div>
|
|
154
|
+
{% endif %}
|
|
155
|
+
|
|
156
|
+
{% if filter_form %}
|
|
157
|
+
<button data-bs-toggle="modal" data-bs-target="#filtersModal" class="btn btn-outline-secondary button-form">
|
|
158
|
+
<svg width="1em" height="1em" viewBox="0 0 16 16" class="bi bi-wrench" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
|
|
159
|
+
<path fill-rule="evenodd" d="M.102 2.223A3.004 3.004 0 0 0 3.78 5.897l6.341 6.252A3.003 3.003 0 0 0 13 16a3 3 0 1 0-.851-5.878L5.897 3.781A3.004 3.004 0 0 0 2.223.1l2.141 2.142L4 4l-1.757.364L.102 2.223zm13.37 9.019L13 11l-.471.242-.529.026-.287.445-.445.287-.026.529L11 13l.242.471.026.529.445.287.287.445.529.026L13 15l.471-.242.529-.026.287-.445.445-.287.026-.529L15 13l-.242-.471-.026-.529-.445-.287-.287-.445-.529-.026z"/>
|
|
160
|
+
</svg>
|
|
161
|
+
{% trans "Filters" %}
|
|
162
|
+
</button>
|
|
163
|
+
{% endif %}
|
|
164
|
+
|
|
165
|
+
{% endblock request_forms %}
|
|
166
|
+
</div>
|
|
167
|
+
|
|
168
|
+
<div class="content-main" role="main" aria-label="{% trans "main content" %}">
|
|
169
|
+
<div class="page-header mt-3">
|
|
170
|
+
<h1 class="align-text-top">{{ name }}</h1>
|
|
171
|
+
</div>
|
|
172
|
+
<div style="float:left">
|
|
173
|
+
{% block description %}
|
|
174
|
+
{{ description }}
|
|
175
|
+
{% endblock %}
|
|
176
|
+
</div>
|
|
177
|
+
|
|
178
|
+
{% if paginator %}
|
|
179
|
+
<nav style="float: right">
|
|
180
|
+
{% get_pagination_html paginator %}
|
|
181
|
+
</nav>
|
|
182
|
+
{% endif %}
|
|
183
|
+
|
|
184
|
+
<div class="request-info" style="clear: both" aria-label="{% trans "request info" %}">
|
|
185
|
+
<pre class="prettyprint"><b>{{ request.method }}</b> {{ request.get_full_path }}</pre>
|
|
186
|
+
</div>
|
|
187
|
+
|
|
188
|
+
<div class="response-info" aria-label="{% trans "response info" %}">
|
|
189
|
+
<pre class="prettyprint"><span class="meta nocode"><b>HTTP {{ response.status_code }} {{ response.status_text }}</b>{% for key, val in response_headers|items %}
|
|
190
|
+
<b>{{ key }}:</b> <span class="lit">{{ val|break_long_headers|urlize }}</span>{% endfor %}
|
|
191
|
+
|
|
192
|
+
</span>{{ content|urlize }}</pre>
|
|
193
|
+
</div>
|
|
194
|
+
</div>
|
|
195
|
+
|
|
196
|
+
{% if display_edit_forms %}
|
|
197
|
+
{% if post_form or raw_data_post_form %}
|
|
198
|
+
<div {% if post_form %}class="tabbable"{% endif %}>
|
|
199
|
+
{% if post_form %}
|
|
200
|
+
<ul class="nav nav-tabs justify-content-end" role="tablist">
|
|
201
|
+
<li class="nav-item" role="presentation">
|
|
202
|
+
<a class="nav-link active" name='html-tab' href="#post-object-form" data-bs-toggle="tab" role="tab">HTML form</a>
|
|
203
|
+
</li>
|
|
204
|
+
<li class="nav-item" role="presentation">
|
|
205
|
+
<a class="nav-link" name='raw-tab' href="#post-generic-content-form" data-bs-toggle="tab" role="tab">Raw data</a>
|
|
206
|
+
</li>
|
|
207
|
+
</ul>
|
|
208
|
+
{% endif %}
|
|
209
|
+
|
|
210
|
+
<div class="tab-content p-4 bg-light border">
|
|
211
|
+
{% if post_form %}
|
|
212
|
+
<div class="tab-pane active" id="post-object-form" role="tabpanel">
|
|
213
|
+
{% with form=post_form %}
|
|
214
|
+
<form action="{{ request.get_full_path }}" method="POST" enctype="multipart/form-data" novalidate>
|
|
215
|
+
<fieldset>
|
|
216
|
+
{% csrf_token %}
|
|
217
|
+
{{ post_form }}
|
|
218
|
+
<div class="form-actions">
|
|
219
|
+
<button class="btn btn-primary" data-bs-toggle="tooltip" title="Make a POST request on the {{ name }} resource">POST</button>
|
|
220
|
+
</div>
|
|
221
|
+
</fieldset>
|
|
222
|
+
</form>
|
|
223
|
+
{% endwith %}
|
|
224
|
+
</div>
|
|
225
|
+
{% endif %}
|
|
226
|
+
|
|
227
|
+
<div {% if post_form %}class="tab-pane"{% endif %} id="post-generic-content-form" role="tabpanel">
|
|
228
|
+
{% with form=raw_data_post_form %}
|
|
229
|
+
<form action="{{ request.get_full_path }}" method="POST">
|
|
230
|
+
<fieldset>
|
|
231
|
+
{% include "rest_framework/raw_data_form.html" %}
|
|
232
|
+
<div class="form-actions">
|
|
233
|
+
<button class="btn btn-primary" data-bs-toggle="tooltip" title="Make a POST request on the {{ name }} resource">POST</button>
|
|
234
|
+
</div>
|
|
235
|
+
</fieldset>
|
|
236
|
+
</form>
|
|
237
|
+
{% endwith %}
|
|
238
|
+
</div>
|
|
239
|
+
</div>
|
|
240
|
+
</div>
|
|
241
|
+
{% endif %}
|
|
242
|
+
|
|
243
|
+
{% if put_form or raw_data_put_form or raw_data_patch_form %}
|
|
244
|
+
<div {% if put_form %}class="tabbable"{% endif %}>
|
|
245
|
+
{% if put_form %}
|
|
246
|
+
<ul class="nav nav-tabs justify-content-end" role="tablist">
|
|
247
|
+
<li class="nav-item" role="presentation">
|
|
248
|
+
<a class="nav-link active" name='html-tab' href="#put-object-form" data-bs-toggle="tab" role="tab">HTML form</a>
|
|
249
|
+
</li>
|
|
250
|
+
<li class="nav-item" role="presentation">
|
|
251
|
+
<a class="nav-link" name='raw-tab' href="#put-generic-content-form" data-bs-toggle="tab" role="tab">Raw data</a>
|
|
252
|
+
</li>
|
|
253
|
+
</ul>
|
|
254
|
+
{% endif %}
|
|
255
|
+
|
|
256
|
+
<div class="tab-content p-4 bg-light border">
|
|
257
|
+
{% if put_form %}
|
|
258
|
+
<div class="tab-pane active" id="put-object-form" role="tabpanel">
|
|
259
|
+
<form action="{{ request.get_full_path }}" data-method="PUT" enctype="multipart/form-data" novalidate>
|
|
260
|
+
<fieldset>
|
|
261
|
+
{{ put_form }}
|
|
262
|
+
<div class="form-actions">
|
|
263
|
+
<button class="btn btn-primary" data-bs-toggle="tooltip" title="Make a PUT request on the {{ name }} resource">PUT</button>
|
|
264
|
+
</div>
|
|
265
|
+
</fieldset>
|
|
266
|
+
</form>
|
|
267
|
+
</div>
|
|
268
|
+
{% endif %}
|
|
269
|
+
|
|
270
|
+
<div {% if put_form %}class="tab-pane"{% endif %} id="put-generic-content-form" role="tabpanel">
|
|
271
|
+
{% with form=raw_data_put_or_patch_form %}
|
|
272
|
+
<form action="{{ request.get_full_path }}" data-method="PUT">
|
|
273
|
+
<fieldset>
|
|
274
|
+
{% include "rest_framework/raw_data_form.html" %}
|
|
275
|
+
<div class="form-actions">
|
|
276
|
+
{% if raw_data_put_form %}
|
|
277
|
+
<button class="btn btn-primary" data-bs-toggle="tooltip" title="Make a PUT request on the {{ name }} resource">PUT</button>
|
|
278
|
+
{% endif %}
|
|
279
|
+
{% if raw_data_patch_form %}
|
|
280
|
+
<button data-method="PATCH" class="btn btn-primary" data-bs-toggle="tooltip" title="Make a PATCH request on the {{ name }} resource">PATCH</button>
|
|
281
|
+
{% endif %}
|
|
282
|
+
</div>
|
|
283
|
+
</fieldset>
|
|
284
|
+
</form>
|
|
285
|
+
{% endwith %}
|
|
286
|
+
</div>
|
|
287
|
+
</div>
|
|
288
|
+
</div>
|
|
289
|
+
{% endif %}
|
|
290
|
+
{% endif %}
|
|
291
|
+
{% endblock content %}
|
|
292
|
+
</div><!-- /.content -->
|
|
293
|
+
</div><!-- /.container -->
|
|
294
|
+
</div><!-- ./wrapper -->
|
|
295
|
+
|
|
296
|
+
{% if filter_form %}
|
|
297
|
+
{{ filter_form }}
|
|
298
|
+
{% endif %}
|
|
299
|
+
|
|
300
|
+
{% block script %}
|
|
301
|
+
<script>
|
|
302
|
+
window.drf = {
|
|
303
|
+
csrfHeaderName: "{{ csrf_header_name|default:'X-CSRFToken' }}",
|
|
304
|
+
csrfToken: "{% if request %}{{ csrf_token }}{% endif %}"
|
|
305
|
+
};
|
|
306
|
+
</script>
|
|
307
|
+
<script src="{% static "rest_framework/js/jquery-3.5.1.min.js" %}"></script>
|
|
308
|
+
<script src="{% static "rest_framework/js/ajax-form.js" %}"></script>
|
|
309
|
+
<script src="{% static "rest_framework/js/csrf.js" %}"></script>
|
|
310
|
+
<script src="{% static "rest_framework/js/bootstrap.bundle.min.js" %}"></script>
|
|
311
|
+
<script src="{% static "rest_framework/js/prettify-min.js" %}"></script>
|
|
312
|
+
<script src="{% static "rest_framework/js/default.js" %}"></script>
|
|
313
|
+
<script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.13.2/jquery-ui.min.js" integrity="sha512-57oZ/vW8ANMjR/KQ6Be9v/+/h6bq9/l3f0Oc7vn6qMqyhvPd1cvKBRWWpzu0QoneImqr2SkmO4MSqU+RpHom3Q==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
|
|
314
|
+
<script src="{% static "slm/js/autocomplete.js" %}" type="module"></script>
|
|
315
|
+
|
|
316
|
+
<script>
|
|
317
|
+
$(document).ready(function() {
|
|
318
|
+
$('form').ajaxForm();
|
|
319
|
+
});
|
|
320
|
+
</script>
|
|
321
|
+
<! -- enable tooltips -->
|
|
322
|
+
<script type="text/javascript">
|
|
323
|
+
var tooltipTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]'))
|
|
324
|
+
var tooltipList = tooltipTriggerList.map(function (tooltipTriggerEl) {
|
|
325
|
+
return new bootstrap.Tooltip(tooltipTriggerEl)
|
|
326
|
+
})
|
|
327
|
+
|
|
328
|
+
</script>
|
|
329
|
+
|
|
330
|
+
{% endblock %}
|
|
331
|
+
|
|
332
|
+
</body>
|
|
333
|
+
{% endblock %}
|
|
334
|
+
</html>
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
{% load rest_framework %}
|
|
2
|
+
|
|
3
|
+
<!-- Modal -->
|
|
4
|
+
<div class="modal fade auth-modal auth-basic" id="auth_basic_modal" tabindex="-1" role="dialog" aria-labelledby="basic authentication modal">
|
|
5
|
+
<div class="modal-dialog modal-md" role="document">
|
|
6
|
+
<div class="modal-content">
|
|
7
|
+
<div class="modal-header">
|
|
8
|
+
<h3 class="modal-title">
|
|
9
|
+
<svg width="1em" height="1em" viewBox="0 0 16 16" class="bi bi-key mb-1" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
|
|
10
|
+
<path fill-rule="evenodd" d="M0 8a4 4 0 0 1 7.465-2H14a.5.5 0 0 1 .354.146l1.5 1.5a.5.5 0 0 1 0 .708l-1.5 1.5a.5.5 0 0 1-.708 0L13 9.207l-.646.647a.5.5 0 0 1-.708 0L11 9.207l-.646.647a.5.5 0 0 1-.708 0L9 9.207l-.646.647A.5.5 0 0 1 8 10h-.535A4 4 0 0 1 0 8zm4-3a3 3 0 1 0 2.712 4.285A.5.5 0 0 1 7.163 9h.63l.853-.854a.5.5 0 0 1 .708 0l.646.647.646-.647a.5.5 0 0 1 .708 0l.646.647.646-.647a.5.5 0 0 1 .708 0l.646.647.793-.793-1-1h-6.63a.5.5 0 0 1-.451-.285A3 3 0 0 0 4 5z"/>
|
|
11
|
+
<path d="M4 8a1 1 0 1 1-2 0 1 1 0 0 1 2 0z"/>
|
|
12
|
+
</svg>
|
|
13
|
+
Basic Authentication
|
|
14
|
+
</h3>
|
|
15
|
+
</div>
|
|
16
|
+
|
|
17
|
+
<form class="authentication-basic-form">
|
|
18
|
+
<div class="modal-body">
|
|
19
|
+
<div class="row mb-3">
|
|
20
|
+
<label for="authorization" class="col-sm-2 col-form-label">Username:</label>
|
|
21
|
+
<div class="col-sm-10">
|
|
22
|
+
<input type="text" class="form-control" id="username" required>
|
|
23
|
+
</div>
|
|
24
|
+
</div>
|
|
25
|
+
|
|
26
|
+
<div class="row mb-3">
|
|
27
|
+
<label for="authorization" class="col-sm-2 col-form-label">Password:</label>
|
|
28
|
+
<div class="col-sm-10">
|
|
29
|
+
<input type="password" class="form-control" id="password" required>
|
|
30
|
+
</div>
|
|
31
|
+
</div>
|
|
32
|
+
</div>
|
|
33
|
+
|
|
34
|
+
<div class="modal-footer">
|
|
35
|
+
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
|
|
36
|
+
<button type="submit" class="btn btn-primary">Use Basic Authentication</button>
|
|
37
|
+
</div>
|
|
38
|
+
</form>
|
|
39
|
+
|
|
40
|
+
</div>
|
|
41
|
+
</div>
|
|
42
|
+
</div>
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
{% load rest_framework %}
|
|
2
|
+
|
|
3
|
+
<!-- Modal -->
|
|
4
|
+
<div class="modal fade auth-modal auth-session" id="auth_session_modal" tabindex="-1" role="dialog" aria-labelledby="session authentication modal">
|
|
5
|
+
<div class="modal-dialog modal-md" role="document">
|
|
6
|
+
<div class="modal-content">
|
|
7
|
+
<div class="modal-header">
|
|
8
|
+
<h3 class="modal-title">
|
|
9
|
+
<svg width="1em" height="1em" viewBox="0 0 16 16" class="bi bi-key mb-1" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
|
|
10
|
+
<path fill-rule="evenodd" d="M0 8a4 4 0 0 1 7.465-2H14a.5.5 0 0 1 .354.146l1.5 1.5a.5.5 0 0 1 0 .708l-1.5 1.5a.5.5 0 0 1-.708 0L13 9.207l-.646.647a.5.5 0 0 1-.708 0L11 9.207l-.646.647a.5.5 0 0 1-.708 0L9 9.207l-.646.647A.5.5 0 0 1 8 10h-.535A4 4 0 0 1 0 8zm4-3a3 3 0 1 0 2.712 4.285A.5.5 0 0 1 7.163 9h.63l.853-.854a.5.5 0 0 1 .708 0l.646.647.646-.647a.5.5 0 0 1 .708 0l.646.647.646-.647a.5.5 0 0 1 .708 0l.646.647.793-.793-1-1h-6.63a.5.5 0 0 1-.451-.285A3 3 0 0 0 4 5z"/>
|
|
11
|
+
<path d="M4 8a1 1 0 1 1-2 0 1 1 0 0 1 2 0z"/>
|
|
12
|
+
</svg>
|
|
13
|
+
Session Authentication</h3>
|
|
14
|
+
</div>
|
|
15
|
+
|
|
16
|
+
<form class="form-horizontal authentication-session-form">
|
|
17
|
+
<div class="modal-body">
|
|
18
|
+
|
|
19
|
+
{% if user.is_authenticated %}
|
|
20
|
+
<h4 class="text-center">You are logged in as {{ user.get_username }}.</h4>
|
|
21
|
+
{% else %}
|
|
22
|
+
|
|
23
|
+
<div class="text-center">
|
|
24
|
+
<h4 class="text-center">You need to {% optional_docs_login request %} to enable Session Authentication.</h4>
|
|
25
|
+
</div>
|
|
26
|
+
{% endif %}
|
|
27
|
+
|
|
28
|
+
</div>
|
|
29
|
+
|
|
30
|
+
<div class="modal-footer">
|
|
31
|
+
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
|
|
32
|
+
{% if user.is_authenticated %}
|
|
33
|
+
<button type="submit" class="btn btn-primary">Use Session Authentication</button>
|
|
34
|
+
{% endif %}
|
|
35
|
+
</div>
|
|
36
|
+
</form>
|
|
37
|
+
|
|
38
|
+
</div>
|
|
39
|
+
</div>
|
|
40
|
+
</div>
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
{% load rest_framework %}
|
|
2
|
+
|
|
3
|
+
<!-- Modal -->
|
|
4
|
+
<div class="modal fade auth-modal auth-token" id="auth_token_modal" tabindex="-1" role="dialog" aria-labelledby="token authentication modal">
|
|
5
|
+
<div class="modal-dialog modal-md" role="document">
|
|
6
|
+
<div class="modal-content">
|
|
7
|
+
<div class="modal-header">
|
|
8
|
+
<h3 class="modal-title">
|
|
9
|
+
<svg width="1em" height="1em" viewBox="0 0 16 16" class="bi bi-key mb-1" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
|
|
10
|
+
<path fill-rule="evenodd" d="M0 8a4 4 0 0 1 7.465-2H14a.5.5 0 0 1 .354.146l1.5 1.5a.5.5 0 0 1 0 .708l-1.5 1.5a.5.5 0 0 1-.708 0L13 9.207l-.646.647a.5.5 0 0 1-.708 0L11 9.207l-.646.647a.5.5 0 0 1-.708 0L9 9.207l-.646.647A.5.5 0 0 1 8 10h-.535A4 4 0 0 1 0 8zm4-3a3 3 0 1 0 2.712 4.285A.5.5 0 0 1 7.163 9h.63l.853-.854a.5.5 0 0 1 .708 0l.646.647.646-.647a.5.5 0 0 1 .708 0l.646.647.646-.647a.5.5 0 0 1 .708 0l.646.647.793-.793-1-1h-6.63a.5.5 0 0 1-.451-.285A3 3 0 0 0 4 5z"/>
|
|
11
|
+
<path d="M4 8a1 1 0 1 1-2 0 1 1 0 0 1 2 0z"/>
|
|
12
|
+
</svg>
|
|
13
|
+
Token Authentication</h3>
|
|
14
|
+
</div>
|
|
15
|
+
|
|
16
|
+
<form class="authentication-token-form">
|
|
17
|
+
<div class="modal-body">
|
|
18
|
+
<div class="row mb-3">
|
|
19
|
+
<label for="prefix" class="col-sm-2 col-form-label">Scheme:</label>
|
|
20
|
+
<div class="col-sm-10">
|
|
21
|
+
<input type="text" class="form-control" id="scheme" placeholder="Bearer" aria-describedby="schemeHelpBlock" required>
|
|
22
|
+
<span id="schemeHelpBlock" class="form-text">Either a registered authentication scheme such as <code>Bearer</code>, or a custom schema such as <code>Token</code> or <code>JWT</code>.</span>
|
|
23
|
+
</div>
|
|
24
|
+
</div>
|
|
25
|
+
<div class="row mb-3">
|
|
26
|
+
<label for="token" class="col-sm-2 col-form-label">Token:</label>
|
|
27
|
+
<div class="col-sm-10">
|
|
28
|
+
<input type="text" class="form-control" id="token" placeholder="XXXX-XXXX-XXXX-XXXX" aria-describedby="helpBlock" required>
|
|
29
|
+
<span id="tokenHelpBlock" class="form-text">A valid API token.</span>
|
|
30
|
+
</div>
|
|
31
|
+
</div>
|
|
32
|
+
</div>
|
|
33
|
+
<div class="modal-footer">
|
|
34
|
+
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
|
|
35
|
+
<button type="submit" class="btn btn-primary">Use Token Authentication</button>
|
|
36
|
+
</div>
|
|
37
|
+
</form>
|
|
38
|
+
|
|
39
|
+
</div>
|
|
40
|
+
</div>
|
|
41
|
+
</div>
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
{% load rest_framework %}
|
|
2
|
+
|
|
3
|
+
<div class="row intro">
|
|
4
|
+
<div class="col-md-6 intro-title">
|
|
5
|
+
<h1>{{ document.title }}</h1>
|
|
6
|
+
{% if document.description %}
|
|
7
|
+
{% render_markdown document.description %}
|
|
8
|
+
{% endif %}
|
|
9
|
+
</div>
|
|
10
|
+
<div class="col-md-6 intro-code">
|
|
11
|
+
{% for html in lang_intro_htmls %}
|
|
12
|
+
{% include html %}
|
|
13
|
+
{% endfor %}
|
|
14
|
+
</div>
|
|
15
|
+
</div>
|
|
16
|
+
{% if document|data %}
|
|
17
|
+
{% for section_key, section in document|data|items %}
|
|
18
|
+
{% if section_key %}
|
|
19
|
+
<h2 id="{{ section_key }}" class="coredocs-section-title">{{ section_key }} <a href="#{{ section_key }}">
|
|
20
|
+
<svg width="1em" height="1em" viewBox="0 0 16 16" class="bi bi-link-45deg" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
|
|
21
|
+
<path d="M4.715 6.542L3.343 7.914a3 3 0 1 0 4.243 4.243l1.828-1.829A3 3 0 0 0 8.586 5.5L8 6.086a1.001 1.001 0 0 0-.154.199 2 2 0 0 1 .861 3.337L6.88 11.45a2 2 0 1 1-2.83-2.83l.793-.792a4.018 4.018 0 0 1-.128-1.287z"/>
|
|
22
|
+
<path d="M5.712 6.96l.167-.167a1.99 1.99 0 0 1 .896-.518 1.99 1.99 0 0 1 .518-.896l.167-.167A3.004 3.004 0 0 0 6 5.499c-.22.46-.316.963-.288 1.46z"/>
|
|
23
|
+
<path d="M6.586 4.672A3 3 0 0 0 7.414 9.5l.775-.776a2 2 0 0 1-.896-3.346L9.12 3.55a2 2 0 0 1 2.83 2.83l-.793.792c.112.42.155.855.128 1.287l1.372-1.372a3 3 0 0 0-4.243-4.243L6.586 4.672z"/>
|
|
24
|
+
<path d="M10 9.5a2.99 2.99 0 0 0 .288-1.46l-.167.167a1.99 1.99 0 0 1-.896.518 1.99 1.99 0 0 1-.518.896l-.167.167A3.004 3.004 0 0 0 10 9.501z"/>
|
|
25
|
+
</svg>
|
|
26
|
+
</a></h2>
|
|
27
|
+
{% endif %}
|
|
28
|
+
|
|
29
|
+
{% for link_key, link in section|schema_links|items %}
|
|
30
|
+
{% include "rest_framework/docs/link.html" %}
|
|
31
|
+
{% endfor %}
|
|
32
|
+
{% endfor %}
|
|
33
|
+
|
|
34
|
+
{% for link_key, link in document.links|items %}
|
|
35
|
+
{% include "rest_framework/docs/link.html" %}
|
|
36
|
+
{% endfor %}
|
|
37
|
+
{% endif %}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
{% load static %}
|
|
2
|
+
<!DOCTYPE html>
|
|
3
|
+
<html lang="en">
|
|
4
|
+
<head>
|
|
5
|
+
<meta charset="utf-8">
|
|
6
|
+
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
7
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
8
|
+
|
|
9
|
+
<title>Error Rendering Schema</title>
|
|
10
|
+
</head>
|
|
11
|
+
<body>
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
<h1>Error</h1>
|
|
16
|
+
|
|
17
|
+
<pre>
|
|
18
|
+
{{ data }}
|
|
19
|
+
</pre>
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
{% if debug is True %}
|
|
23
|
+
<hr />
|
|
24
|
+
<h2>Additional Information</h2>
|
|
25
|
+
<p>Note: You are seeing this message because <code>DEBUG==True</code>.</p>
|
|
26
|
+
|
|
27
|
+
<p>Seeing this page is <em>usually</em> a configuration error: are your
|
|
28
|
+
<code>DEFAULT_AUTHENTICATION_CLASSES</code> or <code>DEFAULT_PERMISSION_CLASSES</code>
|
|
29
|
+
being applied unexpectedly?</p>
|
|
30
|
+
|
|
31
|
+
<p>Your response status code is: <code>{{ response.status_code }}</code></p>
|
|
32
|
+
|
|
33
|
+
<h3>401 Unauthorised.</h3>
|
|
34
|
+
<ul>
|
|
35
|
+
<li>Do you have SessionAuthentication enabled?</li>
|
|
36
|
+
<li>Are you logged in?</li>
|
|
37
|
+
</ul>
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
<h3>403 Forbidden.</h3>
|
|
41
|
+
<ul>
|
|
42
|
+
<li>Do you have sufficient permissions to access this view?</li>
|
|
43
|
+
<li>Is you schema non-empty? (An empty schema will lead to a permission denied error being raised.)</li>
|
|
44
|
+
</ul>
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
<p>Most commonly the intended solution is to disable authentication and permissions
|
|
48
|
+
when including the docs urls:</p>
|
|
49
|
+
|
|
50
|
+
<pre>
|
|
51
|
+
path('docs/', include_docs_urls(title='Your API',
|
|
52
|
+
authentication_classes=[],
|
|
53
|
+
permission_classes=[])),
|
|
54
|
+
</pre>
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
<h2>Overriding this template</h2>
|
|
58
|
+
|
|
59
|
+
<p>If you wish access to your docs to be authenticated you may override this template
|
|
60
|
+
at <code>rest_framework/docs/error.html</code>.</p>
|
|
61
|
+
|
|
62
|
+
<p>The available context is: <code>data</code> the error dict above, <code>request</code>,
|
|
63
|
+
<code>response</code> and the <code>debug</code> flag.</p>
|
|
64
|
+
|
|
65
|
+
{% endif %}
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
<script src="{% static 'rest_framework/js/jquery-3.5.1.min.js' %}"></script>
|
|
70
|
+
</body>
|
|
71
|
+
</html>
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
{% load static %}
|
|
2
|
+
<!DOCTYPE html>
|
|
3
|
+
<html lang="en">
|
|
4
|
+
<head>
|
|
5
|
+
<meta charset="utf-8">
|
|
6
|
+
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
7
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
8
|
+
|
|
9
|
+
<title>{{ document.title }}</title>
|
|
10
|
+
|
|
11
|
+
<link href="{% static 'rest_framework/css/bootstrap.min.css' %}" rel="stylesheet">
|
|
12
|
+
<link href="{% static 'rest_framework/docs/css/base.css' %}" rel="stylesheet">
|
|
13
|
+
<link href="{% static 'rest_framework/docs/css/jquery.json-view.min.css' %}" rel="stylesheet">
|
|
14
|
+
|
|
15
|
+
<link href="{% static 'rest_framework/docs/img/favicon.ico' %}" rel="shortcut icon">
|
|
16
|
+
|
|
17
|
+
{% if code_style %}<style>{{ code_style }}</style>{% endif %}
|
|
18
|
+
<script src="{% static 'rest_framework/js/coreapi-0.1.1.js' %}"></script>
|
|
19
|
+
<script src="{% url 'api-docs:schema-js' %}"></script>
|
|
20
|
+
|
|
21
|
+
</head>
|
|
22
|
+
|
|
23
|
+
<body data-spy="scroll" data-bs-target="#sidebar-nav" data-offset="50">
|
|
24
|
+
|
|
25
|
+
{% include "rest_framework/docs/sidebar.html" %}
|
|
26
|
+
|
|
27
|
+
<div class="container" id="main">
|
|
28
|
+
<div class="row">
|
|
29
|
+
<div class="col-md-12 main-container">
|
|
30
|
+
{% include "rest_framework/docs/document.html" %}
|
|
31
|
+
</div>
|
|
32
|
+
</div>
|
|
33
|
+
</div>
|
|
34
|
+
|
|
35
|
+
{% include "rest_framework/docs/auth/token.html" %}
|
|
36
|
+
{% include "rest_framework/docs/auth/basic.html" %}
|
|
37
|
+
{% include "rest_framework/docs/auth/session.html" %}
|
|
38
|
+
|
|
39
|
+
<script src="{% static 'rest_framework/js/jquery-3.5.1.min.js' %}"></script>
|
|
40
|
+
<script src="{% static 'rest_framework/js/bootstrap.bundle.min.js' %}"></script>
|
|
41
|
+
<script src="{% static 'rest_framework/docs/js/jquery.json-view.min.js' %}"></script>
|
|
42
|
+
<script src="{% static 'rest_framework/docs/js/api.js' %}"></script>
|
|
43
|
+
<script>
|
|
44
|
+
{% if user.is_authenticated %}
|
|
45
|
+
window.auth = {
|
|
46
|
+
'type': 'session',
|
|
47
|
+
};
|
|
48
|
+
$('#selected-authentication').text('session');
|
|
49
|
+
$('#auth-control').children().removeClass('active');
|
|
50
|
+
$('#auth-control').find("[data-auth='session']").closest('li').addClass('active');
|
|
51
|
+
{% endif %}
|
|
52
|
+
$('pre.highlight').filter('[data-language="{{ langs | first }}"]').removeClass('d-none');
|
|
53
|
+
</script>
|
|
54
|
+
</body>
|
|
55
|
+
</html>
|