tomtoolkit 3.0.0a12__tar.gz → 3.0.1__tar.gz
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.
- tomtoolkit-3.0.1/.git/FETCH_HEAD +1 -0
- tomtoolkit-3.0.1/.git/HEAD +1 -0
- tomtoolkit-3.0.1/.git/config +12 -0
- tomtoolkit-3.0.1/.git/index +0 -0
- tomtoolkit-3.0.1/.git/logs/HEAD +1 -0
- tomtoolkit-3.0.1/.git/objects/pack/pack-b7d3a0b956f12dff843bf3681d01e0c2fe0a83bb.idx +0 -0
- tomtoolkit-3.0.0a12/.git/objects/pack/pack-a669af01a8852998ccedc6383451e71dd198fe5e.pack → tomtoolkit-3.0.1/.git/objects/pack/pack-b7d3a0b956f12dff843bf3681d01e0c2fe0a83bb.pack +0 -0
- tomtoolkit-3.0.1/.git/objects/pack/pack-b7d3a0b956f12dff843bf3681d01e0c2fe0a83bb.rev +0 -0
- tomtoolkit-3.0.1/.git/refs/tags/3.0.1 +1 -0
- tomtoolkit-3.0.1/.git/shallow +1 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/PKG-INFO +7 -7
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/code/plugins.rst +9 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/common/customsettings.rst +3 -0
- tomtoolkit-3.0.1/docs/customization/encrypted_model_fields.rst +138 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/data_services/create_dataservice.rst +60 -26
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/deployment/encryption.rst +31 -3
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/introduction/updating.rst +18 -3
- tomtoolkit-3.0.1/docs/managing_data/accessing_data_through_REST_API.rst +161 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/managing_data/index.rst +1 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/managing_data/tom_direct_sharing.rst +3 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/observing/observation_module.rst +78 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/poetry.lock +558 -735
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/pyproject.toml +9 -9
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_alerts/brokers/gaia.py +1 -1
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_base/__init__.py +1 -1
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_base/settings.py +7 -2
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/default_settings.py +6 -2
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/static/tom_common/css/main.css +0 -5
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataproducts/api_views.py +114 -28
- tomtoolkit-3.0.1/tom_dataproducts/migrations/0017_spectroscopyreduceddatum_wavelength_unit.py +18 -0
- tomtoolkit-3.0.1/tom_dataproducts/migrations/0018_remove_astrometryreduceddatum_unique_astrometry_and_more.py +58 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataproducts/models.py +30 -5
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataproducts/serializers.py +1 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataproducts/sharing.py +1 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataproducts/templates/tom_dataproducts/partials/dataproduct_list_for_target.html +1 -1
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataproducts/tests/test_api.py +35 -8
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataproducts/tests/tests.py +9 -7
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataservices/data_services/alerce.py +14 -10
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataservices/dataservices.py +22 -11
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataservices/forms.py +3 -1
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataservices/views.py +39 -22
- tomtoolkit-3.0.1/tom_observations/apps.py +16 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_observations/facility.py +100 -66
- tomtoolkit-3.0.1/tom_observations/templates/tom_observations/partials/navbar_facilities_list.html +15 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_observations/templatetags/observation_extras.py +35 -1
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_observations/tests/tests.py +147 -2
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_observations/tests/utils.py +5 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_setup/templates/tom_setup/settings.tmpl +9 -2
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_targets/base_models.py +12 -0
- tomtoolkit-3.0.1/tom_targets/migrations/0031_basetarget_shared_by_basetarget_shared_from.py +23 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_targets/persistent_sharing_serializers.py +5 -1
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_targets/serializers.py +1 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_targets/sharing.py +28 -4
- tomtoolkit-3.0.0a12/tom_targets/templates/tom_targets/partials/aladin_finderchart.html → tomtoolkit-3.0.1/tom_targets/static/tom_targets/js/aladin_finderchart.js +65 -72
- tomtoolkit-3.0.1/tom_targets/templates/tom_targets/partials/aladin_finderchart.html +48 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_targets/templates/tom_targets/partials/aladin_skymap.html +1 -1
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_targets/templates/tom_targets/partials/create_persistent_share.html +7 -4
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_targets/templates/tom_targets/partials/target_buttons.html +8 -1
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_targets/templates/tom_targets/target_detail.html +9 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_targets/templates/tom_targets/target_share.html +3 -3
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_targets/templatetags/targets_extras.py +4 -4
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_targets/tests/test_api.py +54 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_targets/views.py +7 -2
- tomtoolkit-3.0.0a12/.git/FETCH_HEAD +0 -1
- tomtoolkit-3.0.0a12/.git/HEAD +0 -1
- tomtoolkit-3.0.0a12/.git/config +0 -12
- tomtoolkit-3.0.0a12/.git/index +0 -0
- tomtoolkit-3.0.0a12/.git/logs/HEAD +0 -1
- tomtoolkit-3.0.0a12/.git/objects/pack/pack-a669af01a8852998ccedc6383451e71dd198fe5e.idx +0 -0
- tomtoolkit-3.0.0a12/.git/objects/pack/pack-a669af01a8852998ccedc6383451e71dd198fe5e.rev +0 -0
- tomtoolkit-3.0.0a12/.git/refs/tags/3.0.0-alpha12 +0 -1
- tomtoolkit-3.0.0a12/.git/shallow +0 -1
- tomtoolkit-3.0.0a12/docs/customization/encrypted_model_fields.rst +0 -230
- tomtoolkit-3.0.0a12/tom_observations/apps.py +0 -5
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/.coveragerc +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/.flake8 +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/.git/description +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/.git/hooks/applypatch-msg.sample +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/.git/hooks/commit-msg.sample +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/.git/hooks/fsmonitor-watchman.sample +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/.git/hooks/post-update.sample +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/.git/hooks/pre-applypatch.sample +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/.git/hooks/pre-commit.sample +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/.git/hooks/pre-merge-commit.sample +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/.git/hooks/pre-push.sample +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/.git/hooks/pre-rebase.sample +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/.git/hooks/pre-receive.sample +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/.git/hooks/prepare-commit-msg.sample +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/.git/hooks/push-to-checkout.sample +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/.git/hooks/sendemail-validate.sample +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/.git/hooks/update.sample +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/.git/info/exclude +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/.github/ISSUE_TEMPLATE/sprint-story.md +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/.github/dependabot.yml +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/.github/workflows/github-release.yml +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/.github/workflows/pypi-release.yml +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/.github/workflows/run-canary-tests.yml +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/.github/workflows/run-tests.yml +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/.gitignore +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/.readthedocs.yml +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/CITATION.cff +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/CODE_OF_CONDUCT.md +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/CONTRIBUTING.md +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/LICENSE +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/MANIFEST.in +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/README-dev.md +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/README.md +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/Makefile +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/_static/adding_pages_doc/base.png +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/_static/adding_pages_doc/quote.png +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/_static/adding_pages_doc/targets.png +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/_static/architecture/erd.csv +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/_static/architecture/erd.png +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/_static/architecture/snex2layout.png +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/_static/architecture/standardlayout.png +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/_static/common_interface.png +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/_static/compare-across-forks.png +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/_static/create_broker_doc/example_query.png +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/_static/create_broker_doc/populated_query_list.png +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/_static/create_broker_doc/query_result.png +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/_static/create_broker_doc/success_broker_list.png +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/_static/custom.css +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/_static/customize_observations/newform.png +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/_static/customize_observations/observebutton.png +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/_static/customize_template_tags_doc/Templatetags.png +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/_static/customize_templates_doc/darkmode.png +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/_static/customize_templates_doc/sciencecat.jpg +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/_static/customize_templates_doc/toast_example.png +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/_static/customize_templates_doc/tomhomepagemod.png +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/_static/customize_templates_doc/tomhomepagenew.png +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/_static/customize_views_doc/after.png +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/_static/customize_views_doc/before.png +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/_static/dataservices_doc/advanced_form.png +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/_static/dataservices_doc/demo_Data_Service.png +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/_static/dataservices_doc/query_form_collapsed.png +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/_static/fork.png +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/_static/heroku_deploy_doc/branchdeployed.png +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/_static/heroku_deploy_doc/githubconnected.png +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/_static/heroku_deploy_doc/githubintegration.png +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/_static/heroku_deploy_doc/herokudeploybranch.png +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/_static/hs.jpg +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/_static/htmx_tables_doc/sortable_table_with_general_search.png +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/_static/jupyterdoc/newnotebook.png +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/_static/lco.jpg +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/_static/logo-color.png +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/_static/logo.png +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/_static/managing_data/data_upload_form.png +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/_static/observation_module/empty_form.png +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/_static/observation_module/fields.png +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/_static/observation_module/myfacility.png +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/_static/observation_module/target_detail_observe_buttons.png +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/_static/observation_module/target_moon_separation_plot.png +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/_static/observation_module/target_visibility_tool.png +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/_static/permissions_doc/addgroup.png +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/_static/permissions_doc/targetgroups.png +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/_static/plotting_data_doc/plot.png +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/_static/pull-request.png +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/_static/target_fields_doc/redshift.png +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/_static/target_fields_doc/redshift_display.png +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/_static/target_fields_doc/redshift_filter.png +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/_static/target_fields_doc/redshift_tag.png +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/_static/target_sources.png +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/_static/zff.png +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/api/management_commands.rst +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/api/modules.rst +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/api/tom_common/exceptions.rst +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/api/tom_common/hooks.rst +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/api/tom_common/index.rst +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/api/tom_common/template_tags.rst +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/api/tom_common/views.rst +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/api/tom_dataproducts/api_views.rst +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/api/tom_dataproducts/data_processing.md +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/api/tom_dataproducts/index.rst +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/api/tom_dataproducts/models.rst +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/api/tom_dataproducts/templatetags.rst +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/api/tom_dataproducts/utils.rst +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/api/tom_dataproducts/views.rst +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/api/tom_dataservices/data_services.rst +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/api/tom_dataservices/exceptions.rst +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/api/tom_dataservices/index.rst +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/api/tom_dataservices/models.rst +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/api/tom_dataservices/views.rst +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/api/tom_observations/facilities.rst +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/api/tom_observations/index.rst +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/api/tom_observations/models.rst +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/api/tom_observations/templatetags.rst +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/api/tom_observations/utils.rst +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/api/tom_observations/views.rst +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/api/tom_targets/api_views.rst +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/api/tom_targets/groups.rst +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/api/tom_targets/index.rst +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/api/tom_targets/models.rst +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/api/tom_targets/templatetags.rst +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/api/tom_targets/utils.rst +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/api/tom_targets/views.rst +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/code/automation.rst +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/code/backgroundtasks.rst +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/code/custom_code.rst +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/code/index.rst +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/code/querying.rst +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/code/scripts.rst +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/common/index.rst +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/common/permissions.rst +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/conf.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/customization/adding_pages.rst +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/customization/customize_template_tags.rst +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/customization/customize_templates.rst +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/customization/htmx_tables.rst +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/customization/index.rst +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/customization/latex_generation.rst +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/customization/testing_toms.rst +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/customization/widgets.rst +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/data_services/index.rst +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/deployment/amazons3.rst +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/deployment/deployment_heroku.rst +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/deployment/deployment_tips.rst +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/deployment/index.rst +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/examples.rst +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/index.rst +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/introduction/about.rst +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/introduction/acknowledging_tom_toolkit.rst +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/introduction/contributing.rst +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/introduction/credits.rst +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/introduction/faqs.rst +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/introduction/getting_started.rst +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/introduction/manual_installation.rst +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/introduction/programming_resources.rst +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/introduction/support.rst +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/introduction/tomarchitecture.rst +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/introduction/troubleshooting.rst +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/introduction/workflow.rst +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/make.bat +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/managing_data/continuous_sharing.rst +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/managing_data/customizing_data_processing.rst +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/managing_data/plotting_data.rst +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/managing_data/single_target_data_service.rst +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/managing_data/stream_pub_sub.rst +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/observing/add_facility_form_admin.png +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/observing/customize_ocs_facility.rst +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/observing/index.rst +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/observing/selecting_targets_for_facility.rst +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/observing/strategies.rst +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/observing/target_selection_menu_option.png +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/observing/target_selection_table_default.png +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/targets/index.rst +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/targets/target_fields.rst +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/targets/target_matcher.rst +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/docs/targets/target_table.rst +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/manage.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/test_settings.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_alerts/__init__.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_alerts/admin.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_alerts/alerts.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_alerts/apps.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_alerts/brokers/__init__.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_alerts/brokers/alerce.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_alerts/brokers/antares.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_alerts/brokers/fink.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_alerts/brokers/lasair.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_alerts/brokers/scout.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_alerts/brokers/tns.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_alerts/exceptions.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_alerts/management/__init__.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_alerts/management/commands/__init__.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_alerts/management/commands/runbrokerquery.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_alerts/migrations/0001_initial.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_alerts/migrations/0002_auto_20190626_2135.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_alerts/migrations/0003_auto_20190701_2226.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_alerts/migrations/0004_auto_20210204_2300.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_alerts/migrations/0005_alertstreammessage.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_alerts/migrations/0006_alter_alertstreammessage_exchange_status.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_alerts/migrations/0007_alter_alertstreammessage_message_id.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_alerts/migrations/__init__.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_alerts/models.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_alerts/templates/tom_alerts/brokerquery_confirm_delete.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_alerts/templates/tom_alerts/brokerquery_list.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_alerts/templates/tom_alerts/partials/navbar_link.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_alerts/templates/tom_alerts/partials/submit_upstream_form.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_alerts/templates/tom_alerts/query_form.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_alerts/templates/tom_alerts/query_result.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_alerts/templatetags/alerts_extras.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_alerts/tests/__init__.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_alerts/tests/brokers/__init__.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_alerts/tests/brokers/test_alerce.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_alerts/tests/brokers/test_gaia.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_alerts/tests/brokers/test_lasair.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_alerts/tests/tests.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_alerts/urls.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_alerts/views.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_base/wsgi.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_calendar/__init__.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_calendar/admin.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_calendar/apps.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_calendar/migrations/0001_initial.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_calendar/migrations/0002_calendarevent_target_list.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_calendar/migrations/0003_calendarevent_proposal_calendarevent_telescope_and_more.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_calendar/migrations/0004_eventtodo.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_calendar/migrations/0005_calendarevent_instrument.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_calendar/migrations/__init__.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_calendar/models.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_calendar/templates/tom_calendar/calendar_page.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_calendar/templates/tom_calendar/partials/calendar.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_calendar/templates/tom_calendar/partials/event_form.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_calendar/templates/tom_calendar/partials/navbar_item.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_calendar/templates/tom_calendar/partials/target_list_block.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_calendar/templates/tom_calendar/partials/todos.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_calendar/templatetags/__init__.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_calendar/templatetags/calendar_tags.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_calendar/tests.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_calendar/urls.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_calendar/utils.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_calendar/views.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_catalogs/__init__.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_catalogs/admin.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_catalogs/apps.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_catalogs/forms.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_catalogs/harvester.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_catalogs/harvesters/__init__.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_catalogs/harvesters/jplhorizons.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_catalogs/harvesters/mpc.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_catalogs/harvesters/ned.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_catalogs/harvesters/simbad.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_catalogs/harvesters/tns.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_catalogs/templates/tom_catalogs/partials/catalog_query_menu.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_catalogs/templates/tom_catalogs/query_form.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_catalogs/templatetags/__init__.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_catalogs/templatetags/dataservices_extras.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_catalogs/tests/__init__.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_catalogs/tests/harvesters/__init__.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_catalogs/tests/harvesters/data/__init__.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_catalogs/tests/harvesters/data/test_65803_mpc_orb.json +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_catalogs/tests/harvesters/test_jplhorizons.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_catalogs/tests/harvesters/test_mpc.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_catalogs/tests/harvesters/test_simbad.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_catalogs/tests/tests.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_catalogs/urls.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_catalogs/views.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/__init__.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/admin.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/api_router.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/api_views.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/apps.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/encryption.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/exceptions.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/forms.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/hints.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/hooks.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/htmx_table.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/management/__init__.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/management/commands/__init__.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/management/commands/rotate_encryption_key.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/middleware.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/migrations/0001_initial.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/migrations/0002_usersession.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/migrations/0004_delete_usersession.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/migrations/__init__.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/mixins.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/models.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/serializers.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/signals.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/static/font-awesome-4.7.0/HELP-US-OUT.txt +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/static/font-awesome-4.7.0/css/font-awesome.css +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/static/font-awesome-4.7.0/css/font-awesome.min.css +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/static/font-awesome-4.7.0/fonts/FontAwesome.otf +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/static/font-awesome-4.7.0/fonts/fontawesome-webfont.eot +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/static/font-awesome-4.7.0/fonts/fontawesome-webfont.svg +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/static/font-awesome-4.7.0/fonts/fontawesome-webfont.ttf +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/static/font-awesome-4.7.0/fonts/fontawesome-webfont.woff +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/static/font-awesome-4.7.0/fonts/fontawesome-webfont.woff2 +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/static/font-awesome-4.7.0/less/animated.less +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/static/font-awesome-4.7.0/less/bordered-pulled.less +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/static/font-awesome-4.7.0/less/core.less +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/static/font-awesome-4.7.0/less/fixed-width.less +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/static/font-awesome-4.7.0/less/font-awesome.less +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/static/font-awesome-4.7.0/less/icons.less +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/static/font-awesome-4.7.0/less/larger.less +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/static/font-awesome-4.7.0/less/list.less +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/static/font-awesome-4.7.0/less/mixins.less +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/static/font-awesome-4.7.0/less/path.less +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/static/font-awesome-4.7.0/less/rotated-flipped.less +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/static/font-awesome-4.7.0/less/screen-reader.less +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/static/font-awesome-4.7.0/less/stacked.less +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/static/font-awesome-4.7.0/less/variables.less +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/static/font-awesome-4.7.0/scss/_animated.scss +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/static/font-awesome-4.7.0/scss/_bordered-pulled.scss +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/static/font-awesome-4.7.0/scss/_core.scss +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/static/font-awesome-4.7.0/scss/_fixed-width.scss +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/static/font-awesome-4.7.0/scss/_icons.scss +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/static/font-awesome-4.7.0/scss/_larger.scss +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/static/font-awesome-4.7.0/scss/_list.scss +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/static/font-awesome-4.7.0/scss/_mixins.scss +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/static/font-awesome-4.7.0/scss/_path.scss +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/static/font-awesome-4.7.0/scss/_rotated-flipped.scss +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/static/font-awesome-4.7.0/scss/_screen-reader.scss +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/static/font-awesome-4.7.0/scss/_stacked.scss +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/static/font-awesome-4.7.0/scss/_variables.scss +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/static/font-awesome-4.7.0/scss/font-awesome.scss +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/static/tom_common/css/dark.css +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/static/tom_common/img/bluespinner.gif +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/static/tom_common/img/favicon-16.ico +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/static/tom_common/img/favicon-16x16.png +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/static/tom_common/img/favicon-32.ico +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/static/tom_common/img/favicon-32x32.png +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/static/tom_common/img/favicon.ico +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/static/tom_common/img/icon.png +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/static/tom_common/img/logo-color-cropped.png +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/static/tom_common/img/logo-color.png +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/static/tom_common/img/logo-text.png +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/static/tom_common/js/htmx.min.js +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/templates/404.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/templates/auth/group_confirm_delete.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/templates/auth/group_form.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/templates/auth/partials/app_user_lists.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/templates/auth/partials/group_list.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/templates/auth/partials/user_list.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/templates/auth/user_confirm_change_password.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/templates/auth/user_confirm_delete.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/templates/auth/user_list.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/templates/bootstrap5_overrides/pagination.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/templates/comments/form.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/templates/comments/list.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/templates/django_comments/comment_confirm_delete.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/templates/django_filters/widgets/multiwidget.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/templates/registration/login.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/templates/tom_common/base.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/templates/tom_common/bootstrap_htmx.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/templates/tom_common/change_user_password.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/templates/tom_common/create_user.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/templates/tom_common/index.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/templates/tom_common/navbar_content.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/templates/tom_common/partials/api_token.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/templates/tom_common/partials/app_profiles.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/templates/tom_common/partials/clearable_encrypted_input.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/templates/tom_common/partials/confirm_user_delete.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/templates/tom_common/partials/copy_button.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/templates/tom_common/partials/htmx_table_partial.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/templates/tom_common/partials/include_app_partial.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/templates/tom_common/partials/messages.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/templates/tom_common/partials/navbar_app_addons.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/templates/tom_common/partials/navbar_login.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/templates/tom_common/partials/revealable_password_input.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/templates/tom_common/partials/user_data.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/templates/tom_common/user_profile.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/templatetags/__init__.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/templatetags/bootstrap5_overrides.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/templatetags/tom_common_extras.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/templatetags/user_extras.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/tests.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/urls.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_common/views.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataproducts/__init__.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataproducts/admin.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataproducts/apps.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataproducts/data_processor.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataproducts/exceptions.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataproducts/fields.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataproducts/filters.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataproducts/forms.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataproducts/hooks.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataproducts/management/__init__.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataproducts/management/commands/__init__.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataproducts/management/commands/downloaddata.py +0 -0
- /tomtoolkit-3.0.0a12/tom_dataproducts/management/commands/migrateReducedDatums.py → /tomtoolkit-3.0.1/tom_dataproducts/management/commands/migrate_reduced_datums.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataproducts/management/commands/updatereduceddata.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataproducts/migrations/0001_initial.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataproducts/migrations/0004_auto_20190626_0904.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataproducts/migrations/0005_auto_20190704_1010.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataproducts/migrations/0006_auto_20190912_2013.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataproducts/migrations/0007_manual_20191016_rename_type.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataproducts/migrations/0008_auto_20191205_1952.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataproducts/migrations/0009_auto_20210204_2221.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataproducts/migrations/0010_manual_20210305_fix_spectroscopy.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataproducts/migrations/0011_reduceddatum_message.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataproducts/migrations/0011_reduceddatum_message_squashed_0015_remove_reduceddatum_message.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataproducts/migrations/0012_alter_reduceddatum_data_product_and_more.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataproducts/migrations/0013_alter_reduceddatum_message.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataproducts/migrations/0014_alter_reduceddatum_timestamp.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataproducts/migrations/0015_remove_reduceddatum_message.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataproducts/migrations/0016_reduceddatum_instrument_reduceddatum_telescope_and_more.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataproducts/migrations/__init__.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataproducts/processors/__init__.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataproducts/processors/atlas_processor.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataproducts/processors/data_serializers.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataproducts/processors/panstarrs_processor.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataproducts/processors/photometry_processor.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataproducts/processors/spectroscopy_processor.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataproducts/single_target_data_service/__init__.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataproducts/single_target_data_service/atlas.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataproducts/single_target_data_service/panstarrs_service/__init__.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataproducts/single_target_data_service/panstarrs_service/panstarrs.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataproducts/single_target_data_service/panstarrs_service/panstarrs_api.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataproducts/single_target_data_service/panstarrs_service/tests.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataproducts/single_target_data_service/single_target_data_service.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataproducts/static/tom_dataproducts/img/placeholder.png +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataproducts/static/tom_dataproducts/photometry_sample.csv +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataproducts/static/tom_dataproducts/spectrum_sample.csv +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataproducts/tasks.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataproducts/templates/tom_dataproducts/add_product_to_group.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataproducts/templates/tom_dataproducts/dataproduct_confirm_delete.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataproducts/templates/tom_dataproducts/dataproduct_list.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataproducts/templates/tom_dataproducts/dataproductgroup_confirm_delete.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataproducts/templates/tom_dataproducts/dataproductgroup_detail.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataproducts/templates/tom_dataproducts/dataproductgroup_form.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataproducts/templates/tom_dataproducts/dataproductgroup_list.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataproducts/templates/tom_dataproducts/partials/js9_button.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataproducts/templates/tom_dataproducts/partials/js9_scripts.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataproducts/templates/tom_dataproducts/partials/photometry_datalist_for_target.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataproducts/templates/tom_dataproducts/partials/photometry_for_target.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataproducts/templates/tom_dataproducts/partials/query_single_target_data_service.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataproducts/templates/tom_dataproducts/partials/recent_photometry.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataproducts/templates/tom_dataproducts/partials/reduceddatum_sparkline.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataproducts/templates/tom_dataproducts/partials/saved_dataproduct_list_for_observation.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataproducts/templates/tom_dataproducts/partials/spectroscopy_for_target.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataproducts/templates/tom_dataproducts/partials/unsaved_dataproduct_list_for_observation.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataproducts/templates/tom_dataproducts/partials/upload_dataproduct.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataproducts/templates/tom_dataproducts/single_target_data_service_form.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataproducts/templates/tom_dataproducts/upload_reduced_data.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataproducts/templatetags/__init__.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataproducts/templatetags/dataproduct_extras.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataproducts/tests/__init__.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataproducts/tests/test_atlas.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataproducts/tests/test_data/test_atlas_fp.csv +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataproducts/tests/test_data/test_lightcurve.csv +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataproducts/tests/test_data/test_spectrum.csv +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataproducts/tests/test_data/test_spectrum.fits +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataproducts/urls.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataproducts/utils.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataproducts/views.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataservices/__init__.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataservices/admin.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataservices/apps.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataservices/data_services/mpc.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataservices/data_services/ned.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataservices/data_services/simbad.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataservices/data_services/tns.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataservices/management/commands/__init__.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataservices/management/commands/listqueries.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataservices/management/commands/rundataquery.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataservices/migrations/0001_initial.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataservices/migrations/__init__.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataservices/models.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataservices/templates/tom_dataservices/alerce/partials/alerce_advanced_form.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataservices/templates/tom_dataservices/alerce/partials/alerce_results_table.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataservices/templates/tom_dataservices/alerce/partials/alerce_simple_form.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataservices/templates/tom_dataservices/dataservicequery_confirm_delete.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataservices/templates/tom_dataservices/mpc/partials/mpc_results_table.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataservices/templates/tom_dataservices/partials/basic_simple_form.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataservices/templates/tom_dataservices/partials/catalog_query_menu.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataservices/templates/tom_dataservices/partials/navbar_list.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataservices/templates/tom_dataservices/partials/query_results_table.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataservices/templates/tom_dataservices/partials/update_data_from_dataservice.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataservices/templates/tom_dataservices/query_form.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataservices/templates/tom_dataservices/query_list.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataservices/templates/tom_dataservices/query_result.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataservices/templates/tom_dataservices/tns/partials/tns_query_results_table.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataservices/templates/tom_dataservices/tns/partials/tns_simple_form.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataservices/templatetags/dataservices_extras.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataservices/tests/__init__.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataservices/tests/data_services/__init__.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataservices/tests/data_services/test_mpc.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataservices/tests/test_api.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataservices/tests/test_data/__init__.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataservices/tests/test_data/test_65803_mpc_orb.json +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataservices/tests/tests.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_dataservices/urls.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_observations/__init__.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_observations/admin.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_observations/api_views.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_observations/cadence.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_observations/cadences/__init__.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_observations/cadences/resume_cadence_after_failure.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_observations/cadences/retry_failed_observations.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_observations/facilities/__init__.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_observations/facilities/blanco.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_observations/facilities/gemini.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_observations/facilities/lco.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_observations/facilities/lco_redirect.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_observations/facilities/lt.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_observations/facilities/manual.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_observations/facilities/ocs.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_observations/facilities/soar.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_observations/forms.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_observations/management/__init__.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_observations/management/commands/__init__.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_observations/management/commands/runcadencestrategies.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_observations/management/commands/updatestatus.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_observations/migrations/0001_initial.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_observations/migrations/0002_auto_20190306_2343.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_observations/migrations/0003_auto_20190503_2318.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_observations/migrations/0004_observationgroup.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_observations/migrations/0005_auto_20191210_0007.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_observations/migrations/0006_observationgroup_cadence_strategy.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_observations/migrations/0007_observationstrategy.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_observations/migrations/0008_observationgroup_cadence_parameters.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_observations/migrations/0009_observationrecord_user.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_observations/migrations/0010_manual_create_dynamic_cadence.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_observations/migrations/0011_auto_20200917_0306.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_observations/migrations/0012_auto_20210205_1819.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_observations/migrations/0013_facility.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_observations/migrations/0014_alter_facility_orbit.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_observations/migrations/0015_remove_facility_mpc_site_code_and_more.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_observations/migrations/0016_alter_facility_options.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_observations/migrations/__init__.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_observations/models.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_observations/observation_template.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_observations/serializers.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_observations/static/tom_observations/css/main.css +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_observations/templates/tom_observations/existing_observation_confirm.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_observations/templates/tom_observations/facility_status.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_observations/templates/tom_observations/observation_form.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_observations/templates/tom_observations/observation_list.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_observations/templates/tom_observations/observationgroup_confirm_delete.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_observations/templates/tom_observations/observationgroup_form.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_observations/templates/tom_observations/observationgroup_list.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_observations/templates/tom_observations/observationrecord_detail.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_observations/templates/tom_observations/observationtemplate_confirm_delete.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_observations/templates/tom_observations/observationtemplate_form.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_observations/templates/tom_observations/observationtemplate_list.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_observations/templates/tom_observations/observationupdate_form.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_observations/templates/tom_observations/partials/existing_observation_form.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_observations/templates/tom_observations/partials/facility_map.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_observations/templates/tom_observations/partials/facility_observation_form.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_observations/templates/tom_observations/partials/facility_status_table.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_observations/templates/tom_observations/partials/observation_distribution.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_observations/templates/tom_observations/partials/observation_list.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_observations/templates/tom_observations/partials/observation_plan.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_observations/templates/tom_observations/partials/observation_type_tabs.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_observations/templates/tom_observations/partials/observationtemplate_from_record.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_observations/templates/tom_observations/partials/observationtemplate_run.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_observations/templates/tom_observations/partials/observing_buttons.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_observations/templates/tom_observations/partials/update_observation_id_form.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_observations/templates/tom_observations/partials/update_status_button.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_observations/templatetags/__init__.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_observations/tests/__init__.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_observations/tests/facilities/__init__.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_observations/tests/facilities/test_gemini.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_observations/tests/facilities/test_lco.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_observations/tests/facilities/test_ocs.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_observations/tests/facilities/test_soar.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_observations/tests/factories.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_observations/tests/test_api.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_observations/tests/test_cadence.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_observations/tests/test_credentials.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_observations/urls.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_observations/utils.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_observations/views.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_observations/widgets.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_setup/__init__.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_setup/apps.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_setup/management/__init__.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_setup/management/commands/__init__.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_setup/management/commands/tom_setup.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_setup/templates/tom_setup/css.tmpl +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_setup/templates/tom_setup/models.tmpl +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_setup/templates/tom_setup/urls.tmpl +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_targets/__init__.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_targets/admin.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_targets/api_views.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_targets/apps.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_targets/fields.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_targets/filters.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_targets/forms.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_targets/groups.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_targets/management/__init__.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_targets/management/commands/__init__.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_targets/management/commands/converttargetextras.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_targets/management/commands/setdefaultextras.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_targets/merge.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_targets/migrations/0001_initial.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_targets/migrations/0002_auto_20190115_2102.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_targets/migrations/0002_auto_20190117_2248.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_targets/migrations/0003_merge_20190123_1754.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_targets/migrations/0004_auto_20190123_2010.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_targets/migrations/0005_auto_20190214_1722.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_targets/migrations/0006_auto_20190403_1659.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_targets/migrations/0007_auto_20190423_1455.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_targets/migrations/0007_auto_20190503_2318.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_targets/migrations/0007_auto_20190515_0047.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_targets/migrations/0008_merge_20190515_0914.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_targets/migrations/0008_merge_20190520_1645.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_targets/migrations/0009_auto_20190605_1656.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_targets/migrations/0010_auto_20190715_1657.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_targets/migrations/0010_merge_20190612_1227.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_targets/migrations/0011_merge_20190731_1821.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_targets/migrations/0012_target_perihdist.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_targets/migrations/0013_manual_20190916_multiple_names.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_targets/migrations/0014_auto_20190923_1827.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_targets/migrations/0015_auto_20190923_2233.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_targets/migrations/0016_auto_20191211_1707.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_targets/migrations/0017_auto_20200130_2350.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_targets/migrations/0018_auto_20200714_1832.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_targets/migrations/0019_auto_20210811_0018.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_targets/migrations/0020_alter_targetname_created_alter_targetname_modified.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_targets/migrations/0021_rename_target_basetarget_alter_basetarget_options.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_targets/migrations/0022_persistentshare.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_targets/migrations/0023_alter_basetarget_created.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_targets/migrations/0024_basetarget_permissions.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_targets/migrations/0025_auto_20250206_2017.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_targets/migrations/0026_alter_basetarget_permissions.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_targets/migrations/0027_alter_basetarget_epoch_of_elements_and_more.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_targets/migrations/0028_basetarget_abs_mag_basetarget_slope_and_more.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_targets/migrations/0029_alter_basetarget_permissions.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_targets/migrations/0030_alter_basetarget_slope.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_targets/migrations/__init__.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_targets/models.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_targets/permissions.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_targets/seed.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_targets/signals/__init__.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_targets/signals/handlers.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_targets/static/tom_targets/css/main.css +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_targets/static/tom_targets/target_import.csv +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_targets/tables.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_targets/templates/tom_targets/partials/aladin_skymap_targets_oob.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_targets/templates/tom_targets/partials/app_tab_divs.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_targets/templates/tom_targets/partials/app_tabs.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_targets/templates/tom_targets/partials/module_buttons.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_targets/templates/tom_targets/partials/moon_distance.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_targets/templates/tom_targets/partials/observation_table.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_targets/templates/tom_targets/partials/persistent_share_table.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_targets/templates/tom_targets/partials/recent_targets.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_targets/templates/tom_targets/partials/recently_updated_targets.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_targets/templates/tom_targets/partials/target_data.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_targets/templates/tom_targets/partials/target_feature.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_targets/templates/tom_targets/partials/target_groups.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_targets/templates/tom_targets/partials/target_merge_fields.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_targets/templates/tom_targets/partials/target_plan.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_targets/templates/tom_targets/partials/target_table.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_targets/templates/tom_targets/partials/target_table_partial.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_targets/templates/tom_targets/partials/target_unknown_statuses.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_targets/templates/tom_targets/partials/targetlist_select.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_targets/templates/tom_targets/target_confirm_delete.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_targets/templates/tom_targets/target_facility_selection.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_targets/templates/tom_targets/target_form.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_targets/templates/tom_targets/target_group_share.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_targets/templates/tom_targets/target_grouping.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_targets/templates/tom_targets/target_import.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_targets/templates/tom_targets/target_list.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_targets/templates/tom_targets/target_manage_persistent_shares.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_targets/templates/tom_targets/target_merge.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_targets/templates/tom_targets/targetlist_confirm_delete.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_targets/templates/tom_targets/targetlist_form.html +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_targets/templatetags/__init__.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_targets/tests/__init__.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_targets/tests/factories.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_targets/tests/tests.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_targets/urls.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_targets/utils.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_targets/validators.py +0 -0
- {tomtoolkit-3.0.0a12 → tomtoolkit-3.0.1}/tom_targets/viewsets.py +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
d8ccf933fe2e40c5e92eeb9ee11251009f25331b 'd8ccf933fe2e40c5e92eeb9ee11251009f25331b' of https://github.com/TOMToolkit/tom_base
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
d8ccf933fe2e40c5e92eeb9ee11251009f25331b
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
[core]
|
|
2
|
+
repositoryformatversion = 0
|
|
3
|
+
filemode = true
|
|
4
|
+
bare = false
|
|
5
|
+
logallrefupdates = true
|
|
6
|
+
[remote "origin"]
|
|
7
|
+
url = https://github.com/TOMToolkit/tom_base
|
|
8
|
+
fetch = +refs/heads/*:refs/remotes/origin/*
|
|
9
|
+
[gc]
|
|
10
|
+
auto = 0
|
|
11
|
+
[http "https://github.com/"]
|
|
12
|
+
extraheader = AUTHORIZATION: basic eC1hY2Nlc3MtdG9rZW46Z2hzXzE1MzY4X2V5SmhiR2NpT2lKRlV6STFOaUlzSW5SNWNDSTZJa3BYVkNKOS5leUpoZFdRaU9pSmhkWFJvYm1RaUxDSmpkSGdpT2lKTVpGZHRlbVZVYTJKcGFFWlNOVE0yVERVeFVUY3hVRjkzU1V4R1RrSXpZbHB2VEVKMU5YSktjbUZsTWt0MVdrNWpWeTAyUjBobklpd2laWGh3SWpveE56ZzNOams0TURFMkxDSnBZWFFpT2pFM09EYzJPVFEwTVRZc0ltbHpjeUk2SW1kcGRHaDFZaUlzSW1wMGFTSTZJalZpTnpoalpHUXdMV05oWW1ZdE5HTTNNUzFoTTJWakxUWmxNRGRtWmpVMVpXRTVPQ0lzSW5abGNpSTZNMzAuTkNBaFM4Um5FcHdrMVRINnk0bkhZZWY4Ynp5SW1iQ0puVEl1WGJrVUtMSURuVXdCeTUwQTN6YUVlUDFkWmo1V1I2WU50TzRqaHpWNFpFNk9BakozUEE=
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
0000000000000000000000000000000000000000 d8ccf933fe2e40c5e92eeb9ee11251009f25331b runner <runner@runnervm76f27.c41v2zfaraieda3n4uxiuojluc.phxx.internal.cloudapp.net> 1787694421 +0000 checkout: moving from master to refs/tags/3.0.1
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
d8ccf933fe2e40c5e92eeb9ee11251009f25331b
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
d8ccf933fe2e40c5e92eeb9ee11251009f25331b
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: tomtoolkit
|
|
3
|
-
Version: 3.0.
|
|
3
|
+
Version: 3.0.1
|
|
4
4
|
Summary: TOM Toolkit and base modules
|
|
5
5
|
License-Expression: GPL-3.0-only
|
|
6
6
|
License-File: LICENSE
|
|
@@ -22,26 +22,26 @@ Classifier: Programming Language :: Python :: 3.11
|
|
|
22
22
|
Classifier: Programming Language :: Python :: 3.12
|
|
23
23
|
Classifier: Topic :: Scientific/Engineering :: Astronomy
|
|
24
24
|
Classifier: Topic :: Scientific/Engineering :: Physics
|
|
25
|
-
Requires-Dist: alerce (>=2.
|
|
25
|
+
Requires-Dist: alerce (>=2.3.1,<3.0)
|
|
26
26
|
Requires-Dist: astroplan (>=0.8,<0.11)
|
|
27
27
|
Requires-Dist: astropy (>=5.3.3,<6) ; python_version < "3.10"
|
|
28
28
|
Requires-Dist: astropy (>=5.3.3,<8) ; python_version >= "3.10"
|
|
29
29
|
Requires-Dist: astroquery (<1)
|
|
30
30
|
Requires-Dist: beautifulsoup4 (<5)
|
|
31
31
|
Requires-Dist: crispy-bootstrap5 (<2027)
|
|
32
|
-
Requires-Dist: cryptography (<=
|
|
33
|
-
Requires-Dist: django (>=5,<6)
|
|
32
|
+
Requires-Dist: cryptography (<=50.0.0)
|
|
33
|
+
Requires-Dist: django (>=5.2.17,<6)
|
|
34
34
|
Requires-Dist: django-bootstrap5 (<27)
|
|
35
35
|
Requires-Dist: django-contrib-comments (>=2.0,<3.0)
|
|
36
|
-
Requires-Dist: django-crispy-forms (>=2.
|
|
36
|
+
Requires-Dist: django-crispy-forms (>=2.7,<3.0)
|
|
37
37
|
Requires-Dist: django-extensions (>=3.0.0,<4.0.0)
|
|
38
38
|
Requires-Dist: django-filter (>=23,<25)
|
|
39
39
|
Requires-Dist: django-gravatar2 (>=1.0.0,<2.0.0)
|
|
40
40
|
Requires-Dist: django-guardian (>=2.0.0,<3.0.0)
|
|
41
|
-
Requires-Dist: django-htmx (>=1.
|
|
41
|
+
Requires-Dist: django-htmx (>=1.29.0,<2.0.0)
|
|
42
42
|
Requires-Dist: django-tables2 (>=3.0,<4)
|
|
43
43
|
Requires-Dist: django-tasks (>=0.6.1,<0.7.0)
|
|
44
|
-
Requires-Dist: djangorestframework (>=3.
|
|
44
|
+
Requires-Dist: djangorestframework (>=3.18.0,<4)
|
|
45
45
|
Requires-Dist: fits2image (>=0.4,<0.5)
|
|
46
46
|
Requires-Dist: importlib-resources (>=6.4.5,<6.5.0)
|
|
47
47
|
Requires-Dist: markdown (<4)
|
|
@@ -10,6 +10,15 @@ functions, we support a range of optional plugin modules for the Toolkit.
|
|
|
10
10
|
These range from adding the ability to interface with additional
|
|
11
11
|
observatories and catalogs, to providing additional plotting or data analytics functionality.
|
|
12
12
|
|
|
13
|
+
tom_across
|
|
14
|
+
----------
|
|
15
|
+
|
|
16
|
+
`tom_across <https://github.com/TOMToolkit/tom_across>`_
|
|
17
|
+
|
|
18
|
+
This plugin integrates the Astrophysics Cross-Observatory Science Support (`ACROSS <https://science.data.nasa.gov/data-sites/across>_`)
|
|
19
|
+
tools into the TOM Toolkit. Users can view observation records and target visibility directly from the target page using ACROSS's
|
|
20
|
+
aggregated NASA mission observation and observatory status information.
|
|
21
|
+
|
|
13
22
|
tom_hermes
|
|
14
23
|
----------
|
|
15
24
|
|
|
@@ -181,6 +181,9 @@ A list of observation facility classes to make available to your TOM. If
|
|
|
181
181
|
you have written or downloaded a custom observation facility you would
|
|
182
182
|
add the class to this list to make your TOM load it.
|
|
183
183
|
|
|
184
|
+
INSTALLED_APPS that implement the ``observation_facilities()`` AppConfig integration
|
|
185
|
+
point do not need to be listed here.
|
|
186
|
+
|
|
184
187
|
`TOM_LATEX_PROCESSORS <#tom-latex-processors>`__
|
|
185
188
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
186
189
|
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
Encrypted Model Fields
|
|
2
|
+
======================
|
|
3
|
+
|
|
4
|
+
If your ``custom_code`` or reusable app needs to store a secret (e.g. an API key
|
|
5
|
+
or password for an external service) — TOM Toolkit provides
|
|
6
|
+
:class:`~tom_common.encryption.EncryptedModelField`, a model field that
|
|
7
|
+
encrypts its value as it is stored in the database.
|
|
8
|
+
|
|
9
|
+
.. note::
|
|
10
|
+
|
|
11
|
+
Encryption protects the secret from passive database exposure. It does
|
|
12
|
+
**not** protect it from anyone who can read your TOM's ``settings.SECRET_KEY``
|
|
13
|
+
(such as a server administrator). See :doc:`/deployment/encryption` for the
|
|
14
|
+
encryption documentation relevant to TOM administrators.
|
|
15
|
+
|
|
16
|
+
This page describes how to add an encrypted field to a user-profile model,
|
|
17
|
+
how to display it, and how to edit it. Working examples live in
|
|
18
|
+
`tom_hermes <https://github.com/TOMToolkit/tom_hermes>`__,
|
|
19
|
+
`tom_eso <https://github.com/TOMToolkit/tom_eso>`__, and
|
|
20
|
+
`tom_demoapp <https://github.com/TOMToolkit/tom_demoapp>`__.
|
|
21
|
+
|
|
22
|
+
Adding an EncryptedModelField
|
|
23
|
+
-------------------------------
|
|
24
|
+
|
|
25
|
+
Declare an :class:`~tom_common.encryption.EncryptedModelField` on your model:
|
|
26
|
+
|
|
27
|
+
.. code-block:: python
|
|
28
|
+
:caption: models.py
|
|
29
|
+
|
|
30
|
+
from django.conf import settings
|
|
31
|
+
from django.db import models
|
|
32
|
+
|
|
33
|
+
from tom_common.encryption import EncryptedModelField
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
class MyAppProfile(models.Model):
|
|
37
|
+
user = models.OneToOneField(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
|
|
38
|
+
api_key = EncryptedModelField(null=True, blank=True)
|
|
39
|
+
|
|
40
|
+
Read and write it like any other field; the value is encrypted on save and
|
|
41
|
+
decrypted on load:
|
|
42
|
+
|
|
43
|
+
.. code-block:: python
|
|
44
|
+
|
|
45
|
+
profile.api_key = 'something-secret' # encrypted on save
|
|
46
|
+
profile.save()
|
|
47
|
+
|
|
48
|
+
profile.api_key # -> 'something-secret' (decrypted on load)
|
|
49
|
+
|
|
50
|
+
Assigning ``None`` or ``''`` clears the stored value (the column becomes
|
|
51
|
+
``NULL``); reading an unset value returns ``None``.
|
|
52
|
+
|
|
53
|
+
Displaying the value of an encrypted field
|
|
54
|
+
-------------------------------------------
|
|
55
|
+
|
|
56
|
+
To show the value with a click-to-reveal control, use ``tom_common``'s
|
|
57
|
+
``revealable_password_input.html`` partial. Pass it the **plaintext**, which
|
|
58
|
+
comes from direct attribute access (``profile.api_key``):
|
|
59
|
+
|
|
60
|
+
.. code-block:: python
|
|
61
|
+
:caption: e.g. an inclusion tag or a view's get_context_data
|
|
62
|
+
|
|
63
|
+
context = {'api_key': profile.api_key} # plaintext becomes part of the template context
|
|
64
|
+
|
|
65
|
+
.. code-block:: html+django
|
|
66
|
+
:caption: my_template.html
|
|
67
|
+
|
|
68
|
+
{% if api_key %}
|
|
69
|
+
{% include 'tom_common/partials/revealable_password_input.html' with value=api_key %}
|
|
70
|
+
{% else %}
|
|
71
|
+
(not set)
|
|
72
|
+
{% endif %}
|
|
73
|
+
|
|
74
|
+
.. note::
|
|
75
|
+
|
|
76
|
+
Pass the plaintext only to templates the current user is allowed to see: the
|
|
77
|
+
partial embeds the plaintext value in the page HTML. Revealing it merely toggles
|
|
78
|
+
its visibility. Do **not** source the value from ``model_to_dict``, a DRF
|
|
79
|
+
serializer, or ``dumpdata`` — those return a ``REDACTED`` placeholder for
|
|
80
|
+
encrypted fields, never the secret. (If a profile card auto-iterates fields
|
|
81
|
+
with ``model_to_dict``, exclude the encrypted one and add ``profile.api_key``
|
|
82
|
+
back explicitly.)
|
|
83
|
+
|
|
84
|
+
Editing the value in an UpdateView
|
|
85
|
+
-----------------------------------
|
|
86
|
+
|
|
87
|
+
List the field on a ``ModelForm``-based view. It renders as a masked input
|
|
88
|
+
paired with a **Clear** checkbox:
|
|
89
|
+
|
|
90
|
+
.. code-block:: python
|
|
91
|
+
|
|
92
|
+
class MyProfileUpdateView(UpdateView):
|
|
93
|
+
model = MyAppProfile
|
|
94
|
+
fields = ['api_key']
|
|
95
|
+
|
|
96
|
+
On submitting the update form, an ``EncryptedModelField`` has the following behavior:
|
|
97
|
+
|
|
98
|
+
- a new, typed-in value replaces the stored one;
|
|
99
|
+
- a **blank** input keeps the stored value — so editing other fields on the
|
|
100
|
+
same form never wipes the secret;
|
|
101
|
+
- Checking the **Clear** checkbox with a blank input removes the current value (column becomes ``NULL``);
|
|
102
|
+
- a typed-in value together with **Clear** keeps the typed value (Clear is ignored).
|
|
103
|
+
|
|
104
|
+
The form never renders the stored value, so it can't leak through the edit
|
|
105
|
+
page. The placeholder text displayed in the input box signals the current state
|
|
106
|
+
— ``(A stored value is hidden) — type to replace`` versus ``(not set) — type to add``.
|
|
107
|
+
|
|
108
|
+
How it works (implementation details)
|
|
109
|
+
-------------------------------------
|
|
110
|
+
|
|
111
|
+
Each value is encrypted with a Fernet cipher derived from
|
|
112
|
+
``settings.SECRET_KEY`` (via a key derivation function, :ref:`HKDF <kdf-implementation-details>`).
|
|
113
|
+
Decryption also tries any ``settings.SECRET_KEY_FALLBACKS``, facilitating key rotation —
|
|
114
|
+
see :doc:`/deployment/encryption` for the procedure and the ``rotate_encryption_key`` command.
|
|
115
|
+
|
|
116
|
+
If a stored value cannot be decrypted under any active key, reading it raises
|
|
117
|
+
``cryptography.fernet.InvalidToken`` — usually because a key was dropped from
|
|
118
|
+
the rotation set before its data was re-encrypted.
|
|
119
|
+
|
|
120
|
+
Limitations
|
|
121
|
+
-----------
|
|
122
|
+
|
|
123
|
+
- **No filtering.** Fernet ciphertext is non-deterministic, so equality lookups
|
|
124
|
+
can never match; ``MyAppProfile.objects.filter(api_key=...)`` raises
|
|
125
|
+
``FieldError``. For a searchable secret, store a companion HMAC hash column
|
|
126
|
+
and query that.
|
|
127
|
+
|
|
128
|
+
API reference
|
|
129
|
+
-------------
|
|
130
|
+
|
|
131
|
+
:class:`~tom_common.encryption.EncryptedModelField` (`source <https://github.com/TOMToolkit/tom_base/blob/dev/tom_common/encryption.py>`__)
|
|
132
|
+
A ``models.BinaryField`` subclass that encrypts on save and decrypts on
|
|
133
|
+
load. See the class docstring for the full method-level contract.
|
|
134
|
+
|
|
135
|
+
:class:`~tom_common.encryption.EncryptedFormField` (`source <https://github.com/TOMToolkit/tom_base/blob/dev/tom_common/encryption.py>`__)
|
|
136
|
+
The form-side companion (masked input plus the blank-preserves-existing
|
|
137
|
+
behavior). ``ModelForm`` picks it up automatically via
|
|
138
|
+
:meth:`EncryptedModelField.formfield`.
|
|
@@ -188,6 +188,25 @@ This may also require you to create a ``build_headers`` method, or make use of t
|
|
|
188
188
|
``get_credentials`` methods. Saving the results to ``self.query_results`` could save time in other methods by not requiring
|
|
189
189
|
you to redo the query.
|
|
190
190
|
|
|
191
|
+
Configuration and Credentials
|
|
192
|
+
=============================
|
|
193
|
+
|
|
194
|
+
If your dataservice requires a configuration and/or credentials of any kind, retrieving these is built into the base
|
|
195
|
+
DataService class. If possible, and using TOM-wide credentials, you should consider having TOM admins include the needed
|
|
196
|
+
credentials as a nested dictionary inside the `DATA_SERVICES` attribute of ``settings.py`` named after the dataservice.
|
|
197
|
+
These will be automatically retrieved by ``get_configuration``. If an API token is required, storing a key/value pair in
|
|
198
|
+
the credentials named 'api_key' will allow ``get_credentials`` to automatically retrieve the token.
|
|
199
|
+
|
|
200
|
+
.. code-block:: python
|
|
201
|
+
:caption: settings.py default credentials example
|
|
202
|
+
|
|
203
|
+
DATA_SERVICES = {
|
|
204
|
+
'MyService': {'user': 'Me', 'api_key': os.getenv('MyService_API_KEY', None)}
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
In cases where more complex configurations or credentials are needed, consider overwriting or extending the
|
|
208
|
+
``configuration``, ``get_configuration``, and/or ``get_credentials`` methods.
|
|
209
|
+
|
|
191
210
|
``DataService.query_targets``
|
|
192
211
|
++++++++++++++++++++++++++++++
|
|
193
212
|
|
|
@@ -264,6 +283,22 @@ into a model object with ``create_foo_from_query()``.
|
|
|
264
283
|
Depending on the specifics of your data service, it may be reasonable to call the ``query_foo()`` methods independently,
|
|
265
284
|
and/or part of ``query_targets``.
|
|
266
285
|
|
|
286
|
+
Including Aliases:
|
|
287
|
+
++++++++++++++++++
|
|
288
|
+
Often when ingesting a new target from a dataservice, there will be multiple names or references for the target that you
|
|
289
|
+
will want to include to avoid confusion and help with disambiguation within a TOM. This can be done in one of two ways:
|
|
290
|
+
|
|
291
|
+
1. ``target_result``: Including an ``aliases`` key in any target results output by ``query_targets`` with a value that is
|
|
292
|
+
a list of strings will automatically ingest those aliases as ``TargetNames``.
|
|
293
|
+
|
|
294
|
+
2. ``query_aliases``: Sometimes, getting aliases can be more complex, possibly even requiring its own separate DB query. For
|
|
295
|
+
These instances, you will need to include a ``query_aliases`` method that returns a list of strings, each string being a
|
|
296
|
+
name for the target that is different from the primary name stored in ``Target.name``. See the
|
|
297
|
+
:doc:`dataservices documentation <../api/tom_dataservices/data_services>` for more information.
|
|
298
|
+
|
|
299
|
+
Note: By default a TOM's Match Filters apply to alias creation, so if an alias matches any existing name or alias already in the DB
|
|
300
|
+
it will not be created.
|
|
301
|
+
|
|
267
302
|
Querying Reduced Datums:
|
|
268
303
|
++++++++++++++++++++++++
|
|
269
304
|
Data from a dataservice that needs to be stored as a ``ReducedDatum`` should be handled a little differently.
|
|
@@ -293,9 +328,10 @@ We will start by creating our query:
|
|
|
293
328
|
``DataService.create_reduced_datums_from_query``
|
|
294
329
|
================================================
|
|
295
330
|
|
|
296
|
-
To create the ``ReducedDatum``
|
|
297
|
-
types and convert them into ``ReducedDatum`` objects. Be sure to use ``
|
|
298
|
-
re-creating existing objects.
|
|
331
|
+
To create the ``ReducedDatum`` we will need a ``create_reduced_datums_from_query()`` method. This should take all of the data
|
|
332
|
+
types and convert them into ``ReducedDatum`` objects. Be sure to use ``XXXXXReducedDatum.objects.get_or_create()`` to prevent
|
|
333
|
+
re-creating existing objects where "XXXXX" represents the specific model you wish to use (such as Photometry, Spectroscopy, or Astrometry.)
|
|
334
|
+
Details for the different types of data models can be found in the :doc:`API documentation <../api/tom_dataproducts/models>`.
|
|
299
335
|
|
|
300
336
|
.. code-block:: python
|
|
301
337
|
:caption: my_dataservice.MyDataService
|
|
@@ -318,19 +354,16 @@ re-creating existing objects.
|
|
|
318
354
|
# We might have some specific things we want to include based on type.
|
|
319
355
|
# For Photometry, for example, we need a magnitude, error, and filter to be displayed in the
|
|
320
356
|
# photometry plot on the target detail page.
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
value=datum_details
|
|
332
|
-
)
|
|
333
|
-
reduced_datums.append(reduced_datum)
|
|
357
|
+
reduced_datum, __ = PhotometryReducedDatum.objects.get_or_create(
|
|
358
|
+
target=target,
|
|
359
|
+
timestamp=Time(datum['time'], format='iso', scale='utc').datetime,
|
|
360
|
+
source_name=self.name,
|
|
361
|
+
brightness=datum['my_mag'],
|
|
362
|
+
brightness_error=datum['my_magerr'],
|
|
363
|
+
limit=datum['my_maglim'],
|
|
364
|
+
bandpass=datum['my_passband']
|
|
365
|
+
)
|
|
366
|
+
reduced_datums.append(reduced_datum)
|
|
334
367
|
return reduced_datums
|
|
335
368
|
|
|
336
369
|
|
|
@@ -357,16 +390,17 @@ exists, in several places where we want to update an existing target based on da
|
|
|
357
390
|
:param target: A target object to be queried
|
|
358
391
|
:return: query_parameters (usually a dict) that can be understood by `query_service()`
|
|
359
392
|
"""
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
393
|
+
# 2 examples for conditionally building query parameters
|
|
394
|
+
if 'first' in target.name:
|
|
395
|
+
form_fields = {'first_field': target.name}
|
|
396
|
+
query_parameters = self.build_query_parameters(form_fields)
|
|
397
|
+
else:
|
|
398
|
+
query_parameters= {
|
|
399
|
+
'ra_field': target.ra,
|
|
400
|
+
'dec_field': target.dec,
|
|
401
|
+
'radius': 0.5
|
|
402
|
+
}
|
|
403
|
+
return query_parameters
|
|
370
404
|
|
|
371
405
|
|
|
372
406
|
Polishing Your Data Service:
|
|
@@ -10,7 +10,7 @@ create an encrypted database field, your documentation is here:
|
|
|
10
10
|
------
|
|
11
11
|
|
|
12
12
|
TOM Toolkit encrypts sensitive user data (API keys, observatory
|
|
13
|
-
credentials, anything declared with :class:`
|
|
13
|
+
credentials, anything declared with :class:`EncryptedModelField`) using a
|
|
14
14
|
single Fernet cipher derived from Django's ``settings.SECRET_KEY``.
|
|
15
15
|
That means when an encrypted field is written to or read from the database,
|
|
16
16
|
a cipher is created. The cipher can encrypt unencrypted plaintext (in) and decrypt
|
|
@@ -89,7 +89,7 @@ The end-to-end procedure:
|
|
|
89
89
|
|
|
90
90
|
python manage.py rotate_encryption_key
|
|
91
91
|
|
|
92
|
-
The command walks every :class:`
|
|
92
|
+
The command walks every :class:`EncryptedModelField` field across
|
|
93
93
|
``INSTALLED_APPS``, decrypts each value (transparently using either
|
|
94
94
|
the primary or a fallback), and re-encrypts under the primary. After
|
|
95
95
|
this, no value in the database requires the fallback to decrypt.
|
|
@@ -116,7 +116,7 @@ What if ``SECRET_KEY`` is lost?
|
|
|
116
116
|
|
|
117
117
|
If you lose ``SECRET_KEY`` and have no backup:
|
|
118
118
|
|
|
119
|
-
- Every :class:`
|
|
119
|
+
- Every :class:`EncryptedModelField` value (saved API keys, observatory
|
|
120
120
|
credentials) becomes unrecoverable. The ciphertext is still in the
|
|
121
121
|
database; the key needed to decrypt it is gone.
|
|
122
122
|
- All Django signing-dependent states also break: outstanding password-reset
|
|
@@ -126,6 +126,34 @@ If you lose ``SECRET_KEY`` and have no backup:
|
|
|
126
126
|
Treat ``SECRET_KEY`` backup with the same seriousness as your database
|
|
127
127
|
backup.
|
|
128
128
|
|
|
129
|
+
Backing up and moving encrypted data
|
|
130
|
+
------------------------------------
|
|
131
|
+
|
|
132
|
+
Because every encrypted value is tied to the ``SECRET_KEY`` that produced it,
|
|
133
|
+
backing up and moving that data takes a little more care than ordinary rows.
|
|
134
|
+
|
|
135
|
+
**Django fixtures do not carry encrypted values.** Django's ``dumpdata`` /
|
|
136
|
+
``loaddata`` (its built-in way to export database rows to a file and load them
|
|
137
|
+
back) cannot round-trip an encrypted field. By design, ``dumpdata`` writes the
|
|
138
|
+
placeholder ``'******** (encrypted, not shown)'`` in place of each encrypted
|
|
139
|
+
value — so secrets never end up in fixture files or version control — and
|
|
140
|
+
``loaddata`` refuses to import that placeholder rather than store it as if it
|
|
141
|
+
were the secret. (Plugin authors writing tests should likewise set encrypted
|
|
142
|
+
values in code, not load them from a fixture.)
|
|
143
|
+
|
|
144
|
+
To move encrypted data to another environment, use one of:
|
|
145
|
+
|
|
146
|
+
- **A database-level copy** (e.g. ``pg_dump``). The stored ciphertext copies
|
|
147
|
+
over verbatim, but it only decrypts if the destination TOM uses the **same**
|
|
148
|
+
``SECRET_KEY`` — or carries the source key in its ``SECRET_KEY_FALLBACKS`` —
|
|
149
|
+
since the Fernet key is derived from ``SECRET_KEY``.
|
|
150
|
+
- **An application-level re-encrypt.** Run a one-off script that reads each
|
|
151
|
+
plaintext in the source (ordinary attribute access) and re-saves it in the
|
|
152
|
+
destination, which re-encrypts it under the destination's ``SECRET_KEY``. Use
|
|
153
|
+
this when the two environments have different keys.
|
|
154
|
+
|
|
155
|
+
.. _kdf-implementation-details:
|
|
156
|
+
|
|
129
157
|
Key Derivation Function Implementation Details
|
|
130
158
|
----------------------------------------------
|
|
131
159
|
The derivation uses `HKDF <https://en.wikipedia.org/wiki/HKDF>`_
|
|
@@ -79,13 +79,28 @@ See the :ref:`Architecture Docs <ReducedDatum_label>` for a description, or
|
|
|
79
79
|
:doc:`DataProducts API <../api/tom_dataproducts/models>` for a full code breakdown.
|
|
80
80
|
|
|
81
81
|
We want to update all of your existing data to this new scheme where possible. This could take some time for large databases.
|
|
82
|
+
Towards this end, we provide a `management command
|
|
83
|
+
<https://github.com/TOMToolkit/tom_base/blob/dev/tom_dataproducts/management/commands/migrate_reduced_datums.py>`_
|
|
84
|
+
that will make "reasonable" assumptions about data values stored in ``ReducedDatum.value``. This command will search for
|
|
85
|
+
commonly used brightness fields, filter fields, spectroscopy data, etc. and translate them into the new ``ReducedDatum``
|
|
86
|
+
infrastructure. Anything unrecognized will remain in the catch-all ``value`` field. If you have highly customized fields
|
|
87
|
+
stored for your datums, you should consider copying and editing the management command to suit your needs.
|
|
88
|
+
|
|
82
89
|
|
|
83
90
|
.. Warning::
|
|
84
91
|
This is a substantial DB change. Consider backing up your database before running this management command.
|
|
85
92
|
|
|
86
93
|
::
|
|
87
94
|
|
|
88
|
-
./manage.py
|
|
95
|
+
./manage.py migrate_reduced_datums
|
|
96
|
+
|
|
97
|
+
.. Note::
|
|
98
|
+
Data validation during this migration is partially dependent on your database infrastructure.
|
|
99
|
+
You can test this migration by performing a dry run:
|
|
100
|
+
|
|
101
|
+
::
|
|
102
|
+
|
|
103
|
+
./manage.py migrate_reduced_datums --dry-run
|
|
89
104
|
|
|
90
105
|
|
|
91
106
|
4.) Update ``settings.py``
|
|
@@ -107,12 +122,12 @@ with future changes. If you wish to use these settings, please make the followin
|
|
|
107
122
|
...
|
|
108
123
|
|
|
109
124
|
# Replace your existing INSTALLED_APPS with the following:
|
|
110
|
-
INSTALLED_APPS =
|
|
125
|
+
INSTALLED_APPS = TOMTOOLKIT_INSTALLED_APPS + [
|
|
111
126
|
'custom_code', # Include any apps you have installed for your TOM that are not in default_settings
|
|
112
127
|
]
|
|
113
128
|
|
|
114
129
|
# Replace your existing MIDDLEWARE with the following:
|
|
115
|
-
MIDDLEWARE =
|
|
130
|
+
MIDDLEWARE = TOMTOOLKIT_MIDDLEWARE + [
|
|
116
131
|
{{ custom_middleware }} # Include any middleware you have installed for your TOM that are not in default_settings
|
|
117
132
|
]
|
|
118
133
|
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
Accessing data through the REST API
|
|
2
|
+
---------------------------------------
|
|
3
|
+
|
|
4
|
+
`Django REST Framework (DRF) <https://www.django-rest-framework.org/>`_ is built into TOM Toolkit.
|
|
5
|
+
This allows you to access the data in your TOM's database through a REST API.
|
|
6
|
+
|
|
7
|
+
.. note::
|
|
8
|
+
If the ``DEFAULT_AUTHENTICATION_CLASSES`` key is not present in your
|
|
9
|
+
``settings.REST_FRAMEWORK`` configuration dictionary, then you get
|
|
10
|
+
``SessionAuthentication``, and ``BasicAuthentication`` because that's the DRF default.
|
|
11
|
+
To add ``TokenAuthentication``, your ``DEFAULT_AUTHENTICATION_CLASSES`` should look like this:
|
|
12
|
+
|
|
13
|
+
.. code:: python
|
|
14
|
+
|
|
15
|
+
REST_FRAMEWORK = {
|
|
16
|
+
'DEFAULT_AUTHENTICATION_CLASSES': [
|
|
17
|
+
'rest_framework.authentication.TokenAuthentication',
|
|
18
|
+
'rest_framework.authentication.SessionAuthentication',
|
|
19
|
+
'rest_framework.authentication.BasicAuthentication',
|
|
20
|
+
],
|
|
21
|
+
# ... your existing REST_FRAMEWORK settings ...
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
- ``BasicAuthentication`` is used when you send username/password credentials in the ``AuthorizationHeader`` of an HTTP request.
|
|
25
|
+
- ``SessionAuthentication`` uses a cookie and CSRF protection to access the API from your TOM in a browser while logged in.
|
|
26
|
+
- ``TokenAuthentication`` uses your ``API Token`` available from the User Info of your User Profile of your TOM.
|
|
27
|
+
|
|
28
|
+
To see ``SessionAuthentication`` in action, while logged into your TOM, point your browser to the ``/api/`` endpoint.
|
|
29
|
+
This is the DRF API root. We'll show ``BasicAuthentication`` and ``TokenAuthentication`` in use below.
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
Quick start: querying targets with curl
|
|
33
|
+
#########################################
|
|
34
|
+
|
|
35
|
+
The examples below query the targets endpoint on a TOM running locally at
|
|
36
|
+
``http://127.0.0.1:8888`` with a user ``tom_user_1``. Adjust the host, port and
|
|
37
|
+
username to match your deployment.
|
|
38
|
+
|
|
39
|
+
Basic Authentication
|
|
40
|
+
*************************************************
|
|
41
|
+
|
|
42
|
+
.. code:: bash
|
|
43
|
+
|
|
44
|
+
curl -u tom_user_1 http://127.0.0.1:8888/api/targets/
|
|
45
|
+
|
|
46
|
+
You'll be prompted for ``tom_user_1``'s password.
|
|
47
|
+
You should receive a JSON blob with target data. Don't forget that trailing ``/``.
|
|
48
|
+
|
|
49
|
+
This is ``BasicAuthentication``: ``curl`` sends the username and password in the
|
|
50
|
+
``AuthenticationHeader`` of the HTTP request.
|
|
51
|
+
|
|
52
|
+
Token Authentication
|
|
53
|
+
*************************************************
|
|
54
|
+
|
|
55
|
+
Every user has a personal API token, shown as **API Token** on their
|
|
56
|
+
**User Profile** page. A token suits scripts and cron jobs because it
|
|
57
|
+
needs no interactive prompt. Secure your API token as you would a password.
|
|
58
|
+
|
|
59
|
+
Rather than pass in a username and be prompted for a password, we'll authenticate
|
|
60
|
+
by sending the token in an ``Authorization`` header:
|
|
61
|
+
|
|
62
|
+
To keep the API token out of your command history and scripts, export it as an
|
|
63
|
+
environment variable once and reference it in the header:
|
|
64
|
+
|
|
65
|
+
.. code:: bash
|
|
66
|
+
|
|
67
|
+
export TOM_API_TOKEN="API-token-copied-from-User-Profile"
|
|
68
|
+
curl -H "Authorization: Token $TOM_API_TOKEN" http://127.0.0.1:8888/api/targets/
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
Next Step: querying targets in code
|
|
72
|
+
#########################################
|
|
73
|
+
|
|
74
|
+
The same requests work from Python with the
|
|
75
|
+
`requests <https://requests.readthedocs.io/>`_ library.
|
|
76
|
+
|
|
77
|
+
Basic Authentication
|
|
78
|
+
*************************************************
|
|
79
|
+
|
|
80
|
+
Pass your username and password as the ``auth`` tuple:
|
|
81
|
+
|
|
82
|
+
.. code:: python
|
|
83
|
+
|
|
84
|
+
import requests
|
|
85
|
+
|
|
86
|
+
response = requests.get(
|
|
87
|
+
'http://127.0.0.1:8888/api/targets/',
|
|
88
|
+
auth=('tom_user_1', 'your-password'),
|
|
89
|
+
)
|
|
90
|
+
targets = response.json()
|
|
91
|
+
|
|
92
|
+
``targets`` now holds the same JSON you got back from ``curl``.
|
|
93
|
+
|
|
94
|
+
Token Authentication
|
|
95
|
+
*************************************************
|
|
96
|
+
|
|
97
|
+
Send your API token in an ``Authorization`` header instead. The API token
|
|
98
|
+
substitutes for the `BasicAuthentication` username and password.
|
|
99
|
+
|
|
100
|
+
.. code:: python
|
|
101
|
+
|
|
102
|
+
import requests
|
|
103
|
+
|
|
104
|
+
headers = {'Authorization': 'Token API-token-copied-from-User-Profile'}
|
|
105
|
+
response = requests.get('http://127.0.0.1:8888/api/targets/', headers=headers)
|
|
106
|
+
print('status:', response.status_code)
|
|
107
|
+
print('targets: ', response.json())
|
|
108
|
+
|
|
109
|
+
Don't hard-code real credentials: read the password or token from an environment
|
|
110
|
+
variable (e.g. ``os.environ['TOM_API_TOKEN']``) as in the ``curl`` example above.
|
|
111
|
+
|
|
112
|
+
Obtaining your API Token programmatically
|
|
113
|
+
#########################################
|
|
114
|
+
|
|
115
|
+
Above, we've seen how to access your TOM's data using ``curl`` and ``Python``,
|
|
116
|
+
via ``BasicAuthentication`` (username, password) and ``TokenAuthentication`` (API Token).
|
|
117
|
+
|
|
118
|
+
Your API Token is available from the User Info card of your User Profile. (You may rotate
|
|
119
|
+
your API Token from the User Profile update page (available from the pencil (edit) icon of
|
|
120
|
+
the User Info card). Rotating your API token is analogous to, but separate from, changing
|
|
121
|
+
your password).
|
|
122
|
+
|
|
123
|
+
Here we show how to obtain your API Token programmatically. Django REST Framework
|
|
124
|
+
provides the mechanism for this and it is available at a the ``api/token-auth`` endpoint.
|
|
125
|
+
|
|
126
|
+
Using curl
|
|
127
|
+
******************************************
|
|
128
|
+
|
|
129
|
+
Using the same assumptions as above with respect to ``host``, ``port``, ``username``,
|
|
130
|
+
and ``password``:
|
|
131
|
+
|
|
132
|
+
.. code:: bash
|
|
133
|
+
|
|
134
|
+
curl --request POST http://127.0.0.1:8888/api/token-auth/ \
|
|
135
|
+
--header "Content-Type: application/json" \
|
|
136
|
+
--data '{"username": "tom_user_1", "password": "your-password"}'
|
|
137
|
+
|
|
138
|
+
Things to note here:
|
|
139
|
+
- This is a ``POST`` request.
|
|
140
|
+
- The ``Content-Type`` specified in the request header lets DRF know to expect a JSON payload.
|
|
141
|
+
- The ``BasicAuthentication`` credentials are passed as the JSON payload of the request.
|
|
142
|
+
|
|
143
|
+
The ouput you see will be JSON to stdout of the form ``{"token":"3bc76a8b6400182d617e9a1ce75dfa92d87412a0"}``.
|
|
144
|
+
|
|
145
|
+
Using Python
|
|
146
|
+
******************************************
|
|
147
|
+
Here is the equivalent request made from Python code:
|
|
148
|
+
|
|
149
|
+
.. code:: python
|
|
150
|
+
|
|
151
|
+
import requests
|
|
152
|
+
|
|
153
|
+
response = requests.post(
|
|
154
|
+
'http://127.0.0.1:8888/api/token-auth/',
|
|
155
|
+
json={'username': 'tom_user_1', 'password': 'your-password'},
|
|
156
|
+
)
|
|
157
|
+
print('status:', response.status_code)
|
|
158
|
+
print('json: ', response.json()) # {"token":"3bc76a8b6400182d617e9a1ce75dfa92d87412a0"}
|
|
159
|
+
|
|
160
|
+
|
|
161
|
+
Further details can be found in the `DRF Authentication API Guide <https://www.django-rest-framework.org/api-guide/authentication/>`_.
|
|
@@ -11,6 +11,7 @@ Managing Data
|
|
|
11
11
|
Continuous data sharing <continuous_sharing>
|
|
12
12
|
Streaming data <stream_pub_sub>
|
|
13
13
|
Single-target data service <single_target_data_service>
|
|
14
|
+
Accessing data through the REST API <accessing_data_through_REST_API>
|
|
14
15
|
Visualizing data <plotting_data>
|
|
15
16
|
|
|
16
17
|
The TOM's Data Models
|
|
@@ -61,6 +61,9 @@ When your TOM receives a new ``Target`` from another TOM it will be saved to you
|
|
|
61
61
|
or alias doesn't match that of a target that already exists in the database, a new target will be created and added to a
|
|
62
62
|
new ``TargetList`` called "Imported from <TOM Name>".
|
|
63
63
|
|
|
64
|
+
Targets shared from a TOM with a custom ``Target`` model that has unique model fields will fill out any identically
|
|
65
|
+
named fields in your ``Target`` model and the remaining fields will be ingested as ``TargetExtras``.
|
|
66
|
+
|
|
64
67
|
Target Lists:
|
|
65
68
|
-------------
|
|
66
69
|
When your TOM receives a new ``TargetList`` from another TOM it will be saved to your TOM's database. If the targets in
|