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,51 @@
|
|
|
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
|
+
{% if user.is_authenticated %}
|
|
8
|
+
{% include "account/snippets/already_logged_in.html" %}
|
|
9
|
+
{% endif %}
|
|
10
|
+
<h1 class="card-title">{% translate "Password Reset" %}</h1>
|
|
11
|
+
|
|
12
|
+
<div class="card-text p-3">
|
|
13
|
+
|
|
14
|
+
<p>{% trans "Forgotten your password? Enter your e-mail address below, and we'll send you an e-mail allowing you to reset it." %}</p>
|
|
15
|
+
|
|
16
|
+
<div class="container form-group px-0">
|
|
17
|
+
|
|
18
|
+
{% include "messages.html" %}
|
|
19
|
+
<form method="post">
|
|
20
|
+
{% csrf_token %}
|
|
21
|
+
{% for error in form.non_field_errors %}
|
|
22
|
+
<div class="alert alert-danger mt-1 p-1">
|
|
23
|
+
<strong>{{ error|escape }}</strong>
|
|
24
|
+
</div>
|
|
25
|
+
{% endfor %}
|
|
26
|
+
{% for field in form %}
|
|
27
|
+
<div {% if field.is_hidden %}style="display: none"{% else %}class="row align-items-center d-flex justify-content-between mb-2"{% endif %}>
|
|
28
|
+
<div class="col-6">
|
|
29
|
+
{% render_field field class="form-control" %}
|
|
30
|
+
{% for error in field.errors %}
|
|
31
|
+
<div class="alert alert-danger mt-1 p-1">
|
|
32
|
+
<strong>{{ error|escape }}</strong>
|
|
33
|
+
</div>
|
|
34
|
+
{% endfor %}
|
|
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 "Reset Password" %}
|
|
42
|
+
</button>
|
|
43
|
+
</div>
|
|
44
|
+
</form>
|
|
45
|
+
</div>
|
|
46
|
+
<br/>
|
|
47
|
+
<p>{% blocktrans %}Please contact us if you have any trouble resetting your password.{% endblocktrans %}</p>
|
|
48
|
+
</div>
|
|
49
|
+
</div>
|
|
50
|
+
</div>
|
|
51
|
+
{% endblock %}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{% extends "account/base.html" %}
|
|
2
|
+
{% load i18n account %}
|
|
3
|
+
|
|
4
|
+
{% block head_title %}{% trans "Password Reset" %}{% endblock %}
|
|
5
|
+
|
|
6
|
+
{% block page_content %}
|
|
7
|
+
<div class="card slm-account-card" style="min-width: 75%">
|
|
8
|
+
<div class="card-body bg-light p-5">
|
|
9
|
+
{% if user.is_authenticated %}
|
|
10
|
+
{% include "account/snippets/already_logged_in.html" %}
|
|
11
|
+
{% endif %}
|
|
12
|
+
<h1 class="card-title">{% translate "Password Reset" %}</h1>
|
|
13
|
+
|
|
14
|
+
<div class="card-text p-3">
|
|
15
|
+
{% include "messages.html" %}
|
|
16
|
+
<p>{% blocktrans %}We have sent you an e-mail. If you have not received it please check your spam folder. Otherwise contact us if you do not receive it in a few minutes.{% endblocktrans %}</p>
|
|
17
|
+
</div>
|
|
18
|
+
</div>
|
|
19
|
+
</div>
|
|
20
|
+
{% endblock %}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
{% extends "account/base.html" %}
|
|
2
|
+
|
|
3
|
+
{% load i18n widget_tweaks %}
|
|
4
|
+
|
|
5
|
+
{% block page_content %}
|
|
6
|
+
|
|
7
|
+
<div class="card slm-account-card" style="min-width: 75%">
|
|
8
|
+
<div class="card-body bg-light p-5">
|
|
9
|
+
|
|
10
|
+
{% if token_fail %}
|
|
11
|
+
<h1 class="card-title">{% if token_fail %}{% trans "Bad Token" %}{% endif %}</h1>
|
|
12
|
+
<div class="card-text">
|
|
13
|
+
{% include "messages.html" %}
|
|
14
|
+
{% url 'account_reset_password' as passwd_reset_url %}
|
|
15
|
+
<p>{% blocktrans %}The password reset link was invalid, possibly because it has already been used. Please request a <a href="{{ passwd_reset_url }}">new password reset</a>.{% endblocktrans %}</p>
|
|
16
|
+
</div>
|
|
17
|
+
{% else %}
|
|
18
|
+
<h1 class="card-title">{% translate "Change Password" %}</h1>
|
|
19
|
+
<div class="card-text">
|
|
20
|
+
|
|
21
|
+
{% include "messages.html" %}
|
|
22
|
+
<form method="post">
|
|
23
|
+
{% csrf_token %}
|
|
24
|
+
{% for error in form.non_field_errors %}
|
|
25
|
+
<div class="alert alert-danger mt-1 p-1">
|
|
26
|
+
<strong>{{ error|escape }}</strong>
|
|
27
|
+
</div>
|
|
28
|
+
{% endfor %}
|
|
29
|
+
{% for field in form %}
|
|
30
|
+
<div {% if field.is_hidden %}style="display: none"{% else %}class="row align-items-center d-flex justify-content-between mb-2"{% endif %}>
|
|
31
|
+
<div class="col-6">
|
|
32
|
+
{% render_field field class="form-control" %}
|
|
33
|
+
{% for error in field.errors %}
|
|
34
|
+
<div class="alert alert-danger mt-1 p-1">
|
|
35
|
+
<strong>{{ error|escape }}</strong>
|
|
36
|
+
</div>
|
|
37
|
+
{% endfor %}
|
|
38
|
+
</div>
|
|
39
|
+
</div>
|
|
40
|
+
{% endfor %}
|
|
41
|
+
|
|
42
|
+
<div id="update" class="d-grid gap-2 d-flex justify-content-between">
|
|
43
|
+
<button type='submit' name='update' class="btn btn-success">
|
|
44
|
+
{% translate "Change Password" %}
|
|
45
|
+
</button>
|
|
46
|
+
</div>
|
|
47
|
+
</form>
|
|
48
|
+
</div>
|
|
49
|
+
{% endif %}
|
|
50
|
+
</div>
|
|
51
|
+
</div>
|
|
52
|
+
{% endblock %}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{% extends "account/base.html" %}
|
|
2
|
+
|
|
3
|
+
{% load i18n %}
|
|
4
|
+
|
|
5
|
+
{% block content %}
|
|
6
|
+
|
|
7
|
+
<div class="card slm-account-card" style="min-width: 75%">
|
|
8
|
+
<div class="card-body bg-light p-5">
|
|
9
|
+
<div class="card-text mb-5">
|
|
10
|
+
{% include "messages.html" %}
|
|
11
|
+
<div class="mt-5 mb-4 pb-3 border-bottom">
|
|
12
|
+
<p>{% trans 'Your password is now changed. Please ' %}<a href="{% url 'account_login' %}">{% trans 'login' %}.</a></p>
|
|
13
|
+
</div>
|
|
14
|
+
</div>
|
|
15
|
+
</div>
|
|
16
|
+
</div>
|
|
17
|
+
{% endblock %}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
{% if messages %}
|
|
2
|
+
{% for message in messages %}
|
|
3
|
+
<div class="alert alert-warning alert-dismissible fade show" role="alert">
|
|
4
|
+
<strong>{{ message }}</strong>
|
|
5
|
+
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
|
|
6
|
+
</div>
|
|
7
|
+
{% endfor%}
|
|
8
|
+
{% endif %}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
django rest frameworks builtin theming uses bootstrap3 which was end-of-lifed in 2019.
|
|
2
|
+
To use the SLM filter theming which uses bootstrap5 template packs we had to replace
|
|
3
|
+
the default rest framework themes with the latest bootstrap5 port from
|
|
4
|
+
https://github.com/encode/django-rest-framework/pull/7411
|
|
5
|
+
|
|
6
|
+
The above PR has stalled, but presumably it will eventually be integrated. When it is,
|
|
7
|
+
these files should be removed. There are a few exceptions though:
|
|
8
|
+
|
|
9
|
+
* base.html was modified to include jquery and slm css/javascript static files necessary for
|
|
10
|
+
form components to render correctly
|
|
11
|
+
* base.html had the page name and branding updated to SLM API and IGS branding
|
|
12
|
+
|
|
13
|
+
* filters/base.html needs the ui-front class added to the modal-body classed element so the
|
|
14
|
+
autocomplete drop downs will work inside of the bootstrap modal.
|
|
15
|
+
|
|
16
|
+
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{% load rest_framework %}
|
|
2
|
+
<table class="table table-striped">
|
|
3
|
+
<tbody>
|
|
4
|
+
{% for key, value in results|items %}
|
|
5
|
+
{% if key in details %}
|
|
6
|
+
<tr><th>{{ key|capfirst }}</th><td {{ value|add_nested_class }}>{{ value|format_value }}</td></tr>
|
|
7
|
+
{% endif %}
|
|
8
|
+
{% endfor %}
|
|
9
|
+
</tbody>
|
|
10
|
+
</table>
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
{% load rest_framework %}
|
|
2
|
+
<table class="table table-striped">
|
|
3
|
+
<thead>
|
|
4
|
+
<tr>{% for column in columns%}<th>{{ column|capfirst }}</th>{% endfor %}<th class="col-xs-1"></th></tr>
|
|
5
|
+
</thead>
|
|
6
|
+
<tbody>
|
|
7
|
+
{% for row in results %}
|
|
8
|
+
<tr>
|
|
9
|
+
{% for key, value in row|items %}
|
|
10
|
+
{% if key in columns %}
|
|
11
|
+
<td {{ value|add_nested_class }} >
|
|
12
|
+
{{ value|format_value }}
|
|
13
|
+
</td>
|
|
14
|
+
{% endif %}
|
|
15
|
+
{% endfor %}
|
|
16
|
+
<td>
|
|
17
|
+
{% if row.url %}
|
|
18
|
+
<a href="{{ row.url }}">
|
|
19
|
+
<svg width="1em" height="1em" viewBox="0 0 16 16" class="bi bi-chevron-right" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
|
|
20
|
+
<path fill-rule="evenodd" d="M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z"/>
|
|
21
|
+
</svg>
|
|
22
|
+
</a>
|
|
23
|
+
{% else %}
|
|
24
|
+
<svg width="1em" height="1em" viewBox="0 0 16 16" class="bi bi-chevron-right" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
|
|
25
|
+
<path fill-rule="evenodd" d="M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z"/>
|
|
26
|
+
</svg>
|
|
27
|
+
{% endif %}
|
|
28
|
+
</td>
|
|
29
|
+
</tr>
|
|
30
|
+
{% endfor %}
|
|
31
|
+
</tbody>
|
|
32
|
+
</table>
|
|
@@ -0,0 +1,282 @@
|
|
|
1
|
+
{% load static %}
|
|
2
|
+
{% load i18n %}
|
|
3
|
+
{% load rest_framework %}
|
|
4
|
+
|
|
5
|
+
<!DOCTYPE html>
|
|
6
|
+
<html>
|
|
7
|
+
<head>
|
|
8
|
+
{% block head %}
|
|
9
|
+
|
|
10
|
+
{% block meta %}
|
|
11
|
+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
|
|
12
|
+
<meta name="robots" content="NONE,NOARCHIVE" />
|
|
13
|
+
{% endblock %}
|
|
14
|
+
|
|
15
|
+
<title>{% block title %}Django REST framework{% endblock %}</title>
|
|
16
|
+
|
|
17
|
+
{% block style %}
|
|
18
|
+
{% block bootstrap_theme %}
|
|
19
|
+
<link rel="stylesheet" type="text/css" href="{% static "rest_framework/css/bootstrap.min.css" %}"/>
|
|
20
|
+
<link rel="stylesheet" type="text/css" href="{% static "rest_framework/css/bootstrap-tweaks.css" %}"/>
|
|
21
|
+
{% endblock %}
|
|
22
|
+
<link rel="stylesheet" type="text/css" href="{% static "rest_framework/css/prettify.css" %}"/>
|
|
23
|
+
<link rel="stylesheet" type="text/css" href="{% static "rest_framework/css/default.css" %}"/>
|
|
24
|
+
{% endblock %}
|
|
25
|
+
|
|
26
|
+
{% endblock %}
|
|
27
|
+
</head>
|
|
28
|
+
|
|
29
|
+
{% block body %}
|
|
30
|
+
<body class="{% block bodyclass %}{% endblock %}">
|
|
31
|
+
|
|
32
|
+
<div class="wrapper">
|
|
33
|
+
{% block navbar %}
|
|
34
|
+
<div class="navbar navbar-expand-md fixed-top {% block bootstrap_navbar_variant %}navbar-dark{% endblock %}"
|
|
35
|
+
role="navigation" aria-label="{% trans "navbar" %}">
|
|
36
|
+
<div class="container">
|
|
37
|
+
{% block branding %}
|
|
38
|
+
<a class='navbar-brand' rel="nofollow" href='https://www.django-rest-framework.org/'>
|
|
39
|
+
Django REST framework
|
|
40
|
+
</a>
|
|
41
|
+
{% endblock %}
|
|
42
|
+
<ul class="navbar-nav">
|
|
43
|
+
{% block userlinks %}
|
|
44
|
+
{% if user.is_authenticated %}
|
|
45
|
+
{% optional_logout request user csrf_token %}
|
|
46
|
+
{% else %}
|
|
47
|
+
{% optional_login request %}
|
|
48
|
+
{% endif %}
|
|
49
|
+
{% endblock %}
|
|
50
|
+
</ul>
|
|
51
|
+
</div>
|
|
52
|
+
</div>
|
|
53
|
+
{% endblock %}
|
|
54
|
+
|
|
55
|
+
<div class="container">
|
|
56
|
+
{% block breadcrumbs %}
|
|
57
|
+
<ul class="breadcrumb">
|
|
58
|
+
{% for breadcrumb_name, breadcrumb_url in breadcrumblist %}
|
|
59
|
+
{% if forloop.last %}
|
|
60
|
+
<li class="breadcrumb-item active"><a href="{{ breadcrumb_url }}">{{ breadcrumb_name }}</a></li>
|
|
61
|
+
{% else %}
|
|
62
|
+
<li class="breadcrumb-item"><a href="{{ breadcrumb_url }}">{{ breadcrumb_name }}</a></li>
|
|
63
|
+
{% endif %}
|
|
64
|
+
{% empty %}
|
|
65
|
+
{% block breadcrumbs_empty %} {% endblock breadcrumbs_empty %}
|
|
66
|
+
{% endfor %}
|
|
67
|
+
</ul>
|
|
68
|
+
{% endblock %}
|
|
69
|
+
|
|
70
|
+
<!-- Content -->
|
|
71
|
+
<div id="content">
|
|
72
|
+
{% if 'GET' in allowed_methods %}
|
|
73
|
+
<form id="get-form" class="float-end">
|
|
74
|
+
<fieldset>
|
|
75
|
+
<div class="dropdown format-selection">
|
|
76
|
+
<button class="btn btn-primary dropdown-toggle" data-bs-toggle="dropdown">
|
|
77
|
+
Format
|
|
78
|
+
</button>
|
|
79
|
+
<ul class="dropdown-menu">
|
|
80
|
+
{% for format in available_formats %}
|
|
81
|
+
<li>
|
|
82
|
+
<a class="dropdown-item"
|
|
83
|
+
href='{% add_query_param request api_settings.URL_FORMAT_OVERRIDE format %}'
|
|
84
|
+
rel="nofollow">
|
|
85
|
+
{{ format }}
|
|
86
|
+
</a>
|
|
87
|
+
</li>
|
|
88
|
+
{% endfor %}
|
|
89
|
+
</ul>
|
|
90
|
+
</div>
|
|
91
|
+
</fieldset>
|
|
92
|
+
</form>
|
|
93
|
+
{% endif %}
|
|
94
|
+
|
|
95
|
+
{% if post_form %}
|
|
96
|
+
<button type="button" class="button-form btn btn-primary" data-bs-toggle="modal" data-bs-target="#createModal">
|
|
97
|
+
<svg width="1em" height="1em" viewBox="0 0 16 16" class="bi bi-file-plus mb-1" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
|
|
98
|
+
<path fill-rule="evenodd" d="M4 1h8a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2zm0 1a1 1 0 0 0-1 1v10a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1H4z"/>
|
|
99
|
+
<path fill-rule="evenodd" d="M8 5.5a.5.5 0 0 1 .5.5v1.5H10a.5.5 0 0 1 0 1H8.5V10a.5.5 0 0 1-1 0V8.5H6a.5.5 0 0 1 0-1h1.5V6a.5.5 0 0 1 .5-.5z"/>
|
|
100
|
+
</svg>
|
|
101
|
+
Create
|
|
102
|
+
</button>
|
|
103
|
+
{% endif %}
|
|
104
|
+
|
|
105
|
+
{% if put_form %}
|
|
106
|
+
<button type="button" class="button-form btn btn-primary" data-bs-toggle="modal" data-bs-target="#editModal">
|
|
107
|
+
<svg width="1em" height="1em" viewBox="0 0 16 16" class="bi bi-pencil mb-1" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
|
|
108
|
+
<path fill-rule="evenodd" d="M11.293 1.293a1 1 0 0 1 1.414 0l2 2a1 1 0 0 1 0 1.414l-9 9a1 1 0 0 1-.39.242l-3 1a1 1 0 0 1-1.266-1.265l1-3a1 1 0 0 1 .242-.391l9-9zM12 2l2 2-9 9-3 1 1-3 9-9z"/>
|
|
109
|
+
<path fill-rule="evenodd" d="M12.146 6.354l-2.5-2.5.708-.708 2.5 2.5-.707.708zM3 10v.5a.5.5 0 0 0 .5.5H4v.5a.5.5 0 0 0 .5.5H5v.5a.5.5 0 0 0 .5.5H6v-1.5a.5.5 0 0 0-.5-.5H5v-.5a.5.5 0 0 0-.5-.5H3z"/>
|
|
110
|
+
</svg>
|
|
111
|
+
Edit
|
|
112
|
+
</button>
|
|
113
|
+
{% endif %}
|
|
114
|
+
|
|
115
|
+
{% if delete_form %}
|
|
116
|
+
<form class="button-form" action="{{ request.get_full_path }}" data-method="DELETE">
|
|
117
|
+
<button class="btn btn-danger">
|
|
118
|
+
<svg width="1em" height="1em" viewBox="0 0 16 16" class="bi bi-file-minus mb-1" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
|
|
119
|
+
<path fill-rule="evenodd" d="M4 1h8a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2zm0 1a1 1 0 0 0-1 1v10a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1H4z"/>
|
|
120
|
+
<path fill-rule="evenodd" d="M5.5 8a.5.5 0 0 1 .5-.5h4a.5.5 0 0 1 0 1H6a.5.5 0 0 1-.5-.5z"/>
|
|
121
|
+
</svg>
|
|
122
|
+
Delete
|
|
123
|
+
</button>
|
|
124
|
+
</form>
|
|
125
|
+
{% endif %}
|
|
126
|
+
|
|
127
|
+
{% if extra_actions %}
|
|
128
|
+
<div class="dropdown" style="float: right; margin-right: 10px">
|
|
129
|
+
<button class="btn btn-info dropdown-toggle" id="extra-actions-menu" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="true">
|
|
130
|
+
{% trans "Extra Actions" %}
|
|
131
|
+
</button>
|
|
132
|
+
<ul class="dropdown-menu" aria-labelledby="extra-actions-menu">
|
|
133
|
+
{% for action_name, url in extra_actions|items %}
|
|
134
|
+
<li><a class="dropdown-item" href="{{ url }}">{{ action_name }}</a></li>
|
|
135
|
+
{% endfor %}
|
|
136
|
+
</ul>
|
|
137
|
+
</div>
|
|
138
|
+
{% endif %}
|
|
139
|
+
|
|
140
|
+
{% if filter_form %}
|
|
141
|
+
<button data-bs-toggle="modal" data-bs-target="#filtersModal" class="btn btn-outline-secondary button-form">
|
|
142
|
+
<svg width="1em" height="1em" viewBox="0 0 16 16" class="bi bi-wrench mb-1" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
|
|
143
|
+
<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"/>
|
|
144
|
+
</svg>
|
|
145
|
+
{% trans "Filters" %}
|
|
146
|
+
</button>
|
|
147
|
+
{% endif %}
|
|
148
|
+
|
|
149
|
+
<div class="content-main">
|
|
150
|
+
<div class="page-header mt-3">
|
|
151
|
+
<h1>{{ name }}</h1>
|
|
152
|
+
</div>
|
|
153
|
+
|
|
154
|
+
<div style="float:left">
|
|
155
|
+
{% block description %}
|
|
156
|
+
{{ description }}
|
|
157
|
+
{% endblock %}
|
|
158
|
+
</div>
|
|
159
|
+
|
|
160
|
+
{% if paginator %}
|
|
161
|
+
<nav style="float: right">
|
|
162
|
+
{% get_pagination_html paginator %}
|
|
163
|
+
</nav>
|
|
164
|
+
{% endif %}
|
|
165
|
+
|
|
166
|
+
<div class="request-info" style="clear: both" >
|
|
167
|
+
{% if style == 'list' %}
|
|
168
|
+
{% include "rest_framework/admin/list.html" %}
|
|
169
|
+
{% else %}
|
|
170
|
+
{% include "rest_framework/admin/detail.html" %}
|
|
171
|
+
{% endif %}
|
|
172
|
+
</div>
|
|
173
|
+
|
|
174
|
+
{% if paginator %}
|
|
175
|
+
<nav style="float: right">
|
|
176
|
+
{% get_pagination_html paginator %}
|
|
177
|
+
</nav>
|
|
178
|
+
{% endif %}
|
|
179
|
+
</div>
|
|
180
|
+
</div>
|
|
181
|
+
<!-- END Content -->
|
|
182
|
+
</div><!-- /.container -->
|
|
183
|
+
</div><!-- ./wrapper -->
|
|
184
|
+
|
|
185
|
+
<!-- Create Modal -->
|
|
186
|
+
<div class="modal fade" id="createModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
|
|
187
|
+
<div class="modal-dialog">
|
|
188
|
+
<div class="modal-content">
|
|
189
|
+
<div class="modal-header">
|
|
190
|
+
<h4 class="modal-title" id="myModalLabel">Create</h4>
|
|
191
|
+
<button type="button" class="close" data-bs-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
|
|
192
|
+
</div>
|
|
193
|
+
<form action="{{ request.get_full_path }}" method="POST" enctype="multipart/form-data" class="form-horizontal" novalidate>
|
|
194
|
+
<div class="modal-body">
|
|
195
|
+
<fieldset>
|
|
196
|
+
{% csrf_token %}
|
|
197
|
+
{{ post_form }}
|
|
198
|
+
</fieldset>
|
|
199
|
+
</div>
|
|
200
|
+
<div class="modal-footer">
|
|
201
|
+
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
|
|
202
|
+
<button type="submit" class="btn btn-primary">Save</button>
|
|
203
|
+
</div>
|
|
204
|
+
</form>
|
|
205
|
+
</div>
|
|
206
|
+
</div>
|
|
207
|
+
</div>
|
|
208
|
+
|
|
209
|
+
<!-- Edit Modal -->
|
|
210
|
+
<div class="modal fade" id="editModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
|
|
211
|
+
<div class="modal-dialog">
|
|
212
|
+
<div class="modal-content">
|
|
213
|
+
<div class="modal-header">
|
|
214
|
+
<h4 class="modal-title" id="myModalLabel">Edit</h4>
|
|
215
|
+
<button type="button" class="close" data-bs-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
|
|
216
|
+
</div>
|
|
217
|
+
<form action="{{ request.get_full_path }}" data-method="PUT" enctype="multipart/form-data" class="form-horizontal" novalidate>
|
|
218
|
+
<div class="modal-body">
|
|
219
|
+
<fieldset>
|
|
220
|
+
{{ put_form }}
|
|
221
|
+
</fieldset>
|
|
222
|
+
</div>
|
|
223
|
+
<div class="modal-footer">
|
|
224
|
+
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
|
|
225
|
+
<button type="submit" class="btn btn-primary">Save</button>
|
|
226
|
+
</div>
|
|
227
|
+
</form>
|
|
228
|
+
</div>
|
|
229
|
+
</div>
|
|
230
|
+
</div>
|
|
231
|
+
|
|
232
|
+
{% if error_form %}
|
|
233
|
+
<!-- Errors Modal -->
|
|
234
|
+
<div class="modal" id="errorModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
|
|
235
|
+
<div class="modal-dialog">
|
|
236
|
+
<div class="modal-content">
|
|
237
|
+
<div class="modal-header">
|
|
238
|
+
<h4 class="modal-title" id="myModalLabel">{{ error_title }}</h4>
|
|
239
|
+
<button type="button" class="close" data-bs-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
|
|
240
|
+
</div>
|
|
241
|
+
<form action="{{ request.get_full_path }}" data-method="{{ request.method }}" enctype="multipart/form-data" class="form-horizontal" novalidate>
|
|
242
|
+
<div class="modal-body">
|
|
243
|
+
<fieldset>
|
|
244
|
+
{{ error_form }}
|
|
245
|
+
</fieldset>
|
|
246
|
+
</div>
|
|
247
|
+
<div class="modal-footer">
|
|
248
|
+
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
|
|
249
|
+
<button type="submit" class="btn btn-primary">Save</button>
|
|
250
|
+
</div>
|
|
251
|
+
</form>
|
|
252
|
+
</div>
|
|
253
|
+
</div>
|
|
254
|
+
</div>
|
|
255
|
+
{% endif %}
|
|
256
|
+
|
|
257
|
+
{% if filter_form %}
|
|
258
|
+
{{ filter_form }}
|
|
259
|
+
{% endif %}
|
|
260
|
+
|
|
261
|
+
{% block script %}
|
|
262
|
+
<script>
|
|
263
|
+
window.drf = {
|
|
264
|
+
csrfHeaderName: "{{ csrf_header_name|default:'X-CSRFToken' }}",
|
|
265
|
+
csrfToken: "{{ csrf_token }}"
|
|
266
|
+
};
|
|
267
|
+
</script>
|
|
268
|
+
<script src="{% static "rest_framework/js/jquery-3.5.1.min.js" %}"></script>
|
|
269
|
+
<script src="{% static "rest_framework/js/ajax-form.js" %}"></script>
|
|
270
|
+
<script src="{% static "rest_framework/js/csrf.js" %}"></script>
|
|
271
|
+
<script src="{% static "rest_framework/js/bootstrap.bundle.min.js" %}"></script>
|
|
272
|
+
<script src="{% static "rest_framework/js/prettify-min.js" %}"></script>
|
|
273
|
+
<script src="{% static "rest_framework/js/default.js" %}"></script>
|
|
274
|
+
<script>
|
|
275
|
+
$(document).ready(function() {
|
|
276
|
+
$('form').ajaxForm();
|
|
277
|
+
});
|
|
278
|
+
</script>
|
|
279
|
+
{% endblock %}
|
|
280
|
+
</body>
|
|
281
|
+
{% endblock %}
|
|
282
|
+
</html>
|