psat-server-web 0.4.1__tar.gz → 0.4.2__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 (468) hide show
  1. {psat_server_web-0.4.1/psat_server_web.egg-info → psat_server_web-0.4.2}/PKG-INFO +1 -1
  2. psat_server_web-0.4.2/psat_server_web/__version__.py +1 -0
  3. psat_server_web-0.4.2/psat_server_web/atlas/accounts/admin.py +18 -0
  4. psat_server_web-0.4.2/psat_server_web/atlas/accounts/apps.py +8 -0
  5. psat_server_web-0.4.2/psat_server_web/atlas/accounts/migrations/0001_initial.py +32 -0
  6. psat_server_web-0.4.2/psat_server_web/atlas/accounts/models.py +37 -0
  7. psat_server_web-0.4.2/psat_server_web/atlas/accounts/signals.py +15 -0
  8. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/atlas/dbviews.py +52 -0
  9. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/atlas/models.py +4 -2
  10. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/atlas/settings.py +8 -2
  11. psat_server_web-0.4.2/psat_server_web/atlas/atlasapi/authentication.py +55 -0
  12. {psat_server_web-0.4.1/psat_server_web/ps1/psdbapi → psat_server_web-0.4.2/psat_server_web/atlas/atlasapi}/permissions.py +0 -1
  13. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/atlasapi/urls.py +1 -2
  14. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/atlasapi/views.py +70 -23
  15. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/generate_mod_wsgi_apachectl.sh +2 -0
  16. psat_server_web-0.4.2/psat_server_web/atlas/tests/test_permissions.py +28 -0
  17. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/common/psat_api_client.py +2 -2
  18. psat_server_web-0.4.2/psat_server_web/ps1/psdb/__init__.py +0 -0
  19. psat_server_web-0.4.2/psat_server_web/ps1/site_media/js/celestial/data/__init__.py +0 -0
  20. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/schema/tcs_vra_scores.sql +1 -1
  21. {psat_server_web-0.4.1 → psat_server_web-0.4.2/psat_server_web.egg-info}/PKG-INFO +1 -1
  22. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web.egg-info/SOURCES.txt +9 -2
  23. psat_server_web-0.4.1/psat_server_web/__version__.py +0 -1
  24. psat_server_web-0.4.1/psat_server_web/ps1/psdbapi/query_auth.py +0 -17
  25. psat_server_web-0.4.1/psat_server_web/schema/tcs_vra_probabilities.sql +0 -14
  26. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/LICENSE +0 -0
  27. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/MANIFEST.in +0 -0
  28. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/README.md +0 -0
  29. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/.DS_Store +0 -0
  30. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/__init__.py +0 -0
  31. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/.DS_Store +0 -0
  32. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/__init__.py +0 -0
  33. {psat_server_web-0.4.1/psat_server_web/atlas/atlas → psat_server_web-0.4.2/psat_server_web/atlas/accounts/migrations}/__init__.py +0 -0
  34. {psat_server_web-0.4.1/psat_server_web/atlas/site_media/js/celestial/data → psat_server_web-0.4.2/psat_server_web/atlas/atlas}/__init__.py +0 -0
  35. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/atlas/apiutils.py +0 -0
  36. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/atlas/commonqueries.py +0 -0
  37. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/atlas/document.sh +0 -0
  38. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/atlas/formchoices.py +0 -0
  39. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/atlas/helpers.py +0 -0
  40. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/atlas/insert_gravity_event.sql +0 -0
  41. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/atlas/lightcurvequeries.py +0 -0
  42. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/atlas/sqlpaginator.py +0 -0
  43. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/atlas/urls.py +0 -0
  44. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/atlas/view_celestial.py +0 -0
  45. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/atlas/views.py +0 -0
  46. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/atlas/wsgi.atlas.conf +0 -0
  47. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/atlas/wsgi.py +0 -0
  48. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/atlas/wsgi_apache_example.conf +0 -0
  49. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/atlasapi/apps.py +0 -0
  50. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/atlasapi/serializers.py +0 -0
  51. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/cow_backup.txt +0 -0
  52. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/generate_mod_wsgi_apachectl_test.sh +0 -0
  53. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/manage.py +0 -0
  54. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/media/images/README.txt +0 -0
  55. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/site_media/css/aladin.css +0 -0
  56. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/site_media/css/celestial.css +0 -0
  57. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/site_media/css/fontawesome.css +0 -0
  58. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/site_media/css/main.css +0 -0
  59. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/site_media/css/main_bootstrap.css +0 -0
  60. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/site_media/images/atlas_logo.png +0 -0
  61. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/site_media/images/image_not_available.jpeg +0 -0
  62. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/site_media/js/aladin.js +0 -0
  63. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/site_media/js/bootstrap_utils.js +0 -0
  64. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/site_media/js/celestial/celestial.js +0 -0
  65. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/site_media/js/celestial/d3.geo.projection.js +0 -0
  66. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/site_media/js/celestial/d3.geo.projection.min.js +0 -0
  67. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/site_media/js/celestial/d3.geo.zoom.js +0 -0
  68. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/site_media/js/celestial/d3.min.js +0 -0
  69. {psat_server_web-0.4.1/psat_server_web/common → psat_server_web-0.4.2/psat_server_web/atlas/site_media/js/celestial/data}/__init__.py +0 -0
  70. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/site_media/js/celestial/data/constellations.bounds.json +0 -0
  71. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/site_media/js/celestial/data/constellations.json +0 -0
  72. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/site_media/js/celestial/data/constellations.lines.json +0 -0
  73. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/site_media/js/celestial/data/dsos.bright.json +0 -0
  74. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/site_media/js/celestial/data/lg.json +0 -0
  75. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/site_media/js/celestial/data/mw.json +0 -0
  76. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/site_media/js/celestial/data/planets.json +0 -0
  77. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/site_media/js/celestial/data/stars.6.json +0 -0
  78. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/site_media/js/colourplot.js +0 -0
  79. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/site_media/js/flot/excanvas.js +0 -0
  80. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/site_media/js/flot/jquery-1.7.2.js +0 -0
  81. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/site_media/js/flot/jquery.flot.axislabels.js +0 -0
  82. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/site_media/js/flot/jquery.flot.crosshair.js +0 -0
  83. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/site_media/js/flot/jquery.flot.errorbars.js +0 -0
  84. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/site_media/js/flot/jquery.flot.fillbetween.js +0 -0
  85. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/site_media/js/flot/jquery.flot.image.js +0 -0
  86. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/site_media/js/flot/jquery.flot.js +0 -0
  87. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/site_media/js/flot/jquery.flot.navigate.js +0 -0
  88. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/site_media/js/flot/jquery.flot.pie.js +0 -0
  89. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/site_media/js/flot/jquery.flot.resize.js +0 -0
  90. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/site_media/js/flot/jquery.flot.selection.js +0 -0
  91. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/site_media/js/flot/jquery.flot.stack.js +0 -0
  92. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/site_media/js/flot/jquery.flot.symbol.js +0 -0
  93. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/site_media/js/flot/jquery.flot.threshold.js +0 -0
  94. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/site_media/js/followup_selectall.js +0 -0
  95. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/site_media/js/heatmap.js +0 -0
  96. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/site_media/js/lightcurve.js +0 -0
  97. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/site_media/js/lightcurveplotly.js +0 -0
  98. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/site_media/js/mjdcalc.js +0 -0
  99. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/site_media/js/plotly/plotly-latest.kws.js +0 -0
  100. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/site_media/js/recurrenceplot.js +0 -0
  101. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/site_media/js/recurrenceplotplotly.js +0 -0
  102. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/site_media/webfonts/fa-brands-400.eot +0 -0
  103. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/site_media/webfonts/fa-brands-400.svg +0 -0
  104. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/site_media/webfonts/fa-brands-400.ttf +0 -0
  105. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/site_media/webfonts/fa-brands-400.woff +0 -0
  106. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/site_media/webfonts/fa-brands-400.woff2 +0 -0
  107. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/site_media/webfonts/fa-regular-400.eot +0 -0
  108. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/site_media/webfonts/fa-regular-400.svg +0 -0
  109. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/site_media/webfonts/fa-regular-400.ttf +0 -0
  110. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/site_media/webfonts/fa-regular-400.woff +0 -0
  111. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/site_media/webfonts/fa-regular-400.woff2 +0 -0
  112. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/site_media/webfonts/fa-solid-900.eot +0 -0
  113. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/site_media/webfonts/fa-solid-900.svg +0 -0
  114. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/site_media/webfonts/fa-solid-900.ttf +0 -0
  115. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/site_media/webfonts/fa-solid-900.woff +0 -0
  116. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/site_media/webfonts/fa-solid-900.woff2 +0 -0
  117. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/sql/create_web_views.sql +0 -0
  118. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/templates/.DS_Store +0 -0
  119. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/templates/400.html +0 -0
  120. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/templates/403.html +0 -0
  121. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/templates/404.html +0 -0
  122. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/templates/500.html +0 -0
  123. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/templates/atlas/atelfasttrackobject.txt +0 -0
  124. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/templates/atlas/atelsdiscovery.txt +0 -0
  125. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/templates/atlas/atelsfast.txt +0 -0
  126. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/templates/atlas/candidate.html +0 -0
  127. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/templates/atlas/candidate_plotly.html +0 -0
  128. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/templates/atlas/candidate_plotly_test.html +0 -0
  129. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/templates/atlas/crossmatch_external.html +0 -0
  130. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/templates/atlas/error.html +0 -0
  131. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/templates/atlas/followup.html +0 -0
  132. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/templates/atlas/followup.txt +0 -0
  133. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/templates/atlas/followup2.html +0 -0
  134. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/templates/atlas/followup_bs.html +0 -0
  135. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/templates/atlas/followup_bypass_django_tables.html +0 -0
  136. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/templates/atlas/followup_quickview.html +0 -0
  137. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/templates/atlas/followup_quickview_bs.html +0 -0
  138. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/templates/atlas/followup_subset.txt +0 -0
  139. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/templates/atlas/gcn.txt +0 -0
  140. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/templates/atlas/gcn_latex.txt +0 -0
  141. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/templates/atlas/heatmap.html +0 -0
  142. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/templates/atlas/heatmap_test.html +0 -0
  143. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/templates/atlas/index.html +0 -0
  144. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/templates/atlas/index_bs.html +0 -0
  145. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/templates/atlas/index_bs_celestial.html +0 -0
  146. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/templates/atlas/index_bs_celestial_experiment.html +0 -0
  147. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/templates/atlas/iobserve.txt +0 -0
  148. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/templates/atlas/lightcurve.txt +0 -0
  149. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/templates/atlas/lightcurveddc.txt +0 -0
  150. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/templates/atlas/lightcurveforced.txt +0 -0
  151. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/templates/atlas/lightcurvestackedforced.txt +0 -0
  152. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/templates/atlas/pesstorecurrences.txt +0 -0
  153. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/templates/atlas/pesstorecurrencesddc.txt +0 -0
  154. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/templates/atlas/pesstosummary.txt +0 -0
  155. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/templates/atlas/search_results.html +0 -0
  156. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/templates/atlas/search_results_plotly.html +0 -0
  157. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/templates/atlas/sne.json +0 -0
  158. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/templates/atlas/summary.csv +0 -0
  159. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/templates/atlas/userdefinedlists.html +0 -0
  160. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/templates/atlas/userdefinedlists_bs.html +0 -0
  161. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/templates/atlas/visibility.txt +0 -0
  162. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/templates/base.html +0 -0
  163. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/templates/base_bootstrap.html +0 -0
  164. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/templates/base_bootstrap_login.html +0 -0
  165. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/templates/bootstrap4_django_tables2_atlas.html +0 -0
  166. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/templates/invalid_login.html +0 -0
  167. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/templates/loggedin.html +0 -0
  168. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/templates/login.html +0 -0
  169. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/templates/logout.html +0 -0
  170. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/atlas/test.py +0 -0
  171. {psat_server_web-0.4.1/psat_server_web/ps1 → psat_server_web-0.4.2/psat_server_web/atlas/tests}/__init__.py +0 -0
  172. {psat_server_web-0.4.1/psat_server_web/ps1/psdb → psat_server_web-0.4.2/psat_server_web/common}/__init__.py +0 -0
  173. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/config/wsgi.conf.template +0 -0
  174. {psat_server_web-0.4.1/psat_server_web/ps1/site_media/js/celestial/data → psat_server_web-0.4.2/psat_server_web/ps1}/__init__.py +0 -0
  175. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/createUsers.py +0 -0
  176. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/generate_mod_wsgi_apachectl.sh +0 -0
  177. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/manage.py +0 -0
  178. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/media/images/README.txt +0 -0
  179. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/psdb/admin.py.old +0 -0
  180. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/psdb/catalogueviews.py +0 -0
  181. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/psdb/commonqueries.py +0 -0
  182. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/psdb/dbviews.py +0 -0
  183. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/psdb/formchoices.py +0 -0
  184. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/psdb/helpers.py +0 -0
  185. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/psdb/img_scale.py +0 -0
  186. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/psdb/lightcurvequeries.py +0 -0
  187. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/psdb/models.py +0 -0
  188. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/psdb/settings.py +0 -0
  189. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/psdb/urls.py +0 -0
  190. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/psdb/views.py +0 -0
  191. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/psdb/wsgi.py +0 -0
  192. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/psdb/wsgi_apache_example.conf +0 -0
  193. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/psdbapi/apps.py +0 -0
  194. {psat_server_web-0.4.1/psat_server_web/atlas/atlasapi → psat_server_web-0.4.2/psat_server_web/ps1/psdbapi}/permissions.py +0 -0
  195. {psat_server_web-0.4.1/psat_server_web/atlas/atlasapi → psat_server_web-0.4.2/psat_server_web/ps1/psdbapi}/query_auth.py +0 -0
  196. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/psdbapi/serializers.py +0 -0
  197. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/psdbapi/urls.py +0 -0
  198. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/psdbapi/views.py +0 -0
  199. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/css/aladin.css +0 -0
  200. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/css/celestial.css +0 -0
  201. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/css/fontawesome.css +0 -0
  202. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/css/main.css +0 -0
  203. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/css/main_bootstrap.css +0 -0
  204. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/images/1-star-hover.jpg +0 -0
  205. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/images/1-star.jpg +0 -0
  206. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/images/2-star-hover.jpg +0 -0
  207. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/images/2-star.jpg +0 -0
  208. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/images/3-star-hover.jpg +0 -0
  209. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/images/3-star.jpg +0 -0
  210. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/images/aladin.gif +0 -0
  211. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/images/cfaIcon.jpg +0 -0
  212. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/images/cfaIconHover.jpg +0 -0
  213. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/images/confirmed-sne-hover.jpg +0 -0
  214. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/images/confirmed-sne.jpg +0 -0
  215. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/images/detection_example.jpg +0 -0
  216. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/images/down.jpeg +0 -0
  217. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/images/down.jpg +0 -0
  218. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/images/image_not_available.jpeg +0 -0
  219. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/images/jhuIcon.jpg +0 -0
  220. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/images/jhuIconHover.jpg +0 -0
  221. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/images/minus.jpg +0 -0
  222. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/images/ncuIcon.jpg +0 -0
  223. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/images/ncuIconHover.jpg +0 -0
  224. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/images/non_detection_example.jpg +0 -0
  225. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/images/others-hover.jpg +0 -0
  226. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/images/others.jpg +0 -0
  227. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/images/panstarrs-logo-hover.jpg +0 -0
  228. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/images/panstarrs-logo.jpg +0 -0
  229. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/images/panstarrs1_logo.jpg +0 -0
  230. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/images/panstarrs1_o3_logo.jpg +0 -0
  231. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/images/panstarrs2_logo.jpg +0 -0
  232. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/images/panstarrs2_o3_logo.jpg +0 -0
  233. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/images/panstarrs_logo.jpg +0 -0
  234. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/images/panstarrs_logo_o4.jpg +0 -0
  235. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/images/panstarrs_logo_original.jpg +0 -0
  236. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/images/panstarrs_logo_yse.jpg +0 -0
  237. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/images/panstarrs_logo_yse_stack.jpg +0 -0
  238. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/images/pittsIcon.jpg +0 -0
  239. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/images/pittsIconHover.jpg +0 -0
  240. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/images/plus.jpg +0 -0
  241. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/images/ps1Icon.jpg +0 -0
  242. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/images/ps1IconHover.jpg +0 -0
  243. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/images/ps1sc.gif +0 -0
  244. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/images/qub-logo-hover.jpg +0 -0
  245. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/images/qub-logo.jpg +0 -0
  246. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/images/qubIcon.jpg +0 -0
  247. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/images/qubIconHover.jpg +0 -0
  248. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/images/sdss.gif +0 -0
  249. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/images/table-background.jpg +0 -0
  250. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/images/table-bottom-left.jpg +0 -0
  251. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/images/table-bottom-right.jpg +0 -0
  252. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/images/table-row.jpg +0 -0
  253. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/images/table-top-left.jpg +0 -0
  254. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/images/table-top-right.jpg +0 -0
  255. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/images/uhifaIcon.jpg +0 -0
  256. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/images/uhifaIconHover.jpg +0 -0
  257. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/images/up.jpeg +0 -0
  258. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/images/up.jpg +0 -0
  259. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/images/variable-stars-hover.jpg +0 -0
  260. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/images/variable-stars.jpg +0 -0
  261. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/js/aladin.js +0 -0
  262. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/js/celestial/celestial.js +0 -0
  263. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/js/celestial/d3.geo.projection.js +0 -0
  264. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/js/celestial/d3.geo.projection.min.js +0 -0
  265. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/js/celestial/d3.geo.zoom.js +0 -0
  266. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/js/celestial/d3.min.js +0 -0
  267. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/js/celestial/data/constellations.bounds.json +0 -0
  268. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/js/celestial/data/constellations.json +0 -0
  269. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/js/celestial/data/constellations.lines.json +0 -0
  270. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/js/celestial/data/dsos.bright.json +0 -0
  271. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/js/celestial/data/lg.json +0 -0
  272. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/js/celestial/data/mw.json +0 -0
  273. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/js/celestial/data/planets.json +0 -0
  274. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/js/celestial/data/stars.6.json +0 -0
  275. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/js/colourplot.js +0 -0
  276. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/js/flot/excanvas.js +0 -0
  277. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/js/flot/jquery-1.7.2.js +0 -0
  278. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/js/flot/jquery.flot.axislabels.js +0 -0
  279. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/js/flot/jquery.flot.crosshair.js +0 -0
  280. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/js/flot/jquery.flot.errorbars.js +0 -0
  281. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/js/flot/jquery.flot.fillbetween.js +0 -0
  282. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/js/flot/jquery.flot.image.js +0 -0
  283. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/js/flot/jquery.flot.js +0 -0
  284. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/js/flot/jquery.flot.navigate.js +0 -0
  285. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/js/flot/jquery.flot.pie.js +0 -0
  286. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/js/flot/jquery.flot.resize.js +0 -0
  287. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/js/flot/jquery.flot.selection.js +0 -0
  288. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/js/flot/jquery.flot.stack.js +0 -0
  289. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/js/flot/jquery.flot.symbol.js +0 -0
  290. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/js/flot/jquery.flot.threshold.js +0 -0
  291. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/js/followup_selectall.js +0 -0
  292. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/js/lightcurve.js +0 -0
  293. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/js/lightcurveplotly.js +0 -0
  294. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/js/mjdcalc.js +0 -0
  295. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/js/plotly/plotly-latest.kws.js +0 -0
  296. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/js/recurrenceplot.js +0 -0
  297. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/js/recurrenceplotplotly.js +0 -0
  298. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/webfonts/fa-brands-400.eot +0 -0
  299. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/webfonts/fa-brands-400.svg +0 -0
  300. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/webfonts/fa-brands-400.ttf +0 -0
  301. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/webfonts/fa-brands-400.woff +0 -0
  302. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/webfonts/fa-brands-400.woff2 +0 -0
  303. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/webfonts/fa-regular-400.eot +0 -0
  304. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/webfonts/fa-regular-400.svg +0 -0
  305. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/webfonts/fa-regular-400.ttf +0 -0
  306. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/webfonts/fa-regular-400.woff +0 -0
  307. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/webfonts/fa-regular-400.woff2 +0 -0
  308. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/webfonts/fa-solid-900.eot +0 -0
  309. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/webfonts/fa-solid-900.svg +0 -0
  310. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/webfonts/fa-solid-900.ttf +0 -0
  311. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/webfonts/fa-solid-900.woff +0 -0
  312. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/site_media/webfonts/fa-solid-900.woff2 +0 -0
  313. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/sql/create_web_cat_views.sql +0 -0
  314. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/sql/create_web_user_grants.sql +0 -0
  315. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/sql/create_web_views.sql +0 -0
  316. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/sql/create_web_views_fgss.sql +0 -0
  317. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/templates/400.html +0 -0
  318. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/templates/403.html +0 -0
  319. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/templates/404.html +0 -0
  320. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/templates/500.html +0 -0
  321. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/templates/admin/base_site.html +0 -0
  322. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/templates/base.html +0 -0
  323. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/templates/base_bootstrap.html +0 -0
  324. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/templates/base_bootstrap_login.html +0 -0
  325. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/templates/base_new.html +0 -0
  326. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/templates/bootstrap4_django_tables2_atlas.html +0 -0
  327. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/templates/invalid_login.html +0 -0
  328. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/templates/loggedin.html +0 -0
  329. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/templates/login.html +0 -0
  330. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/templates/logout.html +0 -0
  331. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/templates/psdb/atelsdiscovery.txt +0 -0
  332. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/templates/psdb/candidate.html +0 -0
  333. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/templates/psdb/candidate_plotly.html +0 -0
  334. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/templates/psdb/candidate_quickview.html +0 -0
  335. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/templates/psdb/candidateflot.html +0 -0
  336. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/templates/psdb/candidates.html +0 -0
  337. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/templates/psdb/colourdata.txt +0 -0
  338. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/templates/psdb/crossmatch_cfa_with_ipp.html +0 -0
  339. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/templates/psdb/crossmatch_external.html +0 -0
  340. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/templates/psdb/dss2.html +0 -0
  341. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/templates/psdb/error.html +0 -0
  342. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/templates/psdb/fasttrackastronote.txt +0 -0
  343. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/templates/psdb/filter.html +0 -0
  344. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/templates/psdb/followup.html +0 -0
  345. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/templates/psdb/followup.txt +0 -0
  346. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/templates/psdb/followup_bs.html +0 -0
  347. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/templates/psdb/followup_bs_old.html +0 -0
  348. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/templates/psdb/followup_quickview.html +0 -0
  349. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/templates/psdb/followup_quickview_bs.html +0 -0
  350. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/templates/psdb/followup_quickview_bs_old.html +0 -0
  351. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/templates/psdb/gcn.txt +0 -0
  352. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/templates/psdb/gcn_latex.txt +0 -0
  353. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/templates/psdb/index.html +0 -0
  354. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/templates/psdb/index_bs_celestial.html +0 -0
  355. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/templates/psdb/index_public.html +0 -0
  356. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/templates/psdb/lightcurve.txt +0 -0
  357. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/templates/psdb/lightcurveforced.txt +0 -0
  358. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/templates/psdb/lightcurves.html +0 -0
  359. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/templates/psdb/obscat.txt +0 -0
  360. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/templates/psdb/obsmediawiki.txt +0 -0
  361. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/templates/psdb/public.html +0 -0
  362. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/templates/psdb/public_textonly.txt +0 -0
  363. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/templates/psdb/reports.html +0 -0
  364. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/templates/psdb/search_results.html +0 -0
  365. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/templates/psdb/search_results_plotly.html +0 -0
  366. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/templates/psdb/sne.json +0 -0
  367. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/templates/psdb/userdefinedlists.html +0 -0
  368. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/ps1/templates/psdb/userdefinedlists_bs.html +0 -0
  369. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/schema/atlas_detections.sql +0 -0
  370. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/schema/atlas_detectionsddc.sql +0 -0
  371. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/schema/atlas_detectionsnnc.sql +0 -0
  372. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/schema/atlas_diff_detections.sql +0 -0
  373. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/schema/atlas_diff_logs.sql +0 -0
  374. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/schema/atlas_diff_moments.sql +0 -0
  375. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/schema/atlas_diff_objects.sql +0 -0
  376. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/schema/atlas_diff_subcell_logs.sql +0 -0
  377. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/schema/atlas_diff_subcells.sql +0 -0
  378. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/schema/atlas_forced_photometry.sql +0 -0
  379. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/schema/atlas_heatmaps.sql +0 -0
  380. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/schema/atlas_metadata.sql +0 -0
  381. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/schema/atlas_metadataddc.sql +0 -0
  382. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/schema/atlas_objects.sql +0 -0
  383. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/schema/atlas_stacked_forced_photometry.sql +0 -0
  384. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/schema/convert_backend_storage_to_innodb.sql +0 -0
  385. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/schema/create_atlas_flattened_view.sql +0 -0
  386. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/schema/create_photpipe_views.sql +0 -0
  387. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/schema/create_schema.sql +0 -0
  388. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/schema/create_user_grants.sql +0 -0
  389. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/schema/create_user_grants_generic.sql +0 -0
  390. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/schema/create_user_grants_root.sql +0 -0
  391. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/schema/delete_transients.sql +0 -0
  392. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/schema/generateATLASSchemaAndCPPClasses.py +0 -0
  393. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/schema/get_table_columns_for_avro.py +0 -0
  394. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/schema/get_table_columns_for_avro.sql +0 -0
  395. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/schema/mjdnow.sql +0 -0
  396. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/schema/refresh_django_views.py +0 -0
  397. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/schema/setup_database.py +0 -0
  398. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/schema/setup_database_utils.py +0 -0
  399. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/schema/sherlock_classifications.sql +0 -0
  400. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/schema/sherlock_crossmatches.sql +0 -0
  401. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/schema/sherlock_triggers_atlas.sql +0 -0
  402. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/schema/sherlock_triggers_ps1.sql +0 -0
  403. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/schema/tcs_cat_gaia_dr1.sql +0 -0
  404. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/schema/tcs_cat_gaia_dr2.sql +0 -0
  405. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/schema/tcs_cat_gaia_dr2_cassandra.cql +0 -0
  406. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/schema/tcs_cat_kepler_k2.sql +0 -0
  407. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/schema/tcs_cat_kepler_k2_pixels.sql +0 -0
  408. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/schema/tcs_cat_ps1_medium_deep_ref.sql +0 -0
  409. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/schema/tcs_cat_ps1_ubercal_stars.sql +0 -0
  410. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/schema/tcs_cat_satellites.sql +0 -0
  411. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/schema/tcs_catalogue_tables.sql +0 -0
  412. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/schema/tcs_cfa_detections.sql +0 -0
  413. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/schema/tcs_cfa_to_ipp_lookup.sql +0 -0
  414. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/schema/tcs_classification_flags.sql +0 -0
  415. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/schema/tcs_classification_history.sql +0 -0
  416. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/schema/tcs_cmf_metadata.sql +0 -0
  417. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/schema/tcs_cross_matches.sql +0 -0
  418. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/schema/tcs_cross_matches_external.sql +0 -0
  419. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/schema/tcs_detection_lists.sql +0 -0
  420. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/schema/tcs_detection_lists_atlas.sql +0 -0
  421. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/schema/tcs_followup_photometry.sql +0 -0
  422. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/schema/tcs_followup_telescope_instruments.sql +0 -0
  423. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/schema/tcs_followup_telescopes.sql +0 -0
  424. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/schema/tcs_forced_photometry.sql +0 -0
  425. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/schema/tcs_function_lunation.sql +0 -0
  426. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/schema/tcs_function_mjdlunation.sql +0 -0
  427. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/schema/tcs_gravity_alerts.sql +0 -0
  428. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/schema/tcs_gravity_event_annotations.sql +0 -0
  429. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/schema/tcs_gravity_events.sql +0 -0
  430. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/schema/tcs_guide_star_cat.sql +0 -0
  431. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/schema/tcs_image_groups.sql +0 -0
  432. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/schema/tcs_images.sql +0 -0
  433. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/schema/tcs_ipp_to_cfa_lookup.sql +0 -0
  434. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/schema/tcs_latest_object_stats.sql +0 -0
  435. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/schema/tcs_object_comments.sql +0 -0
  436. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/schema/tcs_object_group_definitions.sql +0 -0
  437. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/schema/tcs_object_group_definitions_atlas.sql +0 -0
  438. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/schema/tcs_object_groups.sql +0 -0
  439. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/schema/tcs_parameter_definitions.sql +0 -0
  440. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/schema/tcs_photpipe_detections.sql +0 -0
  441. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/schema/tcs_postage_stamp_images.sql +0 -0
  442. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/schema/tcs_postage_stamp_requests.sql +0 -0
  443. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/schema/tcs_postage_stamp_status_codes.sql +0 -0
  444. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/schema/tcs_processing_status.sql +0 -0
  445. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/schema/tcs_search_parameters.sql +0 -0
  446. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/schema/tcs_tns_requests.sql +0 -0
  447. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/schema/tcs_tphot_detections.sql +0 -0
  448. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/schema/tcs_transient_objects.sql +0 -0
  449. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/schema/tcs_transient_reobservations.sql +0 -0
  450. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/schema/tcs_vra_rank.sql +0 -0
  451. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/schema/tcs_vra_todo.sql +0 -0
  452. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/schema/tcs_zoo_requests.sql +0 -0
  453. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/schema/tcs_zooniverse_scores.sql +0 -0
  454. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/schema/types_gaia_dr2_cassandra.txt +0 -0
  455. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/schema/update_database_types_to_tns_types_atlas.sql +0 -0
  456. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/schema/update_database_types_to_tns_types_panstarrs.sql +0 -0
  457. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/schema/update_tcs_gravity_alerts_001.sql +0 -0
  458. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/schema/update_tcs_gravity_event_annotations_001.sql +0 -0
  459. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/schema/update_tcs_latest_object_stats_001.sql +0 -0
  460. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/schema/update_tcs_vra_rank_20240814.sql +0 -0
  461. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/schema/update_tcs_vra_scores_20240814.sql +0 -0
  462. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web/schema/vra_triggers_atlas.sql +0 -0
  463. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web.egg-info/dependency_links.txt +0 -0
  464. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web.egg-info/not-zip-safe +0 -0
  465. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web.egg-info/requires.txt +0 -0
  466. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/psat_server_web.egg-info/top_level.txt +0 -0
  467. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/setup.cfg +0 -0
  468. {psat_server_web-0.4.1 → psat_server_web-0.4.2}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: psat-server-web
