psat-server-web 0.4.2__tar.gz → 0.5.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.

Potentially problematic release.


This version of psat-server-web might be problematic. Click here for more details.

Files changed (480) hide show
  1. psat_server_web-0.5.1/PKG-INFO +131 -0
  2. psat_server_web-0.5.1/README.md +101 -0
  3. psat_server_web-0.5.1/psat_server_web/__version__.py +1 -0
  4. psat_server_web-0.5.1/psat_server_web/atlas/accounts/admin.py +34 -0
  5. psat_server_web-0.5.1/psat_server_web/atlas/accounts/migrations/0002_groupprofile_api_write_access.py +18 -0
  6. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/accounts/models.py +5 -1
  7. psat_server_web-0.5.1/psat_server_web/atlas/accounts/signals.py +27 -0
  8. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/atlas/settings.py +51 -5
  9. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/atlasapi/authentication.py +7 -2
  10. psat_server_web-0.5.1/psat_server_web/atlas/atlasapi/permissions.py +45 -0
  11. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/atlasapi/views.py +16 -15
  12. psat_server_web-0.5.1/psat_server_web/atlas/tests/atlasapi/test_authentication.py +111 -0
  13. psat_server_web-0.5.1/psat_server_web/atlas/tests/atlasapi/test_failure.py +8 -0
  14. psat_server_web-0.5.1/psat_server_web/atlas/tests/atlasapi/test_permissions.py +343 -0
  15. psat_server_web-0.5.1/psat_server_web/ps1/__init__.py +0 -0
  16. psat_server_web-0.5.1/psat_server_web/ps1/psdb/__init__.py +0 -0
  17. psat_server_web-0.5.1/psat_server_web/ps1/site_media/js/celestial/data/__init__.py +0 -0
  18. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/schema/tcs_gravity_alerts.sql +1 -1
  19. psat_server_web-0.5.1/psat_server_web.egg-info/PKG-INFO +131 -0
  20. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web.egg-info/SOURCES.txt +8 -1
  21. psat_server_web-0.5.1/setup.cfg +8 -0
  22. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/setup.py +3 -0
  23. psat_server_web-0.4.2/PKG-INFO +0 -43
  24. psat_server_web-0.4.2/README.md +0 -13
  25. psat_server_web-0.4.2/psat_server_web/__version__.py +0 -1
  26. psat_server_web-0.4.2/psat_server_web/atlas/accounts/admin.py +0 -18
  27. psat_server_web-0.4.2/psat_server_web/atlas/accounts/signals.py +0 -15
  28. psat_server_web-0.4.2/psat_server_web/atlas/atlasapi/permissions.py +0 -12
  29. psat_server_web-0.4.2/psat_server_web/atlas/tests/test_permissions.py +0 -28
  30. psat_server_web-0.4.2/psat_server_web.egg-info/PKG-INFO +0 -43
  31. psat_server_web-0.4.2/setup.cfg +0 -4
  32. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/LICENSE +0 -0
  33. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/MANIFEST.in +0 -0
  34. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/.DS_Store +0 -0
  35. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/__init__.py +0 -0
  36. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/.DS_Store +0 -0
  37. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/__init__.py +0 -0
  38. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/accounts/apps.py +0 -0
  39. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/accounts/migrations/0001_initial.py +0 -0
  40. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/accounts/migrations/__init__.py +0 -0
  41. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/atlas/__init__.py +0 -0
  42. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/atlas/apiutils.py +0 -0
  43. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/atlas/commonqueries.py +0 -0
  44. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/atlas/dbviews.py +0 -0
  45. /psat_server_web-0.4.2/psat_server_web/atlas/site_media/js/celestial/data/__init__.py → /psat_server_web-0.5.1/psat_server_web/atlas/atlas/django-default.log +0 -0
  46. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/atlas/document.sh +0 -0
  47. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/atlas/formchoices.py +0 -0
  48. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/atlas/helpers.py +0 -0
  49. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/atlas/insert_gravity_event.sql +0 -0
  50. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/atlas/lightcurvequeries.py +0 -0
  51. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/atlas/models.py +0 -0
  52. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/atlas/sqlpaginator.py +0 -0
  53. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/atlas/urls.py +0 -0
  54. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/atlas/view_celestial.py +0 -0
  55. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/atlas/views.py +0 -0
  56. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/atlas/wsgi.atlas.conf +0 -0
  57. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/atlas/wsgi.py +0 -0
  58. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/atlas/wsgi_apache_example.conf +0 -0
  59. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/atlasapi/apps.py +0 -0
  60. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/atlasapi/serializers.py +0 -0
  61. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/atlasapi/urls.py +0 -0
  62. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/cow_backup.txt +0 -0
  63. /psat_server_web-0.4.2/psat_server_web/atlas/tests/__init__.py → /psat_server_web-0.5.1/psat_server_web/atlas/django-default.log +0 -0
  64. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/generate_mod_wsgi_apachectl.sh +0 -0
  65. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/generate_mod_wsgi_apachectl_test.sh +0 -0
  66. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/manage.py +0 -0
  67. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/media/images/README.txt +0 -0
  68. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/site_media/css/aladin.css +0 -0
  69. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/site_media/css/celestial.css +0 -0
  70. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/site_media/css/fontawesome.css +0 -0
  71. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/site_media/css/main.css +0 -0
  72. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/site_media/css/main_bootstrap.css +0 -0
  73. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/site_media/images/atlas_logo.png +0 -0
  74. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/site_media/images/image_not_available.jpeg +0 -0
  75. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/site_media/js/aladin.js +0 -0
  76. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/site_media/js/bootstrap_utils.js +0 -0
  77. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/site_media/js/celestial/celestial.js +0 -0
  78. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/site_media/js/celestial/d3.geo.projection.js +0 -0
  79. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/site_media/js/celestial/d3.geo.projection.min.js +0 -0
  80. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/site_media/js/celestial/d3.geo.zoom.js +0 -0
  81. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/site_media/js/celestial/d3.min.js +0 -0
  82. {psat_server_web-0.4.2/psat_server_web/common → psat_server_web-0.5.1/psat_server_web/atlas/site_media/js/celestial/data}/__init__.py +0 -0
  83. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/site_media/js/celestial/data/constellations.bounds.json +0 -0
  84. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/site_media/js/celestial/data/constellations.json +0 -0
  85. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/site_media/js/celestial/data/constellations.lines.json +0 -0
  86. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/site_media/js/celestial/data/dsos.bright.json +0 -0
  87. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/site_media/js/celestial/data/lg.json +0 -0
  88. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/site_media/js/celestial/data/mw.json +0 -0
  89. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/site_media/js/celestial/data/planets.json +0 -0
  90. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/site_media/js/celestial/data/stars.6.json +0 -0
  91. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/site_media/js/colourplot.js +0 -0
  92. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/site_media/js/flot/excanvas.js +0 -0
  93. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/site_media/js/flot/jquery-1.7.2.js +0 -0
  94. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/site_media/js/flot/jquery.flot.axislabels.js +0 -0
  95. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/site_media/js/flot/jquery.flot.crosshair.js +0 -0
  96. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/site_media/js/flot/jquery.flot.errorbars.js +0 -0
  97. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/site_media/js/flot/jquery.flot.fillbetween.js +0 -0
  98. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/site_media/js/flot/jquery.flot.image.js +0 -0
  99. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/site_media/js/flot/jquery.flot.js +0 -0
  100. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/site_media/js/flot/jquery.flot.navigate.js +0 -0
  101. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/site_media/js/flot/jquery.flot.pie.js +0 -0
  102. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/site_media/js/flot/jquery.flot.resize.js +0 -0
  103. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/site_media/js/flot/jquery.flot.selection.js +0 -0
  104. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/site_media/js/flot/jquery.flot.stack.js +0 -0
  105. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/site_media/js/flot/jquery.flot.symbol.js +0 -0
  106. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/site_media/js/flot/jquery.flot.threshold.js +0 -0
  107. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/site_media/js/followup_selectall.js +0 -0
  108. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/site_media/js/heatmap.js +0 -0
  109. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/site_media/js/lightcurve.js +0 -0
  110. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/site_media/js/lightcurveplotly.js +0 -0
  111. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/site_media/js/mjdcalc.js +0 -0
  112. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/site_media/js/plotly/plotly-latest.kws.js +0 -0
  113. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/site_media/js/recurrenceplot.js +0 -0
  114. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/site_media/js/recurrenceplotplotly.js +0 -0
  115. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/site_media/webfonts/fa-brands-400.eot +0 -0
  116. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/site_media/webfonts/fa-brands-400.svg +0 -0
  117. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/site_media/webfonts/fa-brands-400.ttf +0 -0
  118. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/site_media/webfonts/fa-brands-400.woff +0 -0
  119. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/site_media/webfonts/fa-brands-400.woff2 +0 -0
  120. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/site_media/webfonts/fa-regular-400.eot +0 -0
  121. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/site_media/webfonts/fa-regular-400.svg +0 -0
  122. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/site_media/webfonts/fa-regular-400.ttf +0 -0
  123. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/site_media/webfonts/fa-regular-400.woff +0 -0
  124. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/site_media/webfonts/fa-regular-400.woff2 +0 -0
  125. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/site_media/webfonts/fa-solid-900.eot +0 -0
  126. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/site_media/webfonts/fa-solid-900.svg +0 -0
  127. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/site_media/webfonts/fa-solid-900.ttf +0 -0
  128. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/site_media/webfonts/fa-solid-900.woff +0 -0
  129. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/site_media/webfonts/fa-solid-900.woff2 +0 -0
  130. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/sql/create_web_views.sql +0 -0
  131. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/templates/.DS_Store +0 -0
  132. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/templates/400.html +0 -0
  133. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/templates/403.html +0 -0
  134. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/templates/404.html +0 -0
  135. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/templates/500.html +0 -0
  136. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/templates/atlas/atelfasttrackobject.txt +0 -0
  137. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/templates/atlas/atelsdiscovery.txt +0 -0
  138. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/templates/atlas/atelsfast.txt +0 -0
  139. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/templates/atlas/candidate.html +0 -0
  140. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/templates/atlas/candidate_plotly.html +0 -0
  141. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/templates/atlas/candidate_plotly_test.html +0 -0
  142. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/templates/atlas/crossmatch_external.html +0 -0
  143. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/templates/atlas/error.html +0 -0
  144. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/templates/atlas/followup.html +0 -0
  145. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/templates/atlas/followup.txt +0 -0
  146. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/templates/atlas/followup2.html +0 -0
  147. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/templates/atlas/followup_bs.html +0 -0
  148. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/templates/atlas/followup_bypass_django_tables.html +0 -0
  149. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/templates/atlas/followup_quickview.html +0 -0
  150. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/templates/atlas/followup_quickview_bs.html +0 -0
  151. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/templates/atlas/followup_subset.txt +0 -0
  152. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/templates/atlas/gcn.txt +0 -0
  153. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/templates/atlas/gcn_latex.txt +0 -0
  154. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/templates/atlas/heatmap.html +0 -0
  155. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/templates/atlas/heatmap_test.html +0 -0
  156. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/templates/atlas/index.html +0 -0
  157. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/templates/atlas/index_bs.html +0 -0
  158. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/templates/atlas/index_bs_celestial.html +0 -0
  159. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/templates/atlas/index_bs_celestial_experiment.html +0 -0
  160. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/templates/atlas/iobserve.txt +0 -0
  161. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/templates/atlas/lightcurve.txt +0 -0
  162. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/templates/atlas/lightcurveddc.txt +0 -0
  163. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/templates/atlas/lightcurveforced.txt +0 -0
  164. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/templates/atlas/lightcurvestackedforced.txt +0 -0
  165. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/templates/atlas/pesstorecurrences.txt +0 -0
  166. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/templates/atlas/pesstorecurrencesddc.txt +0 -0
  167. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/templates/atlas/pesstosummary.txt +0 -0
  168. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/templates/atlas/search_results.html +0 -0
  169. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/templates/atlas/search_results_plotly.html +0 -0
  170. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/templates/atlas/sne.json +0 -0
  171. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/templates/atlas/summary.csv +0 -0
  172. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/templates/atlas/userdefinedlists.html +0 -0
  173. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/templates/atlas/userdefinedlists_bs.html +0 -0
  174. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/templates/atlas/visibility.txt +0 -0
  175. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/templates/base.html +0 -0
  176. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/templates/base_bootstrap.html +0 -0
  177. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/templates/base_bootstrap_login.html +0 -0
  178. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/templates/bootstrap4_django_tables2_atlas.html +0 -0
  179. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/templates/invalid_login.html +0 -0
  180. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/templates/loggedin.html +0 -0
  181. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/templates/login.html +0 -0
  182. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/templates/logout.html +0 -0
  183. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/atlas/test.py +0 -0
  184. {psat_server_web-0.4.2/psat_server_web/ps1 → psat_server_web-0.5.1/psat_server_web/atlas/tests}/__init__.py +0 -0
  185. {psat_server_web-0.4.2/psat_server_web/ps1/psdb → psat_server_web-0.5.1/psat_server_web/atlas/tests/atlasapi}/__init__.py +0 -0
  186. {psat_server_web-0.4.2/psat_server_web/ps1/site_media/js/celestial/data → psat_server_web-0.5.1/psat_server_web/common}/__init__.py +0 -0
  187. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/common/psat_api_client.py +0 -0
  188. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/config/wsgi.conf.template +0 -0
  189. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/createUsers.py +0 -0
  190. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/generate_mod_wsgi_apachectl.sh +0 -0
  191. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/manage.py +0 -0
  192. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/media/images/README.txt +0 -0
  193. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/psdb/admin.py.old +0 -0
  194. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/psdb/catalogueviews.py +0 -0
  195. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/psdb/commonqueries.py +0 -0
  196. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/psdb/dbviews.py +0 -0
  197. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/psdb/formchoices.py +0 -0
  198. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/psdb/helpers.py +0 -0
  199. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/psdb/img_scale.py +0 -0
  200. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/psdb/lightcurvequeries.py +0 -0
  201. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/psdb/models.py +0 -0
  202. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/psdb/settings.py +0 -0
  203. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/psdb/urls.py +0 -0
  204. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/psdb/views.py +0 -0
  205. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/psdb/wsgi.py +0 -0
  206. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/psdb/wsgi_apache_example.conf +0 -0
  207. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/psdbapi/apps.py +0 -0
  208. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/psdbapi/permissions.py +0 -0
  209. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/psdbapi/query_auth.py +0 -0
  210. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/psdbapi/serializers.py +0 -0
  211. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/psdbapi/urls.py +0 -0
  212. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/psdbapi/views.py +0 -0
  213. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/css/aladin.css +0 -0
  214. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/css/celestial.css +0 -0
  215. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/css/fontawesome.css +0 -0
  216. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/css/main.css +0 -0
  217. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/css/main_bootstrap.css +0 -0
  218. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/images/1-star-hover.jpg +0 -0
  219. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/images/1-star.jpg +0 -0
  220. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/images/2-star-hover.jpg +0 -0
  221. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/images/2-star.jpg +0 -0
  222. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/images/3-star-hover.jpg +0 -0
  223. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/images/3-star.jpg +0 -0
  224. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/images/aladin.gif +0 -0
  225. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/images/cfaIcon.jpg +0 -0
  226. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/images/cfaIconHover.jpg +0 -0
  227. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/images/confirmed-sne-hover.jpg +0 -0
  228. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/images/confirmed-sne.jpg +0 -0
  229. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/images/detection_example.jpg +0 -0
  230. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/images/down.jpeg +0 -0
  231. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/images/down.jpg +0 -0
  232. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/images/image_not_available.jpeg +0 -0
  233. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/images/jhuIcon.jpg +0 -0
  234. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/images/jhuIconHover.jpg +0 -0
  235. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/images/minus.jpg +0 -0
  236. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/images/ncuIcon.jpg +0 -0
  237. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/images/ncuIconHover.jpg +0 -0
  238. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/images/non_detection_example.jpg +0 -0
  239. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/images/others-hover.jpg +0 -0
  240. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/images/others.jpg +0 -0
  241. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/images/panstarrs-logo-hover.jpg +0 -0
  242. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/images/panstarrs-logo.jpg +0 -0
  243. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/images/panstarrs1_logo.jpg +0 -0
  244. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/images/panstarrs1_o3_logo.jpg +0 -0
  245. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/images/panstarrs2_logo.jpg +0 -0
  246. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/images/panstarrs2_o3_logo.jpg +0 -0
  247. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/images/panstarrs_logo.jpg +0 -0
  248. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/images/panstarrs_logo_o4.jpg +0 -0
  249. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/images/panstarrs_logo_original.jpg +0 -0
  250. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/images/panstarrs_logo_yse.jpg +0 -0
  251. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/images/panstarrs_logo_yse_stack.jpg +0 -0
  252. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/images/pittsIcon.jpg +0 -0
  253. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/images/pittsIconHover.jpg +0 -0
  254. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/images/plus.jpg +0 -0
  255. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/images/ps1Icon.jpg +0 -0
  256. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/images/ps1IconHover.jpg +0 -0
  257. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/images/ps1sc.gif +0 -0
  258. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/images/qub-logo-hover.jpg +0 -0
  259. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/images/qub-logo.jpg +0 -0
  260. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/images/qubIcon.jpg +0 -0
  261. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/images/qubIconHover.jpg +0 -0
  262. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/images/sdss.gif +0 -0
  263. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/images/table-background.jpg +0 -0
  264. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/images/table-bottom-left.jpg +0 -0
  265. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/images/table-bottom-right.jpg +0 -0
  266. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/images/table-row.jpg +0 -0
  267. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/images/table-top-left.jpg +0 -0
  268. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/images/table-top-right.jpg +0 -0
  269. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/images/uhifaIcon.jpg +0 -0
  270. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/images/uhifaIconHover.jpg +0 -0
  271. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/images/up.jpeg +0 -0
  272. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/images/up.jpg +0 -0
  273. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/images/variable-stars-hover.jpg +0 -0
  274. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/images/variable-stars.jpg +0 -0
  275. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/js/aladin.js +0 -0
  276. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/js/celestial/celestial.js +0 -0
  277. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/js/celestial/d3.geo.projection.js +0 -0
  278. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/js/celestial/d3.geo.projection.min.js +0 -0
  279. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/js/celestial/d3.geo.zoom.js +0 -0
  280. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/js/celestial/d3.min.js +0 -0
  281. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/js/celestial/data/constellations.bounds.json +0 -0
  282. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/js/celestial/data/constellations.json +0 -0
  283. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/js/celestial/data/constellations.lines.json +0 -0
  284. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/js/celestial/data/dsos.bright.json +0 -0
  285. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/js/celestial/data/lg.json +0 -0
  286. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/js/celestial/data/mw.json +0 -0
  287. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/js/celestial/data/planets.json +0 -0
  288. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/js/celestial/data/stars.6.json +0 -0
  289. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/js/colourplot.js +0 -0
  290. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/js/flot/excanvas.js +0 -0
  291. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/js/flot/jquery-1.7.2.js +0 -0
  292. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/js/flot/jquery.flot.axislabels.js +0 -0
  293. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/js/flot/jquery.flot.crosshair.js +0 -0
  294. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/js/flot/jquery.flot.errorbars.js +0 -0
  295. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/js/flot/jquery.flot.fillbetween.js +0 -0
  296. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/js/flot/jquery.flot.image.js +0 -0
  297. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/js/flot/jquery.flot.js +0 -0
  298. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/js/flot/jquery.flot.navigate.js +0 -0
  299. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/js/flot/jquery.flot.pie.js +0 -0
  300. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/js/flot/jquery.flot.resize.js +0 -0
  301. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/js/flot/jquery.flot.selection.js +0 -0
  302. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/js/flot/jquery.flot.stack.js +0 -0
  303. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/js/flot/jquery.flot.symbol.js +0 -0
  304. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/js/flot/jquery.flot.threshold.js +0 -0
  305. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/js/followup_selectall.js +0 -0
  306. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/js/lightcurve.js +0 -0
  307. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/js/lightcurveplotly.js +0 -0
  308. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/js/mjdcalc.js +0 -0
  309. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/js/plotly/plotly-latest.kws.js +0 -0
  310. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/js/recurrenceplot.js +0 -0
  311. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/js/recurrenceplotplotly.js +0 -0
  312. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/webfonts/fa-brands-400.eot +0 -0
  313. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/webfonts/fa-brands-400.svg +0 -0
  314. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/webfonts/fa-brands-400.ttf +0 -0
  315. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/webfonts/fa-brands-400.woff +0 -0
  316. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/webfonts/fa-brands-400.woff2 +0 -0
  317. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/webfonts/fa-regular-400.eot +0 -0
  318. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/webfonts/fa-regular-400.svg +0 -0
  319. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/webfonts/fa-regular-400.ttf +0 -0
  320. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/webfonts/fa-regular-400.woff +0 -0
  321. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/webfonts/fa-regular-400.woff2 +0 -0
  322. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/webfonts/fa-solid-900.eot +0 -0
  323. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/webfonts/fa-solid-900.svg +0 -0
  324. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/webfonts/fa-solid-900.ttf +0 -0
  325. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/webfonts/fa-solid-900.woff +0 -0
  326. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/site_media/webfonts/fa-solid-900.woff2 +0 -0
  327. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/sql/create_web_cat_views.sql +0 -0
  328. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/sql/create_web_user_grants.sql +0 -0
  329. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/sql/create_web_views.sql +0 -0
  330. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/sql/create_web_views_fgss.sql +0 -0
  331. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/templates/400.html +0 -0
  332. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/templates/403.html +0 -0
  333. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/templates/404.html +0 -0
  334. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/templates/500.html +0 -0
  335. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/templates/admin/base_site.html +0 -0
  336. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/templates/base.html +0 -0
  337. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/templates/base_bootstrap.html +0 -0
  338. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/templates/base_bootstrap_login.html +0 -0
  339. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/templates/base_new.html +0 -0
  340. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/templates/bootstrap4_django_tables2_atlas.html +0 -0
  341. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/templates/invalid_login.html +0 -0
  342. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/templates/loggedin.html +0 -0
  343. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/templates/login.html +0 -0
  344. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/templates/logout.html +0 -0
  345. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/templates/psdb/atelsdiscovery.txt +0 -0
  346. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/templates/psdb/candidate.html +0 -0
  347. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/templates/psdb/candidate_plotly.html +0 -0
  348. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/templates/psdb/candidate_quickview.html +0 -0
  349. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/templates/psdb/candidateflot.html +0 -0
  350. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/templates/psdb/candidates.html +0 -0
  351. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/templates/psdb/colourdata.txt +0 -0
  352. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/templates/psdb/crossmatch_cfa_with_ipp.html +0 -0
  353. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/templates/psdb/crossmatch_external.html +0 -0
  354. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/templates/psdb/dss2.html +0 -0
  355. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/templates/psdb/error.html +0 -0
  356. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/templates/psdb/fasttrackastronote.txt +0 -0
  357. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/templates/psdb/filter.html +0 -0
  358. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/templates/psdb/followup.html +0 -0
  359. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/templates/psdb/followup.txt +0 -0
  360. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/templates/psdb/followup_bs.html +0 -0
  361. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/templates/psdb/followup_bs_old.html +0 -0
  362. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/templates/psdb/followup_quickview.html +0 -0
  363. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/templates/psdb/followup_quickview_bs.html +0 -0
  364. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/templates/psdb/followup_quickview_bs_old.html +0 -0
  365. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/templates/psdb/gcn.txt +0 -0
  366. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/templates/psdb/gcn_latex.txt +0 -0
  367. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/templates/psdb/index.html +0 -0
  368. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/templates/psdb/index_bs_celestial.html +0 -0
  369. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/templates/psdb/index_public.html +0 -0
  370. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/templates/psdb/lightcurve.txt +0 -0
  371. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/templates/psdb/lightcurveforced.txt +0 -0
  372. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/templates/psdb/lightcurves.html +0 -0
  373. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/templates/psdb/obscat.txt +0 -0
  374. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/templates/psdb/obsmediawiki.txt +0 -0
  375. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/templates/psdb/public.html +0 -0
  376. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/templates/psdb/public_textonly.txt +0 -0
  377. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/templates/psdb/reports.html +0 -0
  378. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/templates/psdb/search_results.html +0 -0
  379. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/templates/psdb/search_results_plotly.html +0 -0
  380. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/templates/psdb/sne.json +0 -0
  381. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/templates/psdb/userdefinedlists.html +0 -0
  382. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/ps1/templates/psdb/userdefinedlists_bs.html +0 -0
  383. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/schema/atlas_detections.sql +0 -0
  384. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/schema/atlas_detectionsddc.sql +0 -0
  385. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/schema/atlas_detectionsnnc.sql +0 -0
  386. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/schema/atlas_diff_detections.sql +0 -0
  387. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/schema/atlas_diff_logs.sql +0 -0
  388. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/schema/atlas_diff_moments.sql +0 -0
  389. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/schema/atlas_diff_objects.sql +0 -0
  390. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/schema/atlas_diff_subcell_logs.sql +0 -0
  391. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/schema/atlas_diff_subcells.sql +0 -0
  392. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/schema/atlas_forced_photometry.sql +0 -0
  393. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/schema/atlas_heatmaps.sql +0 -0
  394. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/schema/atlas_metadata.sql +0 -0
  395. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/schema/atlas_metadataddc.sql +0 -0
  396. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/schema/atlas_objects.sql +0 -0
  397. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/schema/atlas_stacked_forced_photometry.sql +0 -0
  398. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/schema/convert_backend_storage_to_innodb.sql +0 -0
  399. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/schema/create_atlas_flattened_view.sql +0 -0
  400. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/schema/create_photpipe_views.sql +0 -0
  401. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/schema/create_schema.sql +0 -0
  402. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/schema/create_user_grants.sql +0 -0
  403. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/schema/create_user_grants_generic.sql +0 -0
  404. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/schema/create_user_grants_root.sql +0 -0
  405. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/schema/delete_transients.sql +0 -0
  406. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/schema/generateATLASSchemaAndCPPClasses.py +0 -0
  407. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/schema/get_table_columns_for_avro.py +0 -0
  408. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/schema/get_table_columns_for_avro.sql +0 -0
  409. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/schema/mjdnow.sql +0 -0
  410. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/schema/refresh_django_views.py +0 -0
  411. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/schema/setup_database.py +0 -0
  412. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/schema/setup_database_utils.py +0 -0
  413. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/schema/sherlock_classifications.sql +0 -0
  414. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/schema/sherlock_crossmatches.sql +0 -0
  415. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/schema/sherlock_triggers_atlas.sql +0 -0
  416. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/schema/sherlock_triggers_ps1.sql +0 -0
  417. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/schema/tcs_cat_gaia_dr1.sql +0 -0
  418. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/schema/tcs_cat_gaia_dr2.sql +0 -0
  419. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/schema/tcs_cat_gaia_dr2_cassandra.cql +0 -0
  420. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/schema/tcs_cat_kepler_k2.sql +0 -0
  421. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/schema/tcs_cat_kepler_k2_pixels.sql +0 -0
  422. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/schema/tcs_cat_ps1_medium_deep_ref.sql +0 -0
  423. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/schema/tcs_cat_ps1_ubercal_stars.sql +0 -0
  424. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/schema/tcs_cat_satellites.sql +0 -0
  425. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/schema/tcs_catalogue_tables.sql +0 -0
  426. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/schema/tcs_cfa_detections.sql +0 -0
  427. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/schema/tcs_cfa_to_ipp_lookup.sql +0 -0
  428. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/schema/tcs_classification_flags.sql +0 -0
  429. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/schema/tcs_classification_history.sql +0 -0
  430. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/schema/tcs_cmf_metadata.sql +0 -0
  431. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/schema/tcs_cross_matches.sql +0 -0
  432. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/schema/tcs_cross_matches_external.sql +0 -0
  433. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/schema/tcs_detection_lists.sql +0 -0
  434. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/schema/tcs_detection_lists_atlas.sql +0 -0
  435. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/schema/tcs_followup_photometry.sql +0 -0
  436. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/schema/tcs_followup_telescope_instruments.sql +0 -0
  437. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/schema/tcs_followup_telescopes.sql +0 -0
  438. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/schema/tcs_forced_photometry.sql +0 -0
  439. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/schema/tcs_function_lunation.sql +0 -0
  440. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/schema/tcs_function_mjdlunation.sql +0 -0
  441. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/schema/tcs_gravity_event_annotations.sql +0 -0
  442. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/schema/tcs_gravity_events.sql +0 -0
  443. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/schema/tcs_guide_star_cat.sql +0 -0
  444. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/schema/tcs_image_groups.sql +0 -0
  445. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/schema/tcs_images.sql +0 -0
  446. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/schema/tcs_ipp_to_cfa_lookup.sql +0 -0
  447. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/schema/tcs_latest_object_stats.sql +0 -0
  448. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/schema/tcs_object_comments.sql +0 -0
  449. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/schema/tcs_object_group_definitions.sql +0 -0
  450. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/schema/tcs_object_group_definitions_atlas.sql +0 -0
  451. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/schema/tcs_object_groups.sql +0 -0
  452. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/schema/tcs_parameter_definitions.sql +0 -0
  453. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/schema/tcs_photpipe_detections.sql +0 -0
  454. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/schema/tcs_postage_stamp_images.sql +0 -0
  455. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/schema/tcs_postage_stamp_requests.sql +0 -0
  456. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/schema/tcs_postage_stamp_status_codes.sql +0 -0
  457. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/schema/tcs_processing_status.sql +0 -0
  458. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/schema/tcs_search_parameters.sql +0 -0
  459. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/schema/tcs_tns_requests.sql +0 -0
  460. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/schema/tcs_tphot_detections.sql +0 -0
  461. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/schema/tcs_transient_objects.sql +0 -0
  462. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/schema/tcs_transient_reobservations.sql +0 -0
  463. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/schema/tcs_vra_rank.sql +0 -0
  464. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/schema/tcs_vra_scores.sql +0 -0
  465. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/schema/tcs_vra_todo.sql +0 -0
  466. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/schema/tcs_zoo_requests.sql +0 -0
  467. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/schema/tcs_zooniverse_scores.sql +0 -0
  468. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/schema/types_gaia_dr2_cassandra.txt +0 -0
  469. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/schema/update_database_types_to_tns_types_atlas.sql +0 -0
  470. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/schema/update_database_types_to_tns_types_panstarrs.sql +0 -0
  471. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/schema/update_tcs_gravity_alerts_001.sql +0 -0
  472. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/schema/update_tcs_gravity_event_annotations_001.sql +0 -0
  473. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/schema/update_tcs_latest_object_stats_001.sql +0 -0
  474. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/schema/update_tcs_vra_rank_20240814.sql +0 -0
  475. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/schema/update_tcs_vra_scores_20240814.sql +0 -0
  476. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web/schema/vra_triggers_atlas.sql +0 -0
  477. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web.egg-info/dependency_links.txt +0 -0
  478. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web.egg-info/not-zip-safe +0 -0
  479. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/psat_server_web.egg-info/requires.txt +0 -0
  480. {psat_server_web-0.4.2 → psat_server_web-0.5.1}/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.1
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.1'
@@ -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,18 @@
1
+ # Generated by Django 5.1 on 2024-12-04 12:00
2
+
3
+ from django.db import migrations, models
4
+
5
+
6
+ class Migration(migrations.Migration):
7
+
8
+ dependencies = [
9
+ ('accounts', '0001_initial'),
10
+ ]
11
+
12
+ operations = [
13
+ migrations.AddField(
14
+ model_name='groupprofile',
15
+ name='api_write_access',
16
+ field=models.BooleanField(default=False, help_text='Does the group have write access to the API?'),
17
+ ),
18
+ ]
@@ -17,10 +17,14 @@ class GroupProfile(models.Model):
17
17
  on_delete=models.CASCADE,
