psat-server-web 0.4.2__tar.gz → 0.5.0__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.
Potentially problematic release.
This version of psat-server-web might be problematic. Click here for more details.
- psat_server_web-0.5.0/PKG-INFO +131 -0
- psat_server_web-0.5.0/README.md +101 -0
- psat_server_web-0.5.0/psat_server_web/__version__.py +1 -0
- psat_server_web-0.5.0/psat_server_web/atlas/accounts/admin.py +34 -0
- psat_server_web-0.5.0/psat_server_web/atlas/accounts/signals.py +27 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/atlas/settings.py +51 -5
- psat_server_web-0.5.0/psat_server_web/atlas/tests/atlasapi/test_authentication.py +111 -0
- psat_server_web-0.5.0/psat_server_web/atlas/tests/atlasapi/test_failure.py +8 -0
- {psat_server_web-0.4.2/psat_server_web/atlas/tests → psat_server_web-0.5.0/psat_server_web/atlas/tests/atlasapi}/test_permissions.py +6 -4
- psat_server_web-0.5.0/psat_server_web/ps1/__init__.py +0 -0
- psat_server_web-0.5.0/psat_server_web/ps1/psdb/__init__.py +0 -0
- psat_server_web-0.5.0/psat_server_web/ps1/site_media/js/celestial/data/__init__.py +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/tcs_gravity_alerts.sql +1 -1
- psat_server_web-0.5.0/psat_server_web.egg-info/PKG-INFO +131 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web.egg-info/SOURCES.txt +7 -1
- psat_server_web-0.5.0/setup.cfg +8 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/setup.py +3 -0
- psat_server_web-0.4.2/PKG-INFO +0 -43
- psat_server_web-0.4.2/README.md +0 -13
- psat_server_web-0.4.2/psat_server_web/__version__.py +0 -1
- psat_server_web-0.4.2/psat_server_web/atlas/accounts/admin.py +0 -18
- psat_server_web-0.4.2/psat_server_web/atlas/accounts/signals.py +0 -15
- psat_server_web-0.4.2/psat_server_web.egg-info/PKG-INFO +0 -43
- psat_server_web-0.4.2/setup.cfg +0 -4
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/LICENSE +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/MANIFEST.in +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/.DS_Store +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/__init__.py +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/.DS_Store +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/__init__.py +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/accounts/apps.py +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/accounts/migrations/0001_initial.py +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/accounts/migrations/__init__.py +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/accounts/models.py +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/atlas/__init__.py +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/atlas/apiutils.py +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/atlas/commonqueries.py +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/atlas/dbviews.py +0 -0
- /psat_server_web-0.4.2/psat_server_web/atlas/site_media/js/celestial/data/__init__.py → /psat_server_web-0.5.0/psat_server_web/atlas/atlas/django-default.log +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/atlas/document.sh +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/atlas/formchoices.py +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/atlas/helpers.py +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/atlas/insert_gravity_event.sql +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/atlas/lightcurvequeries.py +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/atlas/models.py +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/atlas/sqlpaginator.py +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/atlas/urls.py +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/atlas/view_celestial.py +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/atlas/views.py +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/atlas/wsgi.atlas.conf +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/atlas/wsgi.py +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/atlas/wsgi_apache_example.conf +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/atlasapi/apps.py +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/atlasapi/authentication.py +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/atlasapi/permissions.py +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/atlasapi/serializers.py +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/atlasapi/urls.py +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/atlasapi/views.py +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/cow_backup.txt +0 -0
- /psat_server_web-0.4.2/psat_server_web/atlas/tests/__init__.py → /psat_server_web-0.5.0/psat_server_web/atlas/django-default.log +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/generate_mod_wsgi_apachectl.sh +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/generate_mod_wsgi_apachectl_test.sh +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/manage.py +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/media/images/README.txt +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/css/aladin.css +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/css/celestial.css +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/css/fontawesome.css +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/css/main.css +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/css/main_bootstrap.css +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/images/atlas_logo.png +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/images/image_not_available.jpeg +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/js/aladin.js +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/js/bootstrap_utils.js +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/js/celestial/celestial.js +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/js/celestial/d3.geo.projection.js +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/js/celestial/d3.geo.projection.min.js +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/js/celestial/d3.geo.zoom.js +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/js/celestial/d3.min.js +0 -0
- {psat_server_web-0.4.2/psat_server_web/common → psat_server_web-0.5.0/psat_server_web/atlas/site_media/js/celestial/data}/__init__.py +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/js/celestial/data/constellations.bounds.json +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/js/celestial/data/constellations.json +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/js/celestial/data/constellations.lines.json +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/js/celestial/data/dsos.bright.json +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/js/celestial/data/lg.json +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/js/celestial/data/mw.json +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/js/celestial/data/planets.json +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/js/celestial/data/stars.6.json +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/js/colourplot.js +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/js/flot/excanvas.js +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/js/flot/jquery-1.7.2.js +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/js/flot/jquery.flot.axislabels.js +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/js/flot/jquery.flot.crosshair.js +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/js/flot/jquery.flot.errorbars.js +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/js/flot/jquery.flot.fillbetween.js +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/js/flot/jquery.flot.image.js +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/js/flot/jquery.flot.js +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/js/flot/jquery.flot.navigate.js +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/js/flot/jquery.flot.pie.js +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/js/flot/jquery.flot.resize.js +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/js/flot/jquery.flot.selection.js +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/js/flot/jquery.flot.stack.js +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/js/flot/jquery.flot.symbol.js +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/js/flot/jquery.flot.threshold.js +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/js/followup_selectall.js +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/js/heatmap.js +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/js/lightcurve.js +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/js/lightcurveplotly.js +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/js/mjdcalc.js +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/js/plotly/plotly-latest.kws.js +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/js/recurrenceplot.js +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/js/recurrenceplotplotly.js +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/webfonts/fa-brands-400.eot +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/webfonts/fa-brands-400.svg +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/webfonts/fa-brands-400.ttf +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/webfonts/fa-brands-400.woff +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/webfonts/fa-brands-400.woff2 +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/webfonts/fa-regular-400.eot +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/webfonts/fa-regular-400.svg +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/webfonts/fa-regular-400.ttf +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/webfonts/fa-regular-400.woff +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/webfonts/fa-regular-400.woff2 +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/webfonts/fa-solid-900.eot +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/webfonts/fa-solid-900.svg +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/webfonts/fa-solid-900.ttf +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/webfonts/fa-solid-900.woff +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/webfonts/fa-solid-900.woff2 +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/sql/create_web_views.sql +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/templates/.DS_Store +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/templates/400.html +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/templates/403.html +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/templates/404.html +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/templates/500.html +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/templates/atlas/atelfasttrackobject.txt +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/templates/atlas/atelsdiscovery.txt +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/templates/atlas/atelsfast.txt +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/templates/atlas/candidate.html +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/templates/atlas/candidate_plotly.html +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/templates/atlas/candidate_plotly_test.html +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/templates/atlas/crossmatch_external.html +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/templates/atlas/error.html +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/templates/atlas/followup.html +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/templates/atlas/followup.txt +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/templates/atlas/followup2.html +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/templates/atlas/followup_bs.html +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/templates/atlas/followup_bypass_django_tables.html +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/templates/atlas/followup_quickview.html +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/templates/atlas/followup_quickview_bs.html +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/templates/atlas/followup_subset.txt +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/templates/atlas/gcn.txt +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/templates/atlas/gcn_latex.txt +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/templates/atlas/heatmap.html +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/templates/atlas/heatmap_test.html +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/templates/atlas/index.html +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/templates/atlas/index_bs.html +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/templates/atlas/index_bs_celestial.html +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/templates/atlas/index_bs_celestial_experiment.html +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/templates/atlas/iobserve.txt +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/templates/atlas/lightcurve.txt +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/templates/atlas/lightcurveddc.txt +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/templates/atlas/lightcurveforced.txt +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/templates/atlas/lightcurvestackedforced.txt +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/templates/atlas/pesstorecurrences.txt +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/templates/atlas/pesstorecurrencesddc.txt +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/templates/atlas/pesstosummary.txt +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/templates/atlas/search_results.html +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/templates/atlas/search_results_plotly.html +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/templates/atlas/sne.json +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/templates/atlas/summary.csv +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/templates/atlas/userdefinedlists.html +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/templates/atlas/userdefinedlists_bs.html +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/templates/atlas/visibility.txt +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/templates/base.html +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/templates/base_bootstrap.html +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/templates/base_bootstrap_login.html +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/templates/bootstrap4_django_tables2_atlas.html +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/templates/invalid_login.html +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/templates/loggedin.html +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/templates/login.html +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/templates/logout.html +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/test.py +0 -0
- {psat_server_web-0.4.2/psat_server_web/ps1 → psat_server_web-0.5.0/psat_server_web/atlas/tests}/__init__.py +0 -0
- {psat_server_web-0.4.2/psat_server_web/ps1/psdb → psat_server_web-0.5.0/psat_server_web/atlas/tests/atlasapi}/__init__.py +0 -0
- {psat_server_web-0.4.2/psat_server_web/ps1/site_media/js/celestial/data → psat_server_web-0.5.0/psat_server_web/common}/__init__.py +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/common/psat_api_client.py +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/config/wsgi.conf.template +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/createUsers.py +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/generate_mod_wsgi_apachectl.sh +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/manage.py +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/media/images/README.txt +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/psdb/admin.py.old +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/psdb/catalogueviews.py +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/psdb/commonqueries.py +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/psdb/dbviews.py +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/psdb/formchoices.py +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/psdb/helpers.py +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/psdb/img_scale.py +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/psdb/lightcurvequeries.py +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/psdb/models.py +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/psdb/settings.py +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/psdb/urls.py +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/psdb/views.py +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/psdb/wsgi.py +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/psdb/wsgi_apache_example.conf +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/psdbapi/apps.py +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/psdbapi/permissions.py +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/psdbapi/query_auth.py +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/psdbapi/serializers.py +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/psdbapi/urls.py +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/psdbapi/views.py +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/css/aladin.css +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/css/celestial.css +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/css/fontawesome.css +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/css/main.css +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/css/main_bootstrap.css +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/1-star-hover.jpg +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/1-star.jpg +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/2-star-hover.jpg +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/2-star.jpg +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/3-star-hover.jpg +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/3-star.jpg +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/aladin.gif +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/cfaIcon.jpg +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/cfaIconHover.jpg +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/confirmed-sne-hover.jpg +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/confirmed-sne.jpg +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/detection_example.jpg +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/down.jpeg +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/down.jpg +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/image_not_available.jpeg +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/jhuIcon.jpg +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/jhuIconHover.jpg +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/minus.jpg +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/ncuIcon.jpg +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/ncuIconHover.jpg +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/non_detection_example.jpg +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/others-hover.jpg +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/others.jpg +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/panstarrs-logo-hover.jpg +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/panstarrs-logo.jpg +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/panstarrs1_logo.jpg +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/panstarrs1_o3_logo.jpg +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/panstarrs2_logo.jpg +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/panstarrs2_o3_logo.jpg +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/panstarrs_logo.jpg +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/panstarrs_logo_o4.jpg +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/panstarrs_logo_original.jpg +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/panstarrs_logo_yse.jpg +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/panstarrs_logo_yse_stack.jpg +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/pittsIcon.jpg +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/pittsIconHover.jpg +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/plus.jpg +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/ps1Icon.jpg +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/ps1IconHover.jpg +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/ps1sc.gif +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/qub-logo-hover.jpg +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/qub-logo.jpg +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/qubIcon.jpg +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/qubIconHover.jpg +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/sdss.gif +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/table-background.jpg +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/table-bottom-left.jpg +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/table-bottom-right.jpg +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/table-row.jpg +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/table-top-left.jpg +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/table-top-right.jpg +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/uhifaIcon.jpg +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/uhifaIconHover.jpg +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/up.jpeg +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/up.jpg +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/variable-stars-hover.jpg +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/variable-stars.jpg +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/js/aladin.js +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/js/celestial/celestial.js +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/js/celestial/d3.geo.projection.js +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/js/celestial/d3.geo.projection.min.js +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/js/celestial/d3.geo.zoom.js +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/js/celestial/d3.min.js +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/js/celestial/data/constellations.bounds.json +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/js/celestial/data/constellations.json +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/js/celestial/data/constellations.lines.json +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/js/celestial/data/dsos.bright.json +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/js/celestial/data/lg.json +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/js/celestial/data/mw.json +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/js/celestial/data/planets.json +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/js/celestial/data/stars.6.json +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/js/colourplot.js +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/js/flot/excanvas.js +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/js/flot/jquery-1.7.2.js +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/js/flot/jquery.flot.axislabels.js +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/js/flot/jquery.flot.crosshair.js +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/js/flot/jquery.flot.errorbars.js +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/js/flot/jquery.flot.fillbetween.js +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/js/flot/jquery.flot.image.js +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/js/flot/jquery.flot.js +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/js/flot/jquery.flot.navigate.js +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/js/flot/jquery.flot.pie.js +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/js/flot/jquery.flot.resize.js +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/js/flot/jquery.flot.selection.js +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/js/flot/jquery.flot.stack.js +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/js/flot/jquery.flot.symbol.js +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/js/flot/jquery.flot.threshold.js +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/js/followup_selectall.js +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/js/lightcurve.js +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/js/lightcurveplotly.js +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/js/mjdcalc.js +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/js/plotly/plotly-latest.kws.js +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/js/recurrenceplot.js +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/js/recurrenceplotplotly.js +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/webfonts/fa-brands-400.eot +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/webfonts/fa-brands-400.svg +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/webfonts/fa-brands-400.ttf +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/webfonts/fa-brands-400.woff +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/webfonts/fa-brands-400.woff2 +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/webfonts/fa-regular-400.eot +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/webfonts/fa-regular-400.svg +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/webfonts/fa-regular-400.ttf +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/webfonts/fa-regular-400.woff +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/webfonts/fa-regular-400.woff2 +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/webfonts/fa-solid-900.eot +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/webfonts/fa-solid-900.svg +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/webfonts/fa-solid-900.ttf +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/webfonts/fa-solid-900.woff +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/webfonts/fa-solid-900.woff2 +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/sql/create_web_cat_views.sql +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/sql/create_web_user_grants.sql +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/sql/create_web_views.sql +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/sql/create_web_views_fgss.sql +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/templates/400.html +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/templates/403.html +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/templates/404.html +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/templates/500.html +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/templates/admin/base_site.html +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/templates/base.html +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/templates/base_bootstrap.html +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/templates/base_bootstrap_login.html +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/templates/base_new.html +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/templates/bootstrap4_django_tables2_atlas.html +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/templates/invalid_login.html +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/templates/loggedin.html +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/templates/login.html +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/templates/logout.html +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/templates/psdb/atelsdiscovery.txt +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/templates/psdb/candidate.html +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/templates/psdb/candidate_plotly.html +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/templates/psdb/candidate_quickview.html +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/templates/psdb/candidateflot.html +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/templates/psdb/candidates.html +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/templates/psdb/colourdata.txt +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/templates/psdb/crossmatch_cfa_with_ipp.html +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/templates/psdb/crossmatch_external.html +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/templates/psdb/dss2.html +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/templates/psdb/error.html +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/templates/psdb/fasttrackastronote.txt +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/templates/psdb/filter.html +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/templates/psdb/followup.html +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/templates/psdb/followup.txt +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/templates/psdb/followup_bs.html +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/templates/psdb/followup_bs_old.html +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/templates/psdb/followup_quickview.html +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/templates/psdb/followup_quickview_bs.html +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/templates/psdb/followup_quickview_bs_old.html +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/templates/psdb/gcn.txt +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/templates/psdb/gcn_latex.txt +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/templates/psdb/index.html +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/templates/psdb/index_bs_celestial.html +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/templates/psdb/index_public.html +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/templates/psdb/lightcurve.txt +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/templates/psdb/lightcurveforced.txt +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/templates/psdb/lightcurves.html +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/templates/psdb/obscat.txt +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/templates/psdb/obsmediawiki.txt +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/templates/psdb/public.html +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/templates/psdb/public_textonly.txt +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/templates/psdb/reports.html +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/templates/psdb/search_results.html +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/templates/psdb/search_results_plotly.html +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/templates/psdb/sne.json +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/templates/psdb/userdefinedlists.html +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/templates/psdb/userdefinedlists_bs.html +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/atlas_detections.sql +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/atlas_detectionsddc.sql +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/atlas_detectionsnnc.sql +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/atlas_diff_detections.sql +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/atlas_diff_logs.sql +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/atlas_diff_moments.sql +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/atlas_diff_objects.sql +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/atlas_diff_subcell_logs.sql +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/atlas_diff_subcells.sql +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/atlas_forced_photometry.sql +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/atlas_heatmaps.sql +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/atlas_metadata.sql +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/atlas_metadataddc.sql +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/atlas_objects.sql +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/atlas_stacked_forced_photometry.sql +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/convert_backend_storage_to_innodb.sql +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/create_atlas_flattened_view.sql +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/create_photpipe_views.sql +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/create_schema.sql +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/create_user_grants.sql +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/create_user_grants_generic.sql +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/create_user_grants_root.sql +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/delete_transients.sql +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/generateATLASSchemaAndCPPClasses.py +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/get_table_columns_for_avro.py +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/get_table_columns_for_avro.sql +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/mjdnow.sql +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/refresh_django_views.py +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/setup_database.py +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/setup_database_utils.py +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/sherlock_classifications.sql +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/sherlock_crossmatches.sql +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/sherlock_triggers_atlas.sql +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/sherlock_triggers_ps1.sql +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/tcs_cat_gaia_dr1.sql +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/tcs_cat_gaia_dr2.sql +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/tcs_cat_gaia_dr2_cassandra.cql +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/tcs_cat_kepler_k2.sql +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/tcs_cat_kepler_k2_pixels.sql +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/tcs_cat_ps1_medium_deep_ref.sql +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/tcs_cat_ps1_ubercal_stars.sql +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/tcs_cat_satellites.sql +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/tcs_catalogue_tables.sql +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/tcs_cfa_detections.sql +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/tcs_cfa_to_ipp_lookup.sql +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/tcs_classification_flags.sql +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/tcs_classification_history.sql +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/tcs_cmf_metadata.sql +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/tcs_cross_matches.sql +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/tcs_cross_matches_external.sql +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/tcs_detection_lists.sql +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/tcs_detection_lists_atlas.sql +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/tcs_followup_photometry.sql +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/tcs_followup_telescope_instruments.sql +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/tcs_followup_telescopes.sql +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/tcs_forced_photometry.sql +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/tcs_function_lunation.sql +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/tcs_function_mjdlunation.sql +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/tcs_gravity_event_annotations.sql +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/tcs_gravity_events.sql +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/tcs_guide_star_cat.sql +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/tcs_image_groups.sql +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/tcs_images.sql +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/tcs_ipp_to_cfa_lookup.sql +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/tcs_latest_object_stats.sql +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/tcs_object_comments.sql +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/tcs_object_group_definitions.sql +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/tcs_object_group_definitions_atlas.sql +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/tcs_object_groups.sql +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/tcs_parameter_definitions.sql +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/tcs_photpipe_detections.sql +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/tcs_postage_stamp_images.sql +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/tcs_postage_stamp_requests.sql +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/tcs_postage_stamp_status_codes.sql +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/tcs_processing_status.sql +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/tcs_search_parameters.sql +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/tcs_tns_requests.sql +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/tcs_tphot_detections.sql +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/tcs_transient_objects.sql +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/tcs_transient_reobservations.sql +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/tcs_vra_rank.sql +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/tcs_vra_scores.sql +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/tcs_vra_todo.sql +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/tcs_zoo_requests.sql +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/tcs_zooniverse_scores.sql +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/types_gaia_dr2_cassandra.txt +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/update_database_types_to_tns_types_atlas.sql +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/update_database_types_to_tns_types_panstarrs.sql +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/update_tcs_gravity_alerts_001.sql +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/update_tcs_gravity_event_annotations_001.sql +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/update_tcs_latest_object_stats_001.sql +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/update_tcs_vra_rank_20240814.sql +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/update_tcs_vra_scores_20240814.sql +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/vra_triggers_atlas.sql +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web.egg-info/dependency_links.txt +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web.egg-info/not-zip-safe +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web.egg-info/requires.txt +0 -0
- {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web.egg-info/top_level.txt +0 -0
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
Metadata-Version: 2.1
|
|
2
|
+
Name: psat-server-web
|
|
3
|
+
Version: 0.5.0
|
|
4
|
+
Summary: Pan-STARRS and ATLAS web interface.
|
|
5
|
+
Home-page: https://github.com/genghisken/psat-server-web
|
|
6
|
+
Author: genghisken
|
|
7
|
+
Author-email: ken.w.smith@gmail.com
|
|
8
|
+
License: MIT
|
|
9
|
+
Classifier: Development Status :: 4 - Beta
|
|
10
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
11
|
+
Classifier: Programming Language :: Python :: 3.6
|
|
12
|
+
Classifier: Topic :: Utilities
|
|
13
|
+
Requires-Python: >=3.6
|
|
14
|
+
Description-Content-Type: text/markdown
|
|
15
|
+
License-File: LICENSE
|
|
16
|
+
Requires-Dist: numpy
|
|
17
|
+
Requires-Dist: mysqlclient
|
|
18
|
+
Requires-Dist: django<4.2
|
|
19
|
+
Requires-Dist: django_tables2
|
|
20
|
+
Requires-Dist: djangorestframework
|
|
21
|
+
Requires-Dist: mod-wsgi
|
|
22
|
+
Requires-Dist: pyyaml
|
|
23
|
+
Requires-Dist: docopt
|
|
24
|
+
Requires-Dist: python-dotenv
|
|
25
|
+
Requires-Dist: gkhtm
|
|
26
|
+
Requires-Dist: gkutils>=0.3.2
|
|
27
|
+
Requires-Dist: requests
|
|
28
|
+
Requires-Dist: lasair
|
|
29
|
+
Requires-Dist: dustmaps
|
|
30
|
+
|
|
31
|
+
# psat-server-web
|
|
32
|
+
Python 3 web interface for the Pan-STARRS and ATLAS surveys.
|
|
33
|
+
|
|
34
|
+
To install:
|
|
35
|
+
|
|
36
|
+
pip install psat-server-web
|
|
37
|
+
|
|
38
|
+
Once installed, don't forget to add the "data" symlinks in the:
|
|
39
|
+
|
|
40
|
+
site-packages/psat\_server\_web/atlas/media/images
|
|
41
|
+
site-packages/psat\_server\_web/ps1/media/images
|
|
42
|
+
|
|
43
|
+
directories which point to the location of the image stamps.
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
# Local development version
|
|
48
|
+
|
|
49
|
+
A localised development instance can be run with docker compose. You will need a
|
|
50
|
+
`.env` file in your repository root to define some environment variables,
|
|
51
|
+
looking something like:
|
|
52
|
+
|
|
53
|
+
``` .env
|
|
54
|
+
# Django settings
|
|
55
|
+
SECRET_KEY={YOUR_SECRET_KEY_HERE}
|
|
56
|
+
DJANGO_ALLOWED_HOSTS=localhost 127.0.0.1 [::1]
|
|
57
|
+
|
|
58
|
+
# MySQL/MariaDB settings
|
|
59
|
+
MYSQL_ROOT_USER=root
|
|
60
|
+
MYSQL_ROOT_PASSWORD=root
|
|
61
|
+
MYSQL_DATABASE=atlas
|
|
62
|
+
MYSQL_USER=atlas
|
|
63
|
+
MYSQL_PASSWORD=atlas
|
|
64
|
+
MYSQL_PORT=3306
|
|
65
|
+
MYSQL_TEST_DATABASE=atlas_test
|
|
66
|
+
MYSQL_TEST_PORT=3306
|
|
67
|
+
MYSQL_TEST_USER=root
|
|
68
|
+
MYSQL_TEST_PASSWORD=root
|
|
69
|
+
|
|
70
|
+
DJANGO_MYSQL_DBUSER=atlas
|
|
71
|
+
DJANGO_LASAIR_TOKEN=
|
|
72
|
+
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
Several of the values are omitted but aren't necessary to run a development
|
|
76
|
+
environment. Also ruch simple passwords should not be used in production, but this should get you something running locally. Hopefully it's then as simple as running the following:
|
|
77
|
+
|
|
78
|
+
``` bash
|
|
79
|
+
docker compose up
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
Which will start 4 services, comprised of:
|
|
83
|
+
- `db` - A MariaDB instance. By default served at `localhost:3036`
|
|
84
|
+
- `atlas-web` - A mod-wsgi instance to serve the django front end. By default
|
|
85
|
+
served at `localhost:8086` and requires `db` to be running.
|
|
86
|
+
- `adminer` - A web interface for interacting with the db. By default served
|
|
87
|
+
at `localhost:8080` and requires `db` to be running.
|
|
88
|
+
- `tests` - A single-use run of the unit tests using django's `manage.py test`.
|
|
89
|
+
Requires `db` to be running.
|
|
90
|
+
|
|
91
|
+
Each of these services can be run independently with
|
|
92
|
+
|
|
93
|
+
``` bash
|
|
94
|
+
docker compose up {service_name}
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
So if, for example, you wanted to run the tests you could execute
|
|
98
|
+
`docker compose up tests` and it would – after starting `db` if it is not
|
|
99
|
+
already running – perform a single run of the unit tests.
|
|
100
|
+
|
|
101
|
+
## A dummy database
|
|
102
|
+
|
|
103
|
+
There are a few things you will likely need to do to get a fully working version
|
|
104
|
+
of the web-server so as to make your local version useful, namely:
|
|
105
|
+
1. Get a dummy database dump .sql file from one of the developers and place it into `data/init.sql`
|
|
106
|
+
2. [Optional] Get an image dump and place it into `data/db_data/`
|
|
107
|
+
3. Fix a mild issue with the database model (see next section)
|
|
108
|
+
|
|
109
|
+
If you are having problems with any of this, contact one of the developers.
|
|
110
|
+
|
|
111
|
+
### Issue with `TcsGravityEventAnnotations.map_iteration`
|
|
112
|
+
|
|
113
|
+
If you are getting an error along the lines of
|
|
114
|
+
|
|
115
|
+
```
|
|
116
|
+
atlas-web-1 | ERRORS:
|
|
117
|
+
atlas-web-1 | atlas.TcsGravityEventAnnotations.map_iteration: (fields.E311) 'TcsGravityAlerts.map_iteration' must be unique because it is referenced by a foreign key.
|
|
118
|
+
atlas-web-1 | HINT: Add unique=True to this field or add a UniqueConstraint (without condition) in the model Meta.constraints.
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
Then you may need to make an adjustment to the models, specifically by
|
|
122
|
+
uncommenting the line declaring `TcsGravityAlerts.map_iteration` which adds a
|
|
123
|
+
unique `kwarg`, and commenting the line without the unique `kwarg`, should solve
|
|
124
|
+
the problem. Specifically, the lines should look like
|
|
125
|
+
```
|
|
126
|
+
# map_iteration = models.CharField(max_length=100, blank=True, null=True)
|
|
127
|
+
map_iteration = models.CharField(max_length=100, blank=True, null=True, unique=True)
|
|
128
|
+
```
|
|
129
|
+
This is within the `TcsGravityAlerts(models.Model)` class. Again, please speak
|
|
130
|
+
to one of the developers if this is unclear.
|
|
131
|
+
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
# psat-server-web
|
|
2
|
+
Python 3 web interface for the Pan-STARRS and ATLAS surveys.
|
|
3
|
+
|
|
4
|
+
To install:
|
|
5
|
+
|
|
6
|
+
pip install psat-server-web
|
|
7
|
+
|
|
8
|
+
Once installed, don't forget to add the "data" symlinks in the:
|
|
9
|
+
|
|
10
|
+
site-packages/psat\_server\_web/atlas/media/images
|
|
11
|
+
site-packages/psat\_server\_web/ps1/media/images
|
|
12
|
+
|
|
13
|
+
directories which point to the location of the image stamps.
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
# Local development version
|
|
18
|
+
|
|
19
|
+
A localised development instance can be run with docker compose. You will need a
|
|
20
|
+
`.env` file in your repository root to define some environment variables,
|
|
21
|
+
looking something like:
|
|
22
|
+
|
|
23
|
+
``` .env
|
|
24
|
+
# Django settings
|
|
25
|
+
SECRET_KEY={YOUR_SECRET_KEY_HERE}
|
|
26
|
+
DJANGO_ALLOWED_HOSTS=localhost 127.0.0.1 [::1]
|
|
27
|
+
|
|
28
|
+
# MySQL/MariaDB settings
|
|
29
|
+
MYSQL_ROOT_USER=root
|
|
30
|
+
MYSQL_ROOT_PASSWORD=root
|
|
31
|
+
MYSQL_DATABASE=atlas
|
|
32
|
+
MYSQL_USER=atlas
|
|
33
|
+
MYSQL_PASSWORD=atlas
|
|
34
|
+
MYSQL_PORT=3306
|
|
35
|
+
MYSQL_TEST_DATABASE=atlas_test
|
|
36
|
+
MYSQL_TEST_PORT=3306
|
|
37
|
+
MYSQL_TEST_USER=root
|
|
38
|
+
MYSQL_TEST_PASSWORD=root
|
|
39
|
+
|
|
40
|
+
DJANGO_MYSQL_DBUSER=atlas
|
|
41
|
+
DJANGO_LASAIR_TOKEN=
|
|
42
|
+
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
Several of the values are omitted but aren't necessary to run a development
|
|
46
|
+
environment. Also ruch simple passwords should not be used in production, but this should get you something running locally. Hopefully it's then as simple as running the following:
|
|
47
|
+
|
|
48
|
+
``` bash
|
|
49
|
+
docker compose up
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
Which will start 4 services, comprised of:
|
|
53
|
+
- `db` - A MariaDB instance. By default served at `localhost:3036`
|
|
54
|
+
- `atlas-web` - A mod-wsgi instance to serve the django front end. By default
|
|
55
|
+
served at `localhost:8086` and requires `db` to be running.
|
|
56
|
+
- `adminer` - A web interface for interacting with the db. By default served
|
|
57
|
+
at `localhost:8080` and requires `db` to be running.
|
|
58
|
+
- `tests` - A single-use run of the unit tests using django's `manage.py test`.
|
|
59
|
+
Requires `db` to be running.
|
|
60
|
+
|
|
61
|
+
Each of these services can be run independently with
|
|
62
|
+
|
|
63
|
+
``` bash
|
|
64
|
+
docker compose up {service_name}
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
So if, for example, you wanted to run the tests you could execute
|
|
68
|
+
`docker compose up tests` and it would – after starting `db` if it is not
|
|
69
|
+
already running – perform a single run of the unit tests.
|
|
70
|
+
|
|
71
|
+
## A dummy database
|
|
72
|
+
|
|
73
|
+
There are a few things you will likely need to do to get a fully working version
|
|
74
|
+
of the web-server so as to make your local version useful, namely:
|
|
75
|
+
1. Get a dummy database dump .sql file from one of the developers and place it into `data/init.sql`
|
|
76
|
+
2. [Optional] Get an image dump and place it into `data/db_data/`
|
|
77
|
+
3. Fix a mild issue with the database model (see next section)
|
|
78
|
+
|
|
79
|
+
If you are having problems with any of this, contact one of the developers.
|
|
80
|
+
|
|
81
|
+
### Issue with `TcsGravityEventAnnotations.map_iteration`
|
|
82
|
+
|
|
83
|
+
If you are getting an error along the lines of
|
|
84
|
+
|
|
85
|
+
```
|
|
86
|
+
atlas-web-1 | ERRORS:
|
|
87
|
+
atlas-web-1 | atlas.TcsGravityEventAnnotations.map_iteration: (fields.E311) 'TcsGravityAlerts.map_iteration' must be unique because it is referenced by a foreign key.
|
|
88
|
+
atlas-web-1 | HINT: Add unique=True to this field or add a UniqueConstraint (without condition) in the model Meta.constraints.
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
Then you may need to make an adjustment to the models, specifically by
|
|
92
|
+
uncommenting the line declaring `TcsGravityAlerts.map_iteration` which adds a
|
|
93
|
+
unique `kwarg`, and commenting the line without the unique `kwarg`, should solve
|
|
94
|
+
the problem. Specifically, the lines should look like
|
|
95
|
+
```
|
|
96
|
+
# map_iteration = models.CharField(max_length=100, blank=True, null=True)
|
|
97
|
+
map_iteration = models.CharField(max_length=100, blank=True, null=True, unique=True)
|
|
98
|
+
```
|
|
99
|
+
This is within the `TcsGravityAlerts(models.Model)` class. Again, please speak
|
|
100
|
+
to one of the developers if this is unclear.
|
|
101
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = '0.5.0'
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Customise admin interface for Group model to include GroupProfile, so default
|
|
3
|
+
expiry time for tokens can be set.
|
|
4
|
+
"""
|
|
5
|
+
import logging
|
|
6
|
+
|
|
7
|
+
from django.contrib import admin
|
|
8
|
+
from django.contrib.auth.models import Group
|
|
9
|
+
from django.forms.models import ModelForm
|
|
10
|
+
from .models import GroupProfile
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
logger = logging.getLogger(__name__)
|
|
14
|
+
|
|
15
|
+
class AlwaysChangedModelForm(ModelForm):
|
|
16
|
+
def has_changed(self):
|
|
17
|
+
""" Should return True if data differs from initial.
|
|
18
|
+
By always returning true even unchanged inlines will get validated and saved.
|
|
19
|
+
We need this because the GroupProfile needs to be created even if the default
|
|
20
|
+
values haven't been changed.
|
|
21
|
+
"""
|
|
22
|
+
return True
|
|
23
|
+
|
|
24
|
+
class GroupProfileInline(admin.StackedInline):
|
|
25
|
+
model = GroupProfile
|
|
26
|
+
can_delete = False
|
|
27
|
+
extra = 1
|
|
28
|
+
form = AlwaysChangedModelForm
|
|
29
|
+
|
|
30
|
+
class GroupAdmin(admin.ModelAdmin):
|
|
31
|
+
inlines = (GroupProfileInline,)
|
|
32
|
+
|
|
33
|
+
admin.site.unregister(Group)
|
|
34
|
+
admin.site.register(Group, GroupAdmin)
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import logging
|
|
2
|
+
|
|
3
|
+
from django.db.models import signals
|
|
4
|
+
from django.dispatch import receiver
|
|
5
|
+
from django.contrib.auth.models import Group
|
|
6
|
+
|
|
7
|
+
logger = logging.getLogger(__name__)
|
|
8
|
+
|
|
9
|
+
@receiver(signals.post_save, sender=Group)
|
|
10
|
+
def create_group_profile(sender, instance, created, **kwargs):
|
|
11
|
+
# NOTE (2024-11-12 JL): This function is no longer needed as we have instead
|
|
12
|
+
# solved the problem of duplicate GroupProfile creation by using the
|
|
13
|
+
# AlwaysChangedModelForm in the admin interface, but I'm leaving this here
|
|
14
|
+
# as a reference for future use of signals and logging.
|
|
15
|
+
logger.debug('create_group_profile called')
|
|
16
|
+
logger.debug('instance: %s', instance)
|
|
17
|
+
logger.debug('created: %s', created)
|
|
18
|
+
|
|
19
|
+
# Disconnect the signal so we don't get into a loop
|
|
20
|
+
signals.post_save.disconnect(create_group_profile, sender=Group)
|
|
21
|
+
|
|
22
|
+
if created:
|
|
23
|
+
logger.debug('In created block')
|
|
24
|
+
|
|
25
|
+
# Reconnect the signal once we're done
|
|
26
|
+
signals.post_save.connect(create_group_profile, sender=Group)
|
|
27
|
+
logger.debug('create_group_profile finished')
|
|
@@ -25,9 +25,9 @@ SITE_ID = 1
|
|
|
25
25
|
SECRET_KEY = os.environ.get('DJANGO_SECRET_KEY')
|
|
26
26
|
|
|
27
27
|
# SECURITY WARNING: don't run with debug turned on in production!
|
|
28
|
-
DEBUG = True
|
|
28
|
+
DEBUG = os.environ.get('DJANGO_DEBUG', 'False') == 'True'
|
|
29
29
|
|
|
30
|
-
TEMPLATE_DEBUG = True
|
|
30
|
+
TEMPLATE_DEBUG = os.environ.get('DJANGO_DEBUG', 'False') == 'True'
|
|
31
31
|
|
|
32
32
|
# 2021-08-21 KWS Need to set this to None, otherwise default is 1000.
|
|
33
33
|
DATA_UPLOAD_MAX_NUMBER_FIELDS = None
|
|
@@ -57,14 +57,17 @@ LOGOUT_URL = 'logout'
|
|
|
57
57
|
|
|
58
58
|
DATABASES = {
|
|
59
59
|
'default': {
|
|
60
|
-
'ENGINE': 'django.db.backends.mysql',
|
|
60
|
+
'ENGINE': os.environ.get('DJANGO_DB_ENGINE', 'django.db.backends.mysql'),
|
|
61
61
|
'NAME': os.environ.get('DJANGO_MYSQL_DBNAME'),
|
|
62
62
|
'USER': os.environ.get('DJANGO_MYSQL_DBUSER'),
|
|
63
63
|
'PASSWORD': os.environ.get('DJANGO_MYSQL_DBPASS'),
|
|
64
64
|
'HOST': os.environ.get('DJANGO_MYSQL_DBHOST'),
|
|
65
65
|
'PORT': int(os.environ.get('DJANGO_MYSQL_DBPORT')),
|
|
66
66
|
'TEST': {
|
|
67
|
-
'NAME': os.environ.get('
|
|
67
|
+
'NAME': os.environ.get('DJANGO_MYSQL_TEST_DBNAME'),
|
|
68
|
+
'PORT': os.environ.get('DJANGO_MYSQL_TEST_DBPORT'),
|
|
69
|
+
'USER': os.environ.get('DJANGO_MYSQL_TEST_DBUSER'),
|
|
70
|
+
'PASSWORD': os.environ.get('DJANGO_MYSQL_TEST_DBPASS'),
|
|
68
71
|
}
|
|
69
72
|
}
|
|
70
73
|
}
|
|
@@ -84,6 +87,49 @@ DAEMONS = {
|
|
|
84
87
|
}
|
|
85
88
|
|
|
86
89
|
|
|
90
|
+
DJANGO_LOG_LEVEL = os.environ.get('DJANGO_LOG_LEVEL', 'WARNING')
|
|
91
|
+
LOGGING = {
|
|
92
|
+
"version": 1, # the dictConfig format version
|
|
93
|
+
"disable_existing_loggers": False, # retain the default loggers
|
|
94
|
+
"formatters": {
|
|
95
|
+
"verbose": {
|
|
96
|
+
"format": "{name} {levelname} {asctime} {module} {message}",
|
|
97
|
+
"style": "{",
|
|
98
|
+
},
|
|
99
|
+
"simple": {
|
|
100
|
+
"format": "{levelname} {message}",
|
|
101
|
+
"style": "{",
|
|
102
|
+
},
|
|
103
|
+
},
|
|
104
|
+
|
|
105
|
+
"handlers": {
|
|
106
|
+
# The different log handlers are defined here. We have a file logger and
|
|
107
|
+
# a stderr logger - which reroutes to the error_log file managed by wsgi.
|
|
108
|
+
"file": {
|
|
109
|
+
"class": "logging.FileHandler",
|
|
110
|
+
"filename": "django-default.log",
|
|
111
|
+
"level": DJANGO_LOG_LEVEL,
|
|
112
|
+
"formatter": "verbose",
|
|
113
|
+
},
|
|
114
|
+
"stderr": {
|
|
115
|
+
"class": "logging.StreamHandler",
|
|
116
|
+
"level": DJANGO_LOG_LEVEL,
|
|
117
|
+
"formatter": "verbose",
|
|
118
|
+
"stream": "ext://sys.stderr",
|
|
119
|
+
}
|
|
120
|
+
},
|
|
121
|
+
# Implement the stderr logger as the default logger.
|
|
122
|
+
"loggers": {
|
|
123
|
+
"": {
|
|
124
|
+
"handlers": ["stderr"],
|
|
125
|
+
"level": DJANGO_LOG_LEVEL,
|
|
126
|
+
"propagate": True,
|
|
127
|
+
},
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
|
|
87
133
|
LANGUAGE_CODE = 'en-gb'
|
|
88
134
|
|
|
89
135
|
TIME_ZONE = 'UTC'
|
|
@@ -187,4 +233,4 @@ INSTALLED_APPS = [
|
|
|
187
233
|
]
|
|
188
234
|
|
|
189
235
|
# Token expiry time in days, default 1 day (24*60*60 seconds)
|
|
190
|
-
TOKEN_EXPIRY = int(os.environ.get("API_TOKEN_EXPIRY") or 86400) # seconds
|
|
236
|
+
TOKEN_EXPIRY = int(os.environ.get("API_TOKEN_EXPIRY") or 86400) # seconds
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
# tests/test_authentication.py
|
|
2
|
+
from django.test import TestCase
|
|
3
|
+
from django.contrib.auth.models import User, Group
|
|
4
|
+
from django.utils.timezone import now, timedelta
|
|
5
|
+
from django.conf import settings
|
|
6
|
+
from rest_framework.authtoken.models import Token
|
|
7
|
+
from rest_framework.exceptions import AuthenticationFailed
|
|
8
|
+
|
|
9
|
+
from atlasapi.authentication import ExpiringTokenAuthentication
|
|
10
|
+
from accounts.models import GroupProfile
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class TokenAuthenticationTests(TestCase):
|
|
14
|
+
|
|
15
|
+
def setUp(self):
|
|
16
|
+
# Create groups
|
|
17
|
+
self.week_group = Group.objects.create(name="Weekly Expiring")
|
|
18
|
+
self.year_group = Group.objects.create(name="Yearly Expiring")
|
|
19
|
+
self.never_expiring_group = Group.objects.create(name="Never Expiring")
|
|
20
|
+
self.no_profile_group = Group.objects.create(name="No Profile")
|
|
21
|
+
|
|
22
|
+
# Add expiration times to group profiles
|
|
23
|
+
# No profile for self.no_profile_group
|
|
24
|
+
GroupProfile.objects.create(group=self.week_group, token_expiration_time=timedelta(weeks=1))
|
|
25
|
+
GroupProfile.objects.create(group=self.year_group, token_expiration_time=timedelta(days=365))
|
|
26
|
+
GroupProfile.objects.create(group=self.never_expiring_group, token_expiration_time=timedelta(days=10000))
|
|
27
|
+
|
|
28
|
+
# Create users and assign them to groups
|
|
29
|
+
self.no_group_user = User.objects.create_user(username="no_group_user", password="password")
|
|
30
|
+
self.no_profile_user = User.objects.create_user(username="no_profile_user", password="password")
|
|
31
|
+
self.week_user = User.objects.create_user(username="week_user", password="password")
|
|
32
|
+
self.year_user = User.objects.create_user(username="year_user", password="password")
|
|
33
|
+
self.never_expiring_user = User.objects.create_user(username="never_expiring_user", password="password")
|
|
34
|
+
|
|
35
|
+
# Assign users to groups
|
|
36
|
+
# No group for self.no_group_user
|
|
37
|
+
self.no_profile_user.groups.add(self.no_profile_group)
|
|
38
|
+
self.week_user.groups.add(self.week_group)
|
|
39
|
+
self.year_user.groups.add(self.year_group)
|
|
40
|
+
self.never_expiring_user.groups.add(self.never_expiring_group)
|
|
41
|
+
|
|
42
|
+
# Create tokens for each user
|
|
43
|
+
self.no_group_token = Token.objects.create(user=self.no_group_user)
|
|
44
|
+
self.no_profile_token = Token.objects.create(user=self.no_profile_user)
|
|
45
|
+
self.week_token = Token.objects.create(user=self.week_user)
|
|
46
|
+
self.year_token = Token.objects.create(user=self.year_user)
|
|
47
|
+
self.never_expiring_token = Token.objects.create(user=self.never_expiring_user)
|
|
48
|
+
|
|
49
|
+
# Setup token authentication
|
|
50
|
+
self.auth = ExpiringTokenAuthentication()
|
|
51
|
+
|
|
52
|
+
def test_no_group(self):
|
|
53
|
+
# Test: user with no group profile should have default token expiration
|
|
54
|
+
self.assertEqual(self.auth.authenticate_credentials(self.no_group_token.key),
|
|
55
|
+
(self.no_group_user, self.no_group_token))
|
|
56
|
+
|
|
57
|
+
self.no_group_token.created = now() - timedelta(days=settings.TOKEN_EXPIRY + 1)
|
|
58
|
+
self.no_group_token.save()
|
|
59
|
+
with self.assertRaises(AuthenticationFailed) as cm:
|
|
60
|
+
self.auth.authenticate_credentials(self.no_group_token.key)
|
|
61
|
+
self.assertEqual(str(cm.exception), 'Token has expired.')
|
|
62
|
+
|
|
63
|
+
def test_no_profile(self):
|
|
64
|
+
# Test: user with no group profile should have default token expiration
|
|
65
|
+
with self.assertRaises(AuthenticationFailed) as cm:
|
|
66
|
+
self.auth.authenticate_credentials(self.no_profile_token.key)
|
|
67
|
+
self.assertEqual(str(cm.exception), 'Could not authenticate: Group has no profile. Please contact administrator.')
|
|
68
|
+
|
|
69
|
+
def test_weekly_token_expiration(self):
|
|
70
|
+
# Test: weekly expiring token should be valid if within one week
|
|
71
|
+
self.assertEqual(
|
|
72
|
+
self.auth.authenticate_credentials(self.week_token.key),
|
|
73
|
+
(self.week_user, self.week_token)
|
|
74
|
+
)
|
|
75
|
+
|
|
76
|
+
# Test: weekly token should expire after one week
|
|
77
|
+
self.week_token.created = now() - timedelta(weeks=2)
|
|
78
|
+
self.week_token.save()
|
|
79
|
+
with self.assertRaises(AuthenticationFailed) as cm:
|
|
80
|
+
self.auth.authenticate_credentials(self.week_token.key)
|
|
81
|
+
self.assertEqual(str(cm.exception), 'Token has expired.')
|
|
82
|
+
|
|
83
|
+
def test_yearly_token_expiration(self):
|
|
84
|
+
# Test: yearly expiring token should be valid if within one year
|
|
85
|
+
self.assertEqual(
|
|
86
|
+
self.auth.authenticate_credentials(self.year_token.key),
|
|
87
|
+
(self.year_user, self.year_token)
|
|
88
|
+
)
|
|
89
|
+
|
|
90
|
+
# Test: yearly token should expire after one year
|
|
91
|
+
self.year_token.created = now() - timedelta(days=400)
|
|
92
|
+
self.year_token.save()
|
|
93
|
+
with self.assertRaises(AuthenticationFailed) as cm:
|
|
94
|
+
self.auth.authenticate_credentials(self.year_token.key)
|
|
95
|
+
self.assertEqual(str(cm.exception), 'Token has expired.')
|
|
96
|
+
|
|
97
|
+
def test_never_expiring_token(self):
|
|
98
|
+
# Test: never-expiring token should always be valid
|
|
99
|
+
self.assertEqual(
|
|
100
|
+
self.auth.authenticate_credentials(self.never_expiring_token.key),
|
|
101
|
+
(self.never_expiring_user, self.never_expiring_token)
|
|
102
|
+
)
|
|
103
|
+
|
|
104
|
+
# Even if we artificially backdate the token, it should still be valid
|
|
105
|
+
self.never_expiring_token.created = now() - timedelta(days=9999)
|
|
106
|
+
self.never_expiring_token.save()
|
|
107
|
+
self.assertEqual(
|
|
108
|
+
self.auth.authenticate_credentials(self.never_expiring_token.key),
|
|
109
|
+
(self.never_expiring_user, self.never_expiring_token)
|
|
110
|
+
)
|
|
111
|
+
|
|
@@ -15,14 +15,16 @@ class TestPermissionsAuthenticated(TestCase):
|
|
|
15
15
|
self.client.credentials(HTTP_AUTHORIZATION='Token ' + self.token.key)
|
|
16
16
|
|
|
17
17
|
def test_permissions(self):
|
|
18
|
-
|
|
18
|
+
endpoint = "/api/vrascores/"
|
|
19
|
+
response = self.client.get(endpoint)
|
|
19
20
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
|
20
21
|
|
|
21
|
-
response = self.client.post(
|
|
22
|
+
response = self.client.post(endpoint)
|
|
22
23
|
self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
|
|
23
24
|
|
|
24
25
|
self.user.is_staff = True
|
|
25
26
|
self.user.save()
|
|
26
27
|
|
|
27
|
-
response = self.client.post(
|
|
28
|
-
|
|
28
|
+
response = self.client.post(endpoint)
|
|
29
|
+
# This will now fail with a 400 because we've not provided the payload
|
|
30
|
+
self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
Metadata-Version: 2.1
|
|
2
|
+
Name: psat-server-web
|
|
3
|
+
Version: 0.5.0
|
|
4
|
+
Summary: Pan-STARRS and ATLAS web interface.
|
|
5
|
+
Home-page: https://github.com/genghisken/psat-server-web
|
|
6
|
+
Author: genghisken
|
|
7
|
+
Author-email: ken.w.smith@gmail.com
|
|
8
|
+
License: MIT
|
|
9
|
+
Classifier: Development Status :: 4 - Beta
|
|
10
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
11
|
+
Classifier: Programming Language :: Python :: 3.6
|
|
12
|
+
Classifier: Topic :: Utilities
|
|
13
|
+
Requires-Python: >=3.6
|
|
14
|
+
Description-Content-Type: text/markdown
|
|
15
|
+
License-File: LICENSE
|
|
16
|
+
Requires-Dist: numpy
|
|
17
|
+
Requires-Dist: mysqlclient
|
|
18
|
+
Requires-Dist: django<4.2
|
|
19
|
+
Requires-Dist: django_tables2
|
|
20
|
+
Requires-Dist: djangorestframework
|
|
21
|
+
Requires-Dist: mod-wsgi
|
|
22
|
+
Requires-Dist: pyyaml
|
|
23
|
+
Requires-Dist: docopt
|
|
24
|
+
Requires-Dist: python-dotenv
|
|
25
|
+
Requires-Dist: gkhtm
|
|
26
|
+
Requires-Dist: gkutils>=0.3.2
|
|
27
|
+
Requires-Dist: requests
|
|
28
|
+
Requires-Dist: lasair
|
|
29
|
+
Requires-Dist: dustmaps
|
|
30
|
+
|
|
31
|
+
# psat-server-web
|
|
32
|
+
Python 3 web interface for the Pan-STARRS and ATLAS surveys.
|
|
33
|
+
|
|
34
|
+
To install:
|
|
35
|
+
|
|
36
|
+
pip install psat-server-web
|
|
37
|
+
|
|
38
|
+
Once installed, don't forget to add the "data" symlinks in the:
|
|
39
|
+
|
|
40
|
+
site-packages/psat\_server\_web/atlas/media/images
|
|
41
|
+
site-packages/psat\_server\_web/ps1/media/images
|
|
42
|
+
|
|
43
|
+
directories which point to the location of the image stamps.
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
# Local development version
|
|
48
|
+
|
|
49
|
+
A localised development instance can be run with docker compose. You will need a
|
|
50
|
+
`.env` file in your repository root to define some environment variables,
|
|
51
|
+
looking something like:
|
|
52
|
+
|
|
53
|
+
``` .env
|
|
54
|
+
# Django settings
|
|
55
|
+
SECRET_KEY={YOUR_SECRET_KEY_HERE}
|
|
56
|
+
DJANGO_ALLOWED_HOSTS=localhost 127.0.0.1 [::1]
|
|
57
|
+
|
|
58
|
+
# MySQL/MariaDB settings
|
|
59
|
+
MYSQL_ROOT_USER=root
|
|
60
|
+
MYSQL_ROOT_PASSWORD=root
|
|
61
|
+
MYSQL_DATABASE=atlas
|
|
62
|
+
MYSQL_USER=atlas
|
|
63
|
+
MYSQL_PASSWORD=atlas
|
|
64
|
+
MYSQL_PORT=3306
|
|
65
|
+
MYSQL_TEST_DATABASE=atlas_test
|
|
66
|
+
MYSQL_TEST_PORT=3306
|
|
67
|
+
MYSQL_TEST_USER=root
|
|
68
|
+
MYSQL_TEST_PASSWORD=root
|
|
69
|
+
|
|
70
|
+
DJANGO_MYSQL_DBUSER=atlas
|
|
71
|
+
DJANGO_LASAIR_TOKEN=
|
|
72
|
+
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
Several of the values are omitted but aren't necessary to run a development
|
|
76
|
+
environment. Also ruch simple passwords should not be used in production, but this should get you something running locally. Hopefully it's then as simple as running the following:
|
|
77
|
+
|
|
78
|
+
``` bash
|
|
79
|
+
docker compose up
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
Which will start 4 services, comprised of:
|
|
83
|
+
- `db` - A MariaDB instance. By default served at `localhost:3036`
|
|
84
|
+
- `atlas-web` - A mod-wsgi instance to serve the django front end. By default
|
|
85
|
+
served at `localhost:8086` and requires `db` to be running.
|
|
86
|
+
- `adminer` - A web interface for interacting with the db. By default served
|
|
87
|
+
at `localhost:8080` and requires `db` to be running.
|
|
88
|
+
- `tests` - A single-use run of the unit tests using django's `manage.py test`.
|
|
89
|
+
Requires `db` to be running.
|
|
90
|
+
|
|
91
|
+
Each of these services can be run independently with
|
|
92
|
+
|
|
93
|
+
``` bash
|
|
94
|
+
docker compose up {service_name}
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
So if, for example, you wanted to run the tests you could execute
|
|
98
|
+
`docker compose up tests` and it would – after starting `db` if it is not
|
|
99
|
+
already running – perform a single run of the unit tests.
|
|
100
|
+
|
|
101
|
+
## A dummy database
|
|
102
|
+
|
|
103
|
+
There are a few things you will likely need to do to get a fully working version
|
|
104
|
+
of the web-server so as to make your local version useful, namely:
|
|
105
|
+
1. Get a dummy database dump .sql file from one of the developers and place it into `data/init.sql`
|
|
106
|
+
2. [Optional] Get an image dump and place it into `data/db_data/`
|
|
107
|
+
3. Fix a mild issue with the database model (see next section)
|
|
108
|
+
|
|
109
|
+
If you are having problems with any of this, contact one of the developers.
|
|
110
|
+
|
|
111
|
+
### Issue with `TcsGravityEventAnnotations.map_iteration`
|
|
112
|
+
|
|
113
|
+
If you are getting an error along the lines of
|
|
114
|
+
|
|
115
|
+
```
|
|
116
|
+
atlas-web-1 | ERRORS:
|
|
117
|
+
atlas-web-1 | atlas.TcsGravityEventAnnotations.map_iteration: (fields.E311) 'TcsGravityAlerts.map_iteration' must be unique because it is referenced by a foreign key.
|
|
118
|
+
atlas-web-1 | HINT: Add unique=True to this field or add a UniqueConstraint (without condition) in the model Meta.constraints.
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
Then you may need to make an adjustment to the models, specifically by
|
|
122
|
+
uncommenting the line declaring `TcsGravityAlerts.map_iteration` which adds a
|
|
123
|
+
unique `kwarg`, and commenting the line without the unique `kwarg`, should solve
|
|
124
|
+
the problem. Specifically, the lines should look like
|
|
125
|
+
```
|
|
126
|
+
# map_iteration = models.CharField(max_length=100, blank=True, null=True)
|
|
127
|
+
map_iteration = models.CharField(max_length=100, blank=True, null=True, unique=True)
|
|
128
|
+
```
|
|
129
|
+
This is within the `TcsGravityAlerts(models.Model)` class. Again, please speak
|
|
130
|
+
to one of the developers if this is unclear.
|
|
131
|
+
|