3
- Version: 0.4.1
3
+ Version: 0.4.2
4
4
  Summary: Pan-STARRS and ATLAS web interface.
5
5
  Home-page: https://github.com/genghisken/psat-server-web
6
6
  Author: genghisken
@@ -0,0 +1 @@
1
+ __version__ = '0.4.2'
@@ -0,0 +1,18 @@
1
+ """
2
+ Customise admin interface for Group model to include GroupProfile, so default
3
+ expiry time for tokens can be set.
4
+ """
5
+
6
+ from django.contrib import admin
7
+ from django.contrib.auth.models import Group
8
+ from .models import GroupProfile
9
+
10
+ class GroupProfileInline(admin.StackedInline):
11
+ model = GroupProfile
12
+ can_delete = False
13
+
14
+ class GroupAdmin(admin.ModelAdmin):
15
+ inlines = (GroupProfileInline,)
16
+
17
+ admin.site.unregister(Group)
18
+ admin.site.register(Group, GroupAdmin)
@@ -0,0 +1,8 @@
1
+ from django.apps import AppConfig
2
+
3
+
4
+ class ATLASAccountsConfig(AppConfig):
5
+ name = 'accounts'
6
+
7
+ def ready(self):
8
+ import accounts.signals
@@ -0,0 +1,32 @@
1
+ # Generated by Django 5.1 on 2024-10-30 15:28
2
+
3
+ import datetime
4
+ import django.db.models.deletion
5
+ from django.db import migrations, models
6
+
7
+
8
+ class Migration(migrations.Migration):
9
+
10
+ initial = True
11
+
12
+ dependencies = [
13
+ ('auth', '0012_alter_user_first_name_max_length'),
14
+ ]
15
+
16
+ operations = [
17
+ migrations.CreateModel(
18
+ name='GroupProfile',
19
+ fields=[
20
+ ('id', models.AutoField(primary_key=True, serialize=False)),
21
+ ('token_expiration_time', models.DurationField(default=datetime.timedelta(days=1), help_text='in days, default 1 day (24*60*60 seconds)')),
22
+ ('description', models.TextField(blank=True, help_text='What is the group for?')),
23
+ ('group', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='profile', to='auth.group')),
24
+ ],
25
+ options={
26
+ 'verbose_name': 'Group Profile',
27
+ 'verbose_name_plural': 'Group Profiles',
28
+ 'db_table': 'auth_group_profile',
29
+ 'managed': True,
30
+ },
31
+ ),
32
+ ]
@@ -0,0 +1,37 @@
1
+
2
+ from django.utils.timezone import timedelta
3
+ from django.contrib.auth.models import Group
4
+ from django.db import models
5
+
6
+
7
+
8
+ class GroupProfile(models.Model):
9
+ """GroupProfile.
10
+
11
+ Extension of the Group model to store additional information, such as token
12
+ expiration time.
13
+ """
14
+ id = models.AutoField(primary_key=True)
15
+ group = models.OneToOneField(
16
+ Group,
17
+ on_delete=models.CASCADE,
18
+ related_name='profile'
19
+ )
20
+ token_expiration_time = models.DurationField(
21
+ help_text='in days, default 1 day (24*60*60 seconds)',
22
+ default=timedelta(days=1)
23
+ )
24
+ description = models.TextField(
25
+ blank=True,
26
+ help_text='What is the group for?'
27
+ )
28
+
29
+ class Meta:
30
+ """Meta.
31
+ """
32
+ app_label = 'accounts'
33
+ managed = True
34
+ verbose_name = 'Group Profile'
35
+ verbose_name_plural = 'Group Profiles'
36
+ db_table = 'auth_group_profile'
37
+
@@ -0,0 +1,15 @@
1
+ from django.db.models.signals import post_save
2
+ from django.dispatch import receiver
3
+ from django.contrib.auth.models import Group
4
+ from .models import GroupProfile
5
+
6
+ @receiver(post_save, sender=Group)
7
+ def create_group_profile(sender, instance, created, **kwargs):
8
+ if created:
9
+ new_profile, profile_created = GroupProfile.objects.get_or_create(
10
+ group=instance
11
+ )
12
+ if profile_created:
13
+ # If we created a new profile then set the group's profile to it
14
+ instance.profile = new_profile
15
+ instance.save()
@@ -21,6 +21,12 @@ class CustomLCPoints(models.Model):
21
21
  dec = models.FloatField(db_column='dec')
