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
slm/signals.py
ADDED
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
"""
|
|
2
|
+
All SLM specific signals sent by the system are defined here. These signals
|
|
3
|
+
mostly include events relating to the site log edit/moderate/publish lifecycle.
|
|
4
|
+
|
|
5
|
+
All signals contain a request object that holds the request that initiated the
|
|
6
|
+
event. This object is provided mostly for logging purposes and is not
|
|
7
|
+
guaranteed to be non-null.
|
|
8
|
+
"""
|
|
9
|
+
|
|
10
|
+
import sys
|
|
11
|
+
|
|
12
|
+
from django.dispatch import Signal
|
|
13
|
+
from django.utils.module_loading import import_string
|
|
14
|
+
|
|
15
|
+
"""
|
|
16
|
+
Signal sent when a new site is proposed.
|
|
17
|
+
|
|
18
|
+
:param sender: The sending object (unreliable).
|
|
19
|
+
:param site: The Site object.
|
|
20
|
+
:param user: The user that proposed the new site.
|
|
21
|
+
:param timestamp: The time the request was received
|
|
22
|
+
:param request: The Django request object that initiated the proposal.
|
|
23
|
+
:param agencies: The Agencies identified by the requester as the
|
|
24
|
+
responsible agencies.
|
|
25
|
+
:param kwargs: Misc other key word arguments
|
|
26
|
+
"""
|
|
27
|
+
site_proposed = Signal()
|
|
28
|
+
|
|
29
|
+
"""
|
|
30
|
+
Sent when a site log is published, or when a section of a site log is
|
|
31
|
+
published.
|
|
32
|
+
|
|
33
|
+
:param sender: The sending object (unreliable).
|
|
34
|
+
:param site: The Site object.
|
|
35
|
+
:param user: The user that published the site log.
|
|
36
|
+
:param timestamp: The time the site log was published.
|
|
37
|
+
:param request: The Django request object that initiated the publish.
|
|
38
|
+
:param section: None if the entire site log was published, if an individual
|
|
39
|
+
section was published this will be the Section object instance.
|
|
40
|
+
:param kwargs: Misc other key word arguments
|
|
41
|
+
"""
|
|
42
|
+
site_published = Signal()
|
|
43
|
+
|
|
44
|
+
"""
|
|
45
|
+
Sent when a site log is published, or when a section of a site log is
|
|
46
|
+
published. Its possible that both the previous and new status states are
|
|
47
|
+
Published. If this happens a site log was edited and published simultaneously.
|
|
48
|
+
The published timestamp will have increased.
|
|
49
|
+
|
|
50
|
+
:param sender: The sending object (unreliable).
|
|
51
|
+
:param site: The Site object.
|
|
52
|
+
:param previous_status: The previous status
|
|
53
|
+
:param new_status: The new status
|
|
54
|
+
:param kwargs: Misc other key word arguments
|
|
55
|
+
"""
|
|
56
|
+
site_status_changed = Signal()
|
|
57
|
+
|
|
58
|
+
"""
|
|
59
|
+
Sent when a site log section is edited.
|
|
60
|
+
|
|
61
|
+
:param sender: The sending object (unreliable).
|
|
62
|
+
:param site: The Site object.
|
|
63
|
+
:param user: The user that edited the site log section.
|
|
64
|
+
:param timestamp: The time the site log section was edited.
|
|
65
|
+
:param request: The Django request object that contained the edit.
|
|
66
|
+
:param section: The section object that was edited.
|
|
67
|
+
:param fields: The list of edited fields
|
|
68
|
+
:param kwargs: Misc other key word arguments
|
|
69
|
+
"""
|
|
70
|
+
section_edited = Signal()
|
|
71
|
+
|
|
72
|
+
"""
|
|
73
|
+
Sent when a site log section is added.
|
|
74
|
+
|
|
75
|
+
:param sender: The sending object (unreliable).
|
|
76
|
+
:param site: The Site object.
|
|
77
|
+
:param user: The user that added the site log section.
|
|
78
|
+
:param timestamp: The time the site log section was added.
|
|
79
|
+
:param request: The Django request object that contained the add.
|
|
80
|
+
:param section: The section object that was added.
|
|
81
|
+
:param kwargs: Misc other key word arguments
|
|
82
|
+
"""
|
|
83
|
+
section_added = Signal()
|
|
84
|
+
|
|
85
|
+
"""
|
|
86
|
+
Sent when a site log section is deleted.
|
|
87
|
+
|
|
88
|
+
:param sender: The sending object (unreliable).
|
|
89
|
+
:param site: The Site object.
|
|
90
|
+
:param user: The user that deleted the site log section.
|
|
91
|
+
:param timestamp: The time the site log section was deleted.
|
|
92
|
+
:param request: The Django request object that contained the delete.
|
|
93
|
+
:param section: The section object that was deleted.
|
|
94
|
+
:param kwargs: Misc other key word arguments
|
|
95
|
+
"""
|
|
96
|
+
section_deleted = Signal()
|
|
97
|
+
|
|
98
|
+
"""
|
|
99
|
+
Sent when a site log section has fields flagged.
|
|
100
|
+
|
|
101
|
+
:param sender: The sending object (unreliable).
|
|
102
|
+
:param site: The Site object.
|
|
103
|
+
:param user: The user that added the flags or performed the action that caused
|
|
104
|
+
the flags to be added.
|
|
105
|
+
:param timestamp: The time the site log section was flagged.
|
|
106
|
+
:param request: The Django request object that added or triggered the flags.
|
|
107
|
+
:param section: The section object concerned.
|
|
108
|
+
:param fields: The list of fields that were flagged.
|
|
109
|
+
:param kwargs: Misc other key word arguments
|
|
110
|
+
"""
|
|
111
|
+
fields_flagged = Signal()
|
|
112
|
+
|
|
113
|
+
"""
|
|
114
|
+
Sent when a site log section has fields flagged.
|
|
115
|
+
|
|
116
|
+
:param sender: The sending object (unreliable).
|
|
117
|
+
:param site: The Site object.
|
|
118
|
+
:param user: The user that removed the flags or performed the action that
|
|
119
|
+
caused the flags to be removed.
|
|
120
|
+
:param timestamp: The time the site log section was flagged.
|
|
121
|
+
:param request: The Django request object that removed or triggered the flags
|
|
122
|
+
to be cleared.
|
|
123
|
+
:param section: The section object concerned.
|
|
124
|
+
:param fields: The list of fields that were cleared of flags.
|
|
125
|
+
:param clear: True if the section has no remaining flags - false otherwise.
|
|
126
|
+
:param kwargs: Misc other key word arguments
|
|
127
|
+
"""
|
|
128
|
+
flags_cleared = Signal()
|
|
129
|
+
|
|
130
|
+
"""
|
|
131
|
+
Sent when a user uploads a site log.
|
|
132
|
+
|
|
133
|
+
:param sender: The sending object (unreliable).
|
|
134
|
+
:param site: The Site object.
|
|
135
|
+
:param user: The user that uploaded the site log.
|
|
136
|
+
:param timestamp: The time the site log was uploaded.
|
|
137
|
+
:param request: The Django request object that contained the upload.
|
|
138
|
+
:param upload: The uploaded file (SiteFileUpload).
|
|
139
|
+
:param kwargs: Misc other key word arguments
|
|
140
|
+
"""
|
|
141
|
+
site_file_uploaded = Signal()
|
|
142
|
+
|
|
143
|
+
"""
|
|
144
|
+
Sent when a moderator publishes a site file upload - could be an attachment or
|
|
145
|
+
an image.
|
|
146
|
+
|
|
147
|
+
:param sender: The sending object (unreliable).
|
|
148
|
+
:param site: The Site object.
|
|
149
|
+
:param user: The user that published the file.
|
|
150
|
+
:param timestamp: The time the file was published.
|
|
151
|
+
:param request: The Django request object that contained the upload.
|
|
152
|
+
:param upload: The uploaded file (SiteFileUpload).
|
|
153
|
+
:param kwargs: Misc other key word arguments
|
|
154
|
+
"""
|
|
155
|
+
site_file_published = Signal()
|
|
156
|
+
|
|
157
|
+
|
|
158
|
+
"""
|
|
159
|
+
Sent when a moderator unpublishes a site file upload - could be an attachment
|
|
160
|
+
or an image.
|
|
161
|
+
|
|
162
|
+
:param sender: The sending object (unreliable).
|
|
163
|
+
:param site: The Site object.
|
|
164
|
+
:param user: The user that unpublished the file.
|
|
165
|
+
:param timestamp: The time the file was unpublished.
|
|
166
|
+
:param request: The Django request object that contained the upload.
|
|
167
|
+
:param upload: The uploaded file (SiteFileUpload).
|
|
168
|
+
:param kwargs: Misc other key word arguments
|
|
169
|
+
"""
|
|
170
|
+
site_file_unpublished = Signal()
|
|
171
|
+
|
|
172
|
+
|
|
173
|
+
"""
|
|
174
|
+
Sent when a user deletes a site file upload through the API. The file must be
|
|
175
|
+
a type other than a site log - could be an attachment or an image.
|
|
176
|
+
|
|
177
|
+
:param sender: The sending object (unreliable).
|
|
178
|
+
:param site: The Site object.
|
|
179
|
+
:param user: The user that deleted the file.
|
|
180
|
+
:param timestamp: The time the file was deleted.
|
|
181
|
+
:param request: The Django request object that contained the upload.
|
|
182
|
+
:param upload: The uploaded file (SiteFileUpload).
|
|
183
|
+
:param kwargs: Misc other key word arguments
|
|
184
|
+
"""
|
|
185
|
+
site_file_deleted = Signal()
|
|
186
|
+
|
|
187
|
+
|
|
188
|
+
"""
|
|
189
|
+
Sent when a user requests a site log be reviewed and published by moderators.
|
|
190
|
+
|
|
191
|
+
:param sender: The sending object (unreliable).
|
|
192
|
+
:param site: The site the reviews were requested for.
|
|
193
|
+
:param detail: The user given reasons for requesting the update (if any).
|
|
194
|
+
:param request: The Django request object that contained the request.
|
|
195
|
+
:param kwargs: Misc other key word arguments
|
|
196
|
+
"""
|
|
197
|
+
review_requested = Signal()
|
|
198
|
+
|
|
199
|
+
"""
|
|
200
|
+
Sent when a moderator rejects edits requested for publish in a review request.
|
|
201
|
+
|
|
202
|
+
:param sender: The sending object (unreliable).
|
|
203
|
+
:param site: The site the updates were rejected for.
|
|
204
|
+
:param detail: The user given reasons for rejecting the update (if any).
|
|
205
|
+
:param request: The Django request object that contained the rejection.
|
|
206
|
+
:param kwargs: Misc other key word arguments
|
|
207
|
+
"""
|
|
208
|
+
updates_rejected = Signal()
|
|
209
|
+
|
|
210
|
+
"""
|
|
211
|
+
Sent when an alert is issued.
|
|
212
|
+
|
|
213
|
+
:param sender: The sending object (unreliable).
|
|
214
|
+
:param alert: The alert object that was issued.
|
|
215
|
+
:param kwargs: Misc other key word arguments
|
|
216
|
+
"""
|
|
217
|
+
alert_issued = Signal()
|
|
218
|
+
|
|
219
|
+
"""
|
|
220
|
+
Sent when an alert is cleared.
|
|
221
|
+
|
|
222
|
+
:param sender: The sending object (unreliable).
|
|
223
|
+
:param alert: The alert object that was issued.
|
|
224
|
+
:param kwargs: Misc other key word arguments
|
|
225
|
+
"""
|
|
226
|
+
alert_cleared = Signal()
|
|
227
|
+
|
|
228
|
+
|
|
229
|
+
_signal_names_ = {
|
|
230
|
+
value: f"slm.signals.{key}"
|
|
231
|
+
for key, value in sys._getframe().f_globals.items()
|
|
232
|
+
if isinstance(value, Signal)
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
|
|
236
|
+
def signal_name(signal):
|
|
237
|
+
"""
|
|
238
|
+
Given a signal object - try to determine its name (import path). This is
|
|
239
|
+
not easy and prone to failure so don't use it for anything critical.
|
|
240
|
+
"""
|
|
241
|
+
if not isinstance(signal, Signal):
|
|
242
|
+
return signal
|
|
243
|
+
name = _signal_names_.get(signal, None)
|
|
244
|
+
if name:
|
|
245
|
+
return name
|
|
246
|
+
return {
|
|
247
|
+
value: f"{signal.__module__}.{key}"
|
|
248
|
+
for key, value in vars(import_string(signal.__module__)).items()
|
|
249
|
+
if isinstance(value, Signal)
|
|
250
|
+
}.get(signal, str(signal))
|
slm/singleton.py
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
from django.core.cache import cache
|
|
2
|
+
from django.db import models
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class _Singleton(type):
|
|
6
|
+
_instances = {}
|
|
7
|
+
|
|
8
|
+
def __call__(cls, *args, **kwargs):
|
|
9
|
+
if cls not in cls._instances:
|
|
10
|
+
cls._instances[cls] = super(_Singleton, cls).__call__(*args, **kwargs)
|
|
11
|
+
|
|
12
|
+
return cls._instances[cls]
|
|
13
|
+
|
|
14
|
+
@classmethod
|
|
15
|
+
def is_instantiated(cls, typ):
|
|
16
|
+
return typ in cls._instances
|
|
17
|
+
|
|
18
|
+
@classmethod
|
|
19
|
+
def destroy(cls, typ):
|
|
20
|
+
if typ in cls._instances:
|
|
21
|
+
del cls._instances[typ]
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
class Singleton(_Singleton("SingletonMeta", (object,), {})):
|
|
25
|
+
pass
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
class SingletonModel(models.Model):
|
|
29
|
+
class Meta:
|
|
30
|
+
abstract = True
|
|
31
|
+
|
|
32
|
+
def delete(self, *args, **kwargs):
|
|
33
|
+
pass
|
|
34
|
+
|
|
35
|
+
def save(self, *args, **kwargs):
|
|
36
|
+
self.pk = 1
|
|
37
|
+
super(SingletonModel, self).save(*args, **kwargs)
|
|
38
|
+
self.set_cache()
|
|
39
|
+
|
|
40
|
+
@classmethod
|
|
41
|
+
def load(cls):
|
|
42
|
+
if cache.get(cls.__name__) is None:
|
|
43
|
+
obj, created = cls.objects.get_or_create(pk=1)
|
|
44
|
+
if not created:
|
|
45
|
+
obj.set_cache()
|
|
46
|
+
return cache.get(cls.__name__)
|
|
47
|
+
|
|
48
|
+
def set_cache(self):
|
|
49
|
+
cache.set(self.__class__.__name__, self)
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
/*
|
|
2
|
+
|
|
3
|
+
This CSS file contains some tweaks specific to the included Bootstrap theme.
|
|
4
|
+
It's separate from `style.css` so that it can be easily overridden by replacing
|
|
5
|
+
a single block in the template.
|
|
6
|
+
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
.form-actions {
|
|
10
|
+
background: transparent;
|
|
11
|
+
border-top-color: transparent;
|
|
12
|
+
padding-top: 0;
|
|
13
|
+
text-align: right;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
#generic-content-form textarea {
|
|
17
|
+
font-family:Consolas,Monaco,Lucida Console,Liberation Mono,DejaVu Sans Mono,Bitstream Vera Sans Mono,Courier New, monospace;
|
|
18
|
+
font-size: 80%;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
.navbar-dark .navbar-brand {
|
|
22
|
+
color: #999999;
|
|
23
|
+
}
|
|
24
|
+
.navbar-inverse .navbar-brand:hover {
|
|
25
|
+
color: white;
|
|
26
|
+
text-decoration: none;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/* custom navigation styles */
|
|
30
|
+
.navbar {
|
|
31
|
+
width: 100%;
|
|
32
|
+
position: fixed;
|
|
33
|
+
left: 0;
|
|
34
|
+
top: 0;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
.navbar {
|
|
38
|
+
background: #2C2C2C;
|
|
39
|
+
color: white;
|
|
40
|
+
border: none;
|
|
41
|
+
border-top: 5px solid #A30000;
|
|
42
|
+
border-radius: 0px;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
.navbar .nav li, .navbar .nav li a, .navbar .brand:hover {
|
|
46
|
+
color: white;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
.nav-list > .active > a, .nav-list > .active > a:hover {
|
|
50
|
+
background: #2C2C2C;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
.navbar .dropdown-menu li a, .navbar .dropdown-menu li {
|
|
54
|
+
color: #A30000;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
.navbar .dropdown-menu li a:hover {
|
|
58
|
+
background: #EEEEEE;
|
|
59
|
+
color: #C20000;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
ul.breadcrumb {
|
|
63
|
+
margin: 70px 0 0 0;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
.breadcrumb li.active a {
|
|
67
|
+
color: #777;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
.pagination>.disabled>a,
|
|
71
|
+
.pagination>.disabled>a:hover,
|
|
72
|
+
.pagination>.disabled>a:focus {
|
|
73
|
+
cursor: not-allowed;
|
|
74
|
+
pointer-events: none;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
.pager>.disabled>a,
|
|
78
|
+
.pager>.disabled>a:hover,
|
|
79
|
+
.pager>.disabled>a:focus {
|
|
80
|
+
pointer-events: none;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
.pager .next {
|
|
84
|
+
margin-left: 10px;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
/*=== dabapps bootstrap styles ====*/
|
|
88
|
+
|
|
89
|
+
html {
|
|
90
|
+
width:100%;
|
|
91
|
+
background: none;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
/*body, .navbar .container-fluid {
|
|
95
|
+
max-width: 1150px;
|
|
96
|
+
margin: 0 auto;
|
|
97
|
+
}*/
|
|
98
|
+
|
|
99
|
+
body {
|
|
100
|
+
background: url("../img/grid.png") repeat-x;
|
|
101
|
+
background-attachment: fixed;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
#content {
|
|
105
|
+
margin: 0;
|
|
106
|
+
padding-bottom: 60px;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/* sticky footer and footer */
|
|
110
|
+
html, body {
|
|
111
|
+
height: 100%;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
.wrapper {
|
|
115
|
+
position: relative;
|
|
116
|
+
top: 0;
|
|
117
|
+
left: 0;
|
|
118
|
+
padding-top: 60px;
|
|
119
|
+
margin: -60px 0;
|
|
120
|
+
min-height: 100%;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
.form-switcher {
|
|
124
|
+
margin-bottom: 0;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
.nav-tabs {
|
|
128
|
+
border: 0;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
.nav-tabs > li {
|
|
132
|
+
float: right;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
.nav-tabs li a {
|
|
136
|
+
margin-right: 0;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
.nav-tabs > .active > a {
|
|
140
|
+
background: #F5F5F5;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
.nav-tabs > .active > a:hover {
|
|
144
|
+
background: #F5F5F5;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
.tabbable.first-tab-active .tab-content {
|
|
148
|
+
border-top-right-radius: 0;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
footer {
|
|
152
|
+
position: absolute;
|
|
153
|
+
bottom: 0;
|
|
154
|
+
left: 0;
|
|
155
|
+
clear: both;
|
|
156
|
+
z-index: 10;
|
|
157
|
+
height: 60px;
|
|
158
|
+
width: 95%;
|
|
159
|
+
margin: 0 2.5%;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
footer p {
|
|
163
|
+
text-align: center;
|
|
164
|
+
color: gray;
|
|
165
|
+
border-top: 1px solid #DDDDDD;
|
|
166
|
+
padding-top: 10px;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
footer a {
|
|
170
|
+
color: gray !important;
|
|
171
|
+
font-weight: bold;
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
footer a:hover {
|
|
175
|
+
color: gray;
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
.page-header {
|
|
179
|
+
border-bottom: none;
|
|
180
|
+
padding-bottom: 0px;
|
|
181
|
+
margin: 0;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
/* custom general page styles */
|
|
185
|
+
.hero-unit h1, .hero-unit h2 {
|
|
186
|
+
color: #A30000;
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
body a {
|
|
190
|
+
color: #A30000;
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
body a:hover {
|
|
194
|
+
color: #c20000;
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
.request-info {
|
|
198
|
+
clear:both;
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
.modal-footer form {
|
|
202
|
+
margin-left: 5px;
|
|
203
|
+
margin-right: 5px;
|
|
204
|
+
}
|