18
18
  related_name='profile'
19
19
  )
20
+ api_write_access = models.BooleanField(
21
+ default=False,
22
+ help_text='Does the group have write access to the API?'
23
+ )
20
24
  token_expiration_time = models.DurationField(
21
25
  help_text='in days, default 1 day (24*60*60 seconds)',
22
26
  default=timedelta(days=1)
23
- )
27
+ )
24
28
  description = models.TextField(
25
29
  blank=True,
26
30
  help_text='What is the group for?'
@@ -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('DJANGO_MYSQL_TESTDBNAME'),
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
@@ -1,4 +1,5 @@
1
1
  from re import match
2
+ import logging
2
3
 
3
4
  from django.conf import settings
4
5
  from django.utils.timezone import now
@@ -6,6 +7,8 @@ from rest_framework.authtoken.models import Token
6
7
  from rest_framework.authentication import TokenAuthentication
7
8
  from rest_framework.exceptions import AuthenticationFailed
8
9
 
10
+ logger = logging.getLogger(__name__)
11
+
9
12
  class ExpiringTokenAuthentication(TokenAuthentication):
10
13
  """
11
14
  Token authentication using the ExpiringToken model, which has an expiry
@@ -23,8 +26,9 @@ class ExpiringTokenAuthentication(TokenAuthentication):
23
26
  try:
24
27
  group_profile = user.groups.first().profile
25
28
  except AttributeError:
26
- # TODO: Log this error?
27
- raise AuthenticationFailed('Could not authenticate: Group has no profile. Please contact administrator.')
29
+ msg = 'Could not authenticate: Group has no profile. Please contact administrator.'
30
+ logger.error(msg)
31
+ raise AuthenticationFailed(msg)
28
32
  token_expiration_time = group_profile.token_expiration_time.total_seconds()
29
33
  else:
30
34
  # Otherwise use the default expiration time
@@ -33,6 +37,7 @@ class ExpiringTokenAuthentication(TokenAuthentication):
33
37
  # Calculate the token's age and compare it to the expiration setting
34
38
  token_age = (now() - token.created).total_seconds()
35
39
  if token_age > token_expiration_time:
40
+ logger.warning(f'User {user} attempted to use an expired token.')
36
41
  raise AuthenticationFailed('Token has expired.')
37
42
 
38
43
  return user, token
@@ -0,0 +1,45 @@
1
+ import logging
2
+
3
+ from rest_framework.permissions import BasePermission, SAFE_METHODS
4
+
5
+
6
+ logger = logging.getLogger(__name__)
7
+
8
+ class HasReadAccess(BasePermission):
9
+ def has_permission(self, request, view):
10
+ # Allow all safe methods (GET, OPTIONS, HEAD)
11
+ if request.method in SAFE_METHODS:
12
+ return True
13
+
14
+ # Allow POST if the user is authenticated
15
+ return (request.user
16
+ and request.user.is_authenticated)
17
+
18
+
19
+ class HasWriteAccess(BasePermission):
20
+ def has_permission(self, request, view):
21
+ # Allow all safe methods (GET, OPTIONS, HEAD)
22
+ if request.method in SAFE_METHODS:
23
+ return True
24
+
25
+ write_fl = False
26
+ user = request.user
27
+ # Retrieve the user's group and get the api write access flag from the
28
+ # group profile
29
+ if user.groups.exists():
30
+ try:
31
+ group_profile = user.groups.first().profile
32
+ write_fl = group_profile.api_write_access
33
+ except AttributeError:
34
+ # If the group has no profile, then there's something wrong with
35
+ # the database. This should be fixed by an administrator, but
36
+ # we don't need to block the user from accessing the API.
37
+ msg = 'Could not authorise based on group: Group has no profile.'
38
+ logger.error(msg)
39
+ write_fl = False
40
+
41
+ # Only allow POST to write endpoints if the user is authenticated and is
42
+ # either in a writeable group or is a staff member
43
+ return (request.user
44
+ and request.user.is_authenticated
45
+ and (write_fl or request.user.is_staff))
@@ -28,7 +28,7 @@ from .serializers import (
28
28
  ObjectDetectionListSerializer,
29
29
  )
30
30
  from .authentication import QueryAuthentication, ExpiringTokenAuthentication
31
- from .permissions import IsApprovedUser
31
+ from .permissions import HasReadAccess, HasWriteAccess
32
32
 
33
33
  def retcode(message):
34
34
  if 'error' in message: return status.HTTP_400_BAD_REQUEST
@@ -68,7 +68,7 @@ class ObtainExpiringAuthToken(ObtainAuthToken):
68
68
 
69
69
  class ConeView(APIView):
70
70
  authentication_classes = [ExpiringTokenAuthentication, QueryAuthentication]
71
- permission_classes = [IsAuthenticated&IsApprovedUser]
71
+ permission_classes = [IsAuthenticated&HasReadAccess]
72
72
 
73
73
  def get(self, request):
74
74
  serializer = ConeSerializer(data=request.GET, context={'request': request})
@@ -87,7 +87,7 @@ class ConeView(APIView):
87
87
 
88
88
  class ObjectsView(APIView):
89
89
  authentication_classes = [ExpiringTokenAuthentication, QueryAuthentication]
90
- permission_classes = [IsAuthenticated&IsApprovedUser]
90
+ permission_classes = [IsAuthenticated&HasReadAccess]
91
91
 
92
92
  def get(self, request):
93
93
  serializer = ObjectsSerializer(data=request.GET, context={'request': request})
@@ -106,7 +106,7 @@ class ObjectsView(APIView):
106
106
 
107
107
  class ObjectListView(APIView):
108
108
  authentication_classes = [ExpiringTokenAuthentication, QueryAuthentication]
109
- permission_classes = [IsAuthenticated&IsApprovedUser]
109
+ permission_classes = [IsAuthenticated&HasReadAccess]
110
110
 
111
111
  def get(self, request):
112
112
  serializer = ObjectListSerializer(data=request.GET, context={'request': request})
@@ -125,7 +125,7 @@ class ObjectListView(APIView):
125
125
 
126
126
  class VRAScoresView(APIView):
127
127
  authentication_classes = [ExpiringTokenAuthentication, QueryAuthentication]
128
- permission_classes = [IsAuthenticated&IsApprovedUser]
128
+ permission_classes = [IsAuthenticated&HasWriteAccess]
129
129
 
130
130
  def get(self, request):
131
131
  return Response({"Error": "GET is not implemented for this service."})
@@ -142,7 +142,7 @@ class VRAScoresView(APIView):
142
142
 
143
143
  class VRAScoresListView(APIView):
144
144
  authentication_classes = [ExpiringTokenAuthentication, QueryAuthentication]
145
- permission_classes = [IsAuthenticated&IsApprovedUser]
145
+ permission_classes = [IsAuthenticated&HasReadAccess]
146
146
 
147
147
  def get(self, request):
148
148
  serializer = VRAScoresListSerializer(data=request.GET, context={'request': request})
@@ -162,7 +162,7 @@ class VRAScoresListView(APIView):
162
162
  # appropriate to the circumstances. E.g. if object is not found generate a 404, etc.
163
163
  class VRATodoView(APIView):
164
164
  authentication_classes = [ExpiringTokenAuthentication, QueryAuthentication]
165
- permission_classes = [IsAuthenticated&IsApprovedUser]
165
+ permission_classes = [IsAuthenticated&HasWriteAccess]
166
166
 
167
167
  def get(self, request):
168
168
  return Response({"Error": "GET is not implemented for this service."})
@@ -179,7 +179,7 @@ class VRATodoView(APIView):
179
179
  # 2024-05-07 KWS Added VRATodoListView.
180
180
  class VRATodoListView(APIView):
181
181
  authentication_classes = [ExpiringTokenAuthentication, QueryAuthentication]
182
- permission_classes = [IsAuthenticated&IsApprovedUser]
182
+ permission_classes = [IsAuthenticated&HasReadAccess]
183
183
 
184
184
  def get(self, request):
185
185
  serializer = VRATodoListSerializer(data=request.GET, context={'request': request})
@@ -197,7 +197,7 @@ class VRATodoListView(APIView):
197
197
 
198
198
  class TcsObjectGroupsView(APIView):
199
199
  authentication_classes = [ExpiringTokenAuthentication, QueryAuthentication]
200
- permission_classes = [IsAuthenticated&IsApprovedUser]
200
+ permission_classes = [IsAuthenticated&HasWriteAccess]
201
201
 
202
202
  def get(self, request):
203
203
  return Response({"Error": "GET is not implemented for this service."})
@@ -213,7 +213,7 @@ class TcsObjectGroupsView(APIView):
213
213
 
214
214
  class TcsObjectGroupsListView(APIView):
215
215
  authentication_classes = [ExpiringTokenAuthentication, QueryAuthentication]
216
- permission_classes = [IsAuthenticated&IsApprovedUser]
216
+ permission_classes = [IsAuthenticated&HasReadAccess]
217
217
 
218
218
  def get(self, request):
219
219
  serializer = TcsObjectGroupsListSerializer(data=request.GET, context={'request': request})
@@ -232,7 +232,8 @@ class TcsObjectGroupsListView(APIView):
232
232
 
233
233
  class TcsObjectGroupsDeleteView(APIView):
234
234
  authentication_classes = [ExpiringTokenAuthentication, QueryAuthentication]
235
- permission_classes = [IsAuthenticated&IsApprovedUser]
235
+ # TODO: Change this to HasDeleteAccess?
236
+ permission_classes = [IsAuthenticated&HasWriteAccess]
236
237
 
237
238
  def get(self, request):
238
239
  return Response({"Error": "GET is not implemented for this service."})
@@ -255,7 +256,7 @@ class TcsObjectGroupsDeleteView(APIView):
255
256
  # appropriate to the circumstances. E.g. if object is not found generate a 404, etc.
256
257
  class VRARankView(APIView):
257
258
  authentication_classes = [ExpiringTokenAuthentication, QueryAuthentication]
258
- permission_classes = [IsAuthenticated&IsApprovedUser]
259
+ permission_classes = [IsAuthenticated&HasWriteAccess]
259
260
 
260
261
  def get(self, request):
261
262
  return Response({"Error": "GET is not implemented for this service."})
@@ -272,7 +273,7 @@ class VRARankView(APIView):
272
273
  # 2024-05-22 KWS Added VRARankListView.
273
274
  class VRARankListView(APIView):
274
275
  authentication_classes = [ExpiringTokenAuthentication, QueryAuthentication]
275
- permission_classes = [IsAuthenticated&IsApprovedUser]
276
+ permission_classes = [IsAuthenticated&HasReadAccess]
276
277
 
277
278
  def get(self, request):
278
279
  serializer = VRARankListSerializer(data=request.GET, context={'request': request})
@@ -292,7 +293,7 @@ class VRARankListView(APIView):
292
293
  # 2024-09-24 KWS Added ExternalCrossmatchesListView.
293
294
  class ExternalCrossmatchesListView(APIView):
294
295
  authentication_classes = [ExpiringTokenAuthentication, QueryAuthentication]
295
- permission_classes = [IsAuthenticated&IsApprovedUser]
296
+ permission_classes = [IsAuthenticated&HasReadAccess]
296
297
 
297
298
  def get(self, request):
298
299
  serializer = ExternalCrossmatchesListSerializer(data=request.GET, context={'request': request})
@@ -312,7 +313,7 @@ class ExternalCrossmatchesListView(APIView):
312
313
  # 2024-09-24 KWS Added ExternalCrossmatchesListView.
313
314
  class ObjectDetectionListView(APIView):
314
315
  authentication_classes = [ExpiringTokenAuthentication, QueryAuthentication]
315
- permission_classes = [IsAuthenticated&IsApprovedUser]
316
+ permission_classes = [IsAuthenticated&HasWriteAccess]
316
317
 
317
318
  def get(self, request):
318
319
  serializer = ObjectDetectionListSerializer(data=request.GET, context={'request': request})