22
22
  atlas_metadata_id = models.IntegerField(db_column='atlas_metadata_id')
23
23
 
24
+ class Meta:
25
+ """Meta.
26
+ """
27
+
28
+ managed = False
29
+
24
30
  # 2023-12-19 KWS Added ALL the detection columns - not just the ones for plotting.
25
31
  # 2024-03-07 KWS Added date_inserted column.
26
32
  class CustomLCPoints2(models.Model):
@@ -61,6 +67,12 @@ class CustomLCPoints2(models.Model):
61
67
  dflx = models.FloatField(db_column='dflx')
62
68
  date_inserted = models.DateTimeField(db_column='date_inserted')
63
69
 
70
+ class Meta:
71
+ """Meta.
72
+ """
73
+
74
+ managed = False
75
+
64
76
 
65
77
  class CustomLCBlanks(models.Model):
66
78
  """CustomLCBlanks.
@@ -77,6 +89,12 @@ class CustomLCBlanks(models.Model):
77
89
  reference = models.CharField(max_length=765, db_column='reference')
78
90
  pointing = models.CharField(max_length=765, db_column='pointing')
79
91
 
92
+ class Meta:
93
+ """Meta.
94
+ """
95
+
96
+ managed = False
97
+
80
98
  # 2024-03-07 KWS Added date_inserted column.
81
99
  class CustomLCBlanks2(models.Model):
82
100
  """CustomLCBlanks2.
@@ -95,6 +113,12 @@ class CustomLCBlanks2(models.Model):
95
113
  mag5sig = models.FloatField(db_column='mag5sig')
96
114
  date_inserted = models.DateTimeField(db_column='date_inserted')
97
115
 
116
+ class Meta:
117
+ """Meta.
118
+ """
119
+
120
+ managed = False
121
+
98
122
  class CustomFollowupLCData(models.Model):
99
123
  """CustomFollowupLCData.
100
124
  """
@@ -110,6 +134,12 @@ class CustomFollowupLCData(models.Model):
110
134
  instrument_name = models.CharField(max_length=90, db_column='instrument_name')
111
135
  instrument_description = models.CharField(max_length=180, db_column='instrument_description')
112
136
 
137
+ class Meta:
138
+ """Meta.
139
+ """
140
+
141
+ managed = False
142
+
113
143
  class FollowupRaw(models.Model):
114
144
  """FollowupRaw.
115
145
  """
@@ -172,6 +202,12 @@ class FollowupRaw(models.Model):
172
202
  return xms
173
203
 
174
204
 
205
+ class Meta:
206
+ """Meta.
207
+ """
208
+
209
+ managed = False
210
+
175
211
 
176
212
  class WebViewAbstractFollowup(models.Model):
177
213
  """WebViewAbstractFollowup.
@@ -273,6 +309,7 @@ class WebViewFollowupTransients(WebViewAbstractFollowup):
273
309
  """Meta.
274
310
  """
275
311
 
312
+ managed = False
276
313
  db_table = 'atlas_v_followupall'
277
314
 
278
315
  class WebViewFollowupTransients0(WebViewAbstractFollowup):
@@ -284,6 +321,7 @@ class WebViewFollowupTransients0(WebViewAbstractFollowup):
284
321
  """Meta.
285
322
  """
286
323
 
324
+ managed = False
287
325
  db_table = 'atlas_v_followup0'
288
326
 
289
327
  class WebViewFollowupTransients1(WebViewAbstractFollowup):
@@ -295,6 +333,7 @@ class WebViewFollowupTransients1(WebViewAbstractFollowup):
295
333
  """Meta.
296
334
  """
297
335
 
336
+ managed = False
298
337
  db_table = 'atlas_v_followup1'
299
338
 
300
339
  class WebViewFollowupTransients2(WebViewAbstractFollowup):
@@ -306,6 +345,7 @@ class WebViewFollowupTransients2(WebViewAbstractFollowup):
306
345
  """Meta.
307
346
  """
308
347
 
348
+ managed = False
309
349
  db_table = 'atlas_v_followup2'
310
350
 
311
351
  class WebViewFollowupTransients3(WebViewAbstractFollowup):
@@ -317,6 +357,7 @@ class WebViewFollowupTransients3(WebViewAbstractFollowup):
317
357
  """Meta.
318
358
  """
319
359
 
360
+ managed = False
320
361
  db_table = 'atlas_v_followup3'
321
362
 
322
363
  class WebViewFollowupTransients4(WebViewAbstractFollowup):
@@ -328,6 +369,7 @@ class WebViewFollowupTransients4(WebViewAbstractFollowup):
328
369
  """Meta.
329
370
  """
330
371
 
372
+ managed = False
331
373
  db_table = 'atlas_v_followup4'
332
374
 
333
375
  class WebViewFollowupTransients5(WebViewAbstractFollowup):
@@ -339,6 +381,7 @@ class WebViewFollowupTransients5(WebViewAbstractFollowup):
339
381
  """Meta.
340
382
  """
341
383
 
384
+ managed = False
342
385
  db_table = 'atlas_v_followup5'
343
386
 
344
387
  class WebViewFollowupTransients6(WebViewAbstractFollowup):
@@ -350,6 +393,7 @@ class WebViewFollowupTransients6(WebViewAbstractFollowup):
350
393
  """Meta.
351
394
  """
352
395
 
396
+ managed = False
353
397
  db_table = 'atlas_v_followup6'
354
398
 
355
399
  class WebViewFollowupTransients7(WebViewAbstractFollowup):
@@ -361,6 +405,7 @@ class WebViewFollowupTransients7(WebViewAbstractFollowup):
361
405
  """Meta.
362
406
  """
363
407
 
408
+ managed = False
364
409
  db_table = 'atlas_v_followup7'
365
410
 
366
411
  class WebViewFollowupTransients8(WebViewAbstractFollowup):
@@ -372,6 +417,7 @@ class WebViewFollowupTransients8(WebViewAbstractFollowup):
372
417
  """Meta.
373
418
  """
374
419
 
420
+ managed = False
375
421
  db_table = 'atlas_v_followup8'
376
422
 
377
423
  class WebViewFollowupTransients9(WebViewAbstractFollowup):
@@ -383,6 +429,7 @@ class WebViewFollowupTransients9(WebViewAbstractFollowup):
383
429
  """Meta.
384
430
  """
385
431
 
432
+ managed = False
386
433
  db_table = 'atlas_v_followup9'
387
434
 
388
435
  class WebViewFollowupTransients10(WebViewAbstractFollowup):
@@ -394,6 +441,7 @@ class WebViewFollowupTransients10(WebViewAbstractFollowup):
394
441
  """Meta.
395
442
  """
396
443
 
444
+ managed = False
397
445
  db_table = 'atlas_v_followup10'
398
446
 
399
447
  class WebViewFollowupTransients11(WebViewAbstractFollowup):
@@ -405,6 +453,7 @@ class WebViewFollowupTransients11(WebViewAbstractFollowup):
405
453
  """Meta.
406
454
  """
407
455
 
456
+ managed = False
408
457
  db_table = 'atlas_v_followup11'
409
458
 
410
459
  class WebViewFollowupTransientsGeneric(WebViewAbstractFollowup):
@@ -416,6 +465,7 @@ class WebViewFollowupTransientsGeneric(WebViewAbstractFollowup):
416
465
  """Meta.
417
466
  """
418
467
 
468
+ managed = False
419
469
  db_table = 'atlas_v_followup'
420
470
 
421
471
  class WebViewFollowupTransientsGenericGW(WebViewAbstractFollowup):
@@ -427,6 +477,7 @@ class WebViewFollowupTransientsGenericGW(WebViewAbstractFollowup):
427
477
  """Meta.
428
478
  """
429
479
 
480
+ managed = False
430
481
  db_table = 'atlas_v_followup_gw'
431
482
 
432
483
 
@@ -550,6 +601,7 @@ class WebViewUserDefined(WebViewAbstractUserDefined):
550
601
  """Meta.
551
602
  """
552
603
 
604
+ managed = False
553
605
  db_table = 'atlas_v_followup_userdefined'
554
606
 
555
607
 
@@ -10,7 +10,6 @@
10
10
  import sys
11
11
 
12
12
  from django.db import models
13
-
14
13
  from gkutils.commonutils import FLAGS, PROCESSING_FLAGS, getFlagDefs, ra_to_sex, dec_to_sex, getDateFractionMJD, getMJDFromSqlDate
15
14
 
16
15
 
@@ -1021,6 +1020,7 @@ class TcsGravityEvents(models.Model):
1021
1020
  """Meta.
1022
1021
  """
1023
1022
 
1023
+ managed = False
1024
1024
  db_table = 'tcs_gravity_events'
1025
1025
 
1026
1026
 
@@ -1048,7 +1048,8 @@ class TcsGravityAlerts(models.Model):
1048
1048
  creator = models.CharField(max_length=30, blank=True, null=True)
1049
1049
  group = models.CharField(max_length=100, blank=True, null=True)
1050
1050
  pipeline = models.CharField(max_length=100, blank=True, null=True)
1051
- map_iteration = models.CharField(max_length=100, blank=True, null=True)
1051
+ #map_iteration = models.CharField(max_length=100, blank=True, null=True)
1052
+ map_iteration = models.CharField(max_length=100, blank=True, null=True, unique=True)
1052
1053
  alert_map = models.CharField(db_column='map', max_length=400, blank=True, null=True)
1053
1054
  interesting = models.IntegerField(blank=True, null=True)
1054
1055
  dateadded = models.DateTimeField(db_column='dateAdded', blank=True, null=True) # Field name made lowercase.
@@ -1167,6 +1168,7 @@ class TcsObjectComments(models.Model):
1167
1168
  """Meta.
1168
1169
  """
1169
1170
 
1171
+ managed = False
1170
1172
  db_table = 'tcs_object_comments'
1171
1173
 
1172
1174
 
@@ -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 = False
28
+ DEBUG = True
29
29
 
30
- TEMPLATE_DEBUG = False
30
+ TEMPLATE_DEBUG = 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
@@ -63,6 +63,9 @@ DATABASES = {
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
+ 'TEST': {
67
+ 'NAME': os.environ.get('DJANGO_MYSQL_TESTDBNAME'),
68
+ }
66
69
  }
67
70
  }
68
71
 
@@ -177,8 +180,11 @@ INSTALLED_APPS = [
177
180
  'django.contrib.sites',
178
181
  'django.contrib.staticfiles',
179
182
  'atlas',
183
+ 'accounts',
180
184
  'django_tables2',
181
185
  'rest_framework',
182
186
  'rest_framework.authtoken',
183
187
  ]
184
188
 
189
+ # 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
@@ -0,0 +1,55 @@
1
+ from re import match
2
+
3
+ from django.conf import settings
4
+ from django.utils.timezone import now
5
+ from rest_framework.authtoken.models import Token
6
+ from rest_framework.authentication import TokenAuthentication
7
+ from rest_framework.exceptions import AuthenticationFailed
8
+
9
+ class ExpiringTokenAuthentication(TokenAuthentication):
10
+ """
11
+ Token authentication using the ExpiringToken model, which has an expiry
12
+ date and must be refreshed manually or automatically.
13
+
14
+ The token is passed in the Authorization header as 'Token <key>'.
15
+ """
16
+ model = Token
17
+
18
+ def authenticate_credentials(self, key):
19
+ user, token = super().authenticate_credentials(key)
20
+
21
+ # Retrieve the user's group and get the token expiration time from the group profile
22
+ if user.groups.exists():
23
+ try:
24
+ group_profile = user.groups.first().profile
25
+ except AttributeError:
26
+ # TODO: Log this error?
27
+ raise AuthenticationFailed('Could not authenticate: Group has no profile. Please contact administrator.')
28
+ token_expiration_time = group_profile.token_expiration_time.total_seconds()
29
+ else:
30
+ # Otherwise use the default expiration time
31
+ token_expiration_time = settings.TOKEN_EXPIRY
32
+
33
+ # Calculate the token's age and compare it to the expiration setting
34
+ token_age = (now() - token.created).total_seconds()
35
+ if token_age > token_expiration_time:
36
+ raise AuthenticationFailed('Token has expired.')
37
+
38
+ return user, token
39
+
40
+
41
+ class QueryAuthentication(ExpiringTokenAuthentication):
42
+ """
43
+ Token authentication using query parameters.
44
+ """
45
+ def authenticate(self, request):
46
+ token = request.query_params.get('token')
47
+
48
+ if not token:
49
+ return None
50
+
51
+ if not match("^\w+$", token):
52
+ msg = 'Invalid token format.'
53
+ raise AuthenticationFailed(msg)
54
+
55
+ return self.authenticate_credentials(token)
@@ -9,5 +9,4 @@ class IsApprovedUser(BasePermission):
9
9
  # Only allow POST if the user is authenticated, active, and staff
10
10
  return (request.user
11
11
  and request.user.is_authenticated
12
- and request.user.is_active
13
12
  and request.user.is_staff)
@@ -1,6 +1,5 @@
1
1
  from django.urls import include, path
2
2
  from rest_framework import routers
3
- from rest_framework.authtoken.views import obtain_auth_token
4
3
  from . import views
5
4
 
6
5
  urlpatterns = [
@@ -17,6 +16,6 @@ urlpatterns = [
17
16
  path('api/vrarank/', views.VRARankView.as_view()),
18
17
  path('api/vraranklist/', views.VRARankListView.as_view()),
19
18
  path('api/externalxmlist/', views.ExternalCrossmatchesListView.as_view()),
19
+ path('api/auth-token/', views.ObtainExpiringAuthToken.as_view(), name='auth_token'),
20
20
  path('api/objectdetectionlist/', views.ObjectDetectionListView.as_view()),
21
- path('api/auth-token/', obtain_auth_token, name='auth_token'),
22
21
  ]
@@ -1,26 +1,73 @@
1
- import sys
2
-
3
1
  from django.shortcuts import get_object_or_404, render
2
+ from django.conf import settings
3
+ from django.utils.timezone import now
4
4
  from rest_framework.response import Response
5
5
  from rest_framework.views import APIView
6
6
  from rest_framework import status
7
- from rest_framework.authentication import TokenAuthentication
7
+ from rest_framework.authtoken.models import Token
8
8
  from rest_framework.permissions import IsAuthenticated
9
- # 2024-01-29 KWS Need the model to do inserts.
10
- from django.core.exceptions import ObjectDoesNotExist
9
+ from rest_framework.authtoken.views import ObtainAuthToken
10
+ from rest_framework.exceptions import AuthenticationFailed
11
11
 
12
- from atlas.models import TcsObjectGroups
13
- from atlas.models import TcsVraScores
14
- from .serializers import ConeSerializer, ObjectsSerializer, ObjectListSerializer, VRAScoresSerializer, VRAScoresListSerializer, VRATodoSerializer, VRATodoListSerializer, TcsObjectGroupsSerializer, TcsObjectGroupsDeleteSerializer, TcsObjectGroupsListSerializer, VRARankSerializer, VRARankListSerializer, ExternalCrossmatchesListSerializer, ObjectDetectionListSerializer
15
- from .query_auth import QueryAuthentication
12
+ # 2024-01-29 KWS Need the model to do inserts.
13
+ from atlas.models import TcsObjectGroups, TcsVraScores
14
+ from .serializers import (
15
+ ConeSerializer,
16
+ ObjectsSerializer,
17
+ ObjectListSerializer,
18
+ VRAScoresSerializer,
19
+ VRAScoresListSerializer,
20
+ VRATodoSerializer,
21
+ VRATodoListSerializer,
22
+ TcsObjectGroupsSerializer,
23
+ TcsObjectGroupsDeleteSerializer,
24
+ TcsObjectGroupsListSerializer,
25
+ VRARankSerializer,
26
+ VRARankListSerializer,
27
+ ExternalCrossmatchesListSerializer,
28
+ ObjectDetectionListSerializer,
29
+ )
30
+ from .authentication import QueryAuthentication, ExpiringTokenAuthentication
16
31
  from .permissions import IsApprovedUser
17
32
 
18
33
  def retcode(message):
19
34
  if 'error' in message: return status.HTTP_400_BAD_REQUEST
20
35
  else: return status.HTTP_200_OK
36
+
37
+ class ObtainExpiringAuthToken(ObtainAuthToken):
38
+
39
+ def post(self, request, *args, **kwargs):
40
+ serializer = self.serializer_class(data=request.data, context={'request': request})
41
+ serializer.is_valid(raise_exception=True)
42
+ user = serializer.validated_data['user']
43
+ token, created = Token.objects.get_or_create(user=user)
44
+
45
+ # Get the expiration time from the user's group profile
46
+ if user.groups.exists():
47
+ group_profile = user.groups.first().profile
48
+ token_expiration_time = group_profile.token_expiration_time.total_seconds()
49
+ else:
50
+ # If the user is not assigned to a group, use the default setting
51
+ token_expiration_time = settings.TOKEN_EXPIRY
52
+
53
+ # Check if token is expired based on `created` field and the setting
54
+ token_age = (now() - token.created).total_seconds()
55
+ if token_age > token_expiration_time:
56
+ # If expired, delete the token and create a new one
57
+ token.delete()
58
+ token = Token.objects.create(user=user)
59
+ # Update the token age for return
60
+ token_age = (now() - token.created).total_seconds()
61
+ created = True
62
+
63
+ return Response({
64
+ 'token': token.key,
65
+ 'expires_in': token_expiration_time - token_age,
66
+ 'refreshed': created,
67
+ })
21
68
 
22
69
  class ConeView(APIView):
23
- authentication_classes = [TokenAuthentication, QueryAuthentication]
70
+ authentication_classes = [ExpiringTokenAuthentication, QueryAuthentication]
24
71
  permission_classes = [IsAuthenticated&IsApprovedUser]
25
72
 
26
73
  def get(self, request):
@@ -39,7 +86,7 @@ class ConeView(APIView):
39
86
 
40
87
 
41
88
  class ObjectsView(APIView):
42
- authentication_classes = [TokenAuthentication, QueryAuthentication]
89
+ authentication_classes = [ExpiringTokenAuthentication, QueryAuthentication]
43
90
  permission_classes = [IsAuthenticated&IsApprovedUser]
44
91
 
45
92
  def get(self, request):
@@ -58,7 +105,7 @@ class ObjectsView(APIView):
58
105
 
59
106
 
60
107
  class ObjectListView(APIView):
61
- authentication_classes = [TokenAuthentication, QueryAuthentication]
108
+ authentication_classes = [ExpiringTokenAuthentication, QueryAuthentication]
62
109
  permission_classes = [IsAuthenticated&IsApprovedUser]
63
110
 
64
111
  def get(self, request):
@@ -77,7 +124,7 @@ class ObjectListView(APIView):
77
124
 
78
125
 
79
126
  class VRAScoresView(APIView):
80
- authentication_classes = [TokenAuthentication, QueryAuthentication]
127
+ authentication_classes = [ExpiringTokenAuthentication, QueryAuthentication]
81
128
  permission_classes = [IsAuthenticated&IsApprovedUser]
82
129
 
83
130
  def get(self, request):
@@ -94,7 +141,7 @@ class VRAScoresView(APIView):
94
141
 
95
142
 
96
143
  class VRAScoresListView(APIView):
97
- authentication_classes = [TokenAuthentication, QueryAuthentication]
144
+ authentication_classes = [ExpiringTokenAuthentication, QueryAuthentication]
98
145
  permission_classes = [IsAuthenticated&IsApprovedUser]
99
146
 
100
147
  def get(self, request):
@@ -114,7 +161,7 @@ class VRAScoresListView(APIView):
114
161
  # 2024-04-16 KWS Added VRATodoView. NOTE: Add code to read the reply message and generate a sensible HTTP response
115
162
  # appropriate to the circumstances. E.g. if object is not found generate a 404, etc.
116
163
  class VRATodoView(APIView):
117
- authentication_classes = [TokenAuthentication, QueryAuthentication]
164
+ authentication_classes = [ExpiringTokenAuthentication, QueryAuthentication]
118
165
  permission_classes = [IsAuthenticated&IsApprovedUser]
119
166
 
120
167
  def get(self, request):
@@ -131,7 +178,7 @@ class VRATodoView(APIView):
131
178
 
132
179
  # 2024-05-07 KWS Added VRATodoListView.
133
180
  class VRATodoListView(APIView):
134
- authentication_classes = [TokenAuthentication, QueryAuthentication]
181
+ authentication_classes = [ExpiringTokenAuthentication, QueryAuthentication]
135
182
  permission_classes = [IsAuthenticated&IsApprovedUser]
136
183
 
137
184
  def get(self, request):
@@ -149,7 +196,7 @@ class VRATodoListView(APIView):
149
196
  return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
150
197
 
151
198
  class TcsObjectGroupsView(APIView):
152
- authentication_classes = [TokenAuthentication, QueryAuthentication]
199
+ authentication_classes = [ExpiringTokenAuthentication, QueryAuthentication]
153
200
  permission_classes = [IsAuthenticated&IsApprovedUser]
154
201
 
155
202
  def get(self, request):
@@ -165,7 +212,7 @@ class TcsObjectGroupsView(APIView):
165
212
  return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
166
213
 
167
214
  class TcsObjectGroupsListView(APIView):
168
- authentication_classes = [TokenAuthentication, QueryAuthentication]
215
+ authentication_classes = [ExpiringTokenAuthentication, QueryAuthentication]
169
216
  permission_classes = [IsAuthenticated&IsApprovedUser]
170
217
 
171
218
  def get(self, request):
@@ -184,7 +231,7 @@ class TcsObjectGroupsListView(APIView):
184
231
 
185
232
 
186
233
  class TcsObjectGroupsDeleteView(APIView):
187
- authentication_classes = [TokenAuthentication, QueryAuthentication]
234
+ authentication_classes = [ExpiringTokenAuthentication, QueryAuthentication]
188
235
  permission_classes = [IsAuthenticated&IsApprovedUser]
189
236
 
190
237
  def get(self, request):
@@ -207,7 +254,7 @@ class TcsObjectGroupsDeleteView(APIView):
207
254
  # 2024-05-22 KWS Added VRARankView. NOTE: Add code to read the reply message and generate a sensible HTTP response
208
255
  # appropriate to the circumstances. E.g. if object is not found generate a 404, etc.
209
256
  class VRARankView(APIView):
210
- authentication_classes = [TokenAuthentication, QueryAuthentication]
257
+ authentication_classes = [ExpiringTokenAuthentication, QueryAuthentication]
211
258
  permission_classes = [IsAuthenticated&IsApprovedUser]
212
259
 
213
260
  def get(self, request):
@@ -224,7 +271,7 @@ class VRARankView(APIView):
224
271
 
225
272
  # 2024-05-22 KWS Added VRARankListView.
226
273
  class VRARankListView(APIView):
227
- authentication_classes = [TokenAuthentication, QueryAuthentication]
274
+ authentication_classes = [ExpiringTokenAuthentication, QueryAuthentication]
228
275
  permission_classes = [IsAuthenticated&IsApprovedUser]
229
276
 
230
277
  def get(self, request):
@@ -244,7 +291,7 @@ class VRARankListView(APIView):
244
291
 
245
292
  # 2024-09-24 KWS Added ExternalCrossmatchesListView.
246
293
  class ExternalCrossmatchesListView(APIView):
247
- authentication_classes = [TokenAuthentication, QueryAuthentication]
294
+ authentication_classes = [ExpiringTokenAuthentication, QueryAuthentication]
248
295
  permission_classes = [IsAuthenticated&IsApprovedUser]
249
296
 
250
297
  def get(self, request):
@@ -264,7 +311,7 @@ class ExternalCrossmatchesListView(APIView):
264
311
 
265
312
  # 2024-09-24 KWS Added ExternalCrossmatchesListView.
266
313
  class ObjectDetectionListView(APIView):
267
- authentication_classes = [TokenAuthentication, QueryAuthentication]
314
+ authentication_classes = [ExpiringTokenAuthentication, QueryAuthentication]
268
315
  permission_classes = [IsAuthenticated&IsApprovedUser]
269
316
 
270
317
  def get(self, request):
@@ -33,7 +33,9 @@
33
33
  #
34
34
  # export DJANGO_PANSTARRS_TOKEN=''
35
35
  # export DJANGO_PANSTARRS_BASE_URL=''
36
+ # export API_TOKEN_EXPIRY=''
36
37
 
38
+ export API_TOKEN_EXPIRY='1000000000'
37
39
 
38
40
  if [ -f ~/.config/django/django_env_$CONDA_DEFAULT_ENV ]; then chmod 600 ~/.config/django/django_env_$CONDA_DEFAULT_ENV; source ~/.config/django/django_env_$CONDA_DEFAULT_ENV; fi
39
41