psat-server-web 0.4.2__tar.gz → 0.5.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


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

Files changed (477) hide show
  1. psat_server_web-0.5.0/PKG-INFO +131 -0
  2. psat_server_web-0.5.0/README.md +101 -0
  3. psat_server_web-0.5.0/psat_server_web/__version__.py +1 -0
  4. psat_server_web-0.5.0/psat_server_web/atlas/accounts/admin.py +34 -0
  5. psat_server_web-0.5.0/psat_server_web/atlas/accounts/signals.py +27 -0
  6. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/atlas/settings.py +51 -5
  7. psat_server_web-0.5.0/psat_server_web/atlas/tests/atlasapi/test_authentication.py +111 -0
  8. psat_server_web-0.5.0/psat_server_web/atlas/tests/atlasapi/test_failure.py +8 -0
  9. {psat_server_web-0.4.2/psat_server_web/atlas/tests → psat_server_web-0.5.0/psat_server_web/atlas/tests/atlasapi}/test_permissions.py +6 -4
  10. psat_server_web-0.5.0/psat_server_web/ps1/__init__.py +0 -0
  11. psat_server_web-0.5.0/psat_server_web/ps1/psdb/__init__.py +0 -0
  12. psat_server_web-0.5.0/psat_server_web/ps1/site_media/js/celestial/data/__init__.py +0 -0
  13. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/tcs_gravity_alerts.sql +1 -1
  14. psat_server_web-0.5.0/psat_server_web.egg-info/PKG-INFO +131 -0
  15. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web.egg-info/SOURCES.txt +7 -1
  16. psat_server_web-0.5.0/setup.cfg +8 -0
  17. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/setup.py +3 -0
  18. psat_server_web-0.4.2/PKG-INFO +0 -43
  19. psat_server_web-0.4.2/README.md +0 -13
  20. psat_server_web-0.4.2/psat_server_web/__version__.py +0 -1
  21. psat_server_web-0.4.2/psat_server_web/atlas/accounts/admin.py +0 -18
  22. psat_server_web-0.4.2/psat_server_web/atlas/accounts/signals.py +0 -15
  23. psat_server_web-0.4.2/psat_server_web.egg-info/PKG-INFO +0 -43
  24. psat_server_web-0.4.2/setup.cfg +0 -4
  25. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/LICENSE +0 -0
  26. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/MANIFEST.in +0 -0
  27. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/.DS_Store +0 -0
  28. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/__init__.py +0 -0
  29. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/.DS_Store +0 -0
  30. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/__init__.py +0 -0
  31. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/accounts/apps.py +0 -0
  32. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/accounts/migrations/0001_initial.py +0 -0
  33. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/accounts/migrations/__init__.py +0 -0
  34. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/accounts/models.py +0 -0
  35. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/atlas/__init__.py +0 -0
  36. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/atlas/apiutils.py +0 -0
  37. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/atlas/commonqueries.py +0 -0
  38. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/atlas/dbviews.py +0 -0
  39. /psat_server_web-0.4.2/psat_server_web/atlas/site_media/js/celestial/data/__init__.py → /psat_server_web-0.5.0/psat_server_web/atlas/atlas/django-default.log +0 -0
  40. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/atlas/document.sh +0 -0
  41. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/atlas/formchoices.py +0 -0
  42. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/atlas/helpers.py +0 -0
  43. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/atlas/insert_gravity_event.sql +0 -0
  44. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/atlas/lightcurvequeries.py +0 -0
  45. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/atlas/models.py +0 -0
  46. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/atlas/sqlpaginator.py +0 -0
  47. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/atlas/urls.py +0 -0
  48. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/atlas/view_celestial.py +0 -0
  49. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/atlas/views.py +0 -0
  50. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/atlas/wsgi.atlas.conf +0 -0
  51. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/atlas/wsgi.py +0 -0
  52. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/atlas/wsgi_apache_example.conf +0 -0
  53. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/atlasapi/apps.py +0 -0
  54. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/atlasapi/authentication.py +0 -0
  55. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/atlasapi/permissions.py +0 -0
  56. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/atlasapi/serializers.py +0 -0
  57. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/atlasapi/urls.py +0 -0
  58. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/atlasapi/views.py +0 -0
  59. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/cow_backup.txt +0 -0
  60. /psat_server_web-0.4.2/psat_server_web/atlas/tests/__init__.py → /psat_server_web-0.5.0/psat_server_web/atlas/django-default.log +0 -0
  61. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/generate_mod_wsgi_apachectl.sh +0 -0
  62. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/generate_mod_wsgi_apachectl_test.sh +0 -0
  63. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/manage.py +0 -0
  64. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/media/images/README.txt +0 -0
  65. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/css/aladin.css +0 -0
  66. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/css/celestial.css +0 -0
  67. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/css/fontawesome.css +0 -0
  68. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/css/main.css +0 -0
  69. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/css/main_bootstrap.css +0 -0
  70. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/images/atlas_logo.png +0 -0
  71. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/images/image_not_available.jpeg +0 -0
  72. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/js/aladin.js +0 -0
  73. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/js/bootstrap_utils.js +0 -0
  74. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/js/celestial/celestial.js +0 -0
  75. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/js/celestial/d3.geo.projection.js +0 -0
  76. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/js/celestial/d3.geo.projection.min.js +0 -0
  77. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/js/celestial/d3.geo.zoom.js +0 -0
  78. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/js/celestial/d3.min.js +0 -0
  79. {psat_server_web-0.4.2/psat_server_web/common → psat_server_web-0.5.0/psat_server_web/atlas/site_media/js/celestial/data}/__init__.py +0 -0
  80. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/js/celestial/data/constellations.bounds.json +0 -0
  81. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/js/celestial/data/constellations.json +0 -0
  82. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/js/celestial/data/constellations.lines.json +0 -0
  83. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/js/celestial/data/dsos.bright.json +0 -0
  84. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/js/celestial/data/lg.json +0 -0
  85. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/js/celestial/data/mw.json +0 -0
  86. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/js/celestial/data/planets.json +0 -0
  87. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/js/celestial/data/stars.6.json +0 -0
  88. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/js/colourplot.js +0 -0
  89. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/js/flot/excanvas.js +0 -0
  90. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/js/flot/jquery-1.7.2.js +0 -0
  91. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/js/flot/jquery.flot.axislabels.js +0 -0
  92. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/js/flot/jquery.flot.crosshair.js +0 -0
  93. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/js/flot/jquery.flot.errorbars.js +0 -0
  94. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/js/flot/jquery.flot.fillbetween.js +0 -0
  95. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/js/flot/jquery.flot.image.js +0 -0
  96. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/js/flot/jquery.flot.js +0 -0
  97. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/js/flot/jquery.flot.navigate.js +0 -0
  98. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/js/flot/jquery.flot.pie.js +0 -0
  99. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/js/flot/jquery.flot.resize.js +0 -0
  100. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/js/flot/jquery.flot.selection.js +0 -0
  101. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/js/flot/jquery.flot.stack.js +0 -0
  102. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/js/flot/jquery.flot.symbol.js +0 -0
  103. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/js/flot/jquery.flot.threshold.js +0 -0
  104. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/js/followup_selectall.js +0 -0
  105. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/js/heatmap.js +0 -0
  106. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/js/lightcurve.js +0 -0
  107. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/js/lightcurveplotly.js +0 -0
  108. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/js/mjdcalc.js +0 -0
  109. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/js/plotly/plotly-latest.kws.js +0 -0
  110. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/js/recurrenceplot.js +0 -0
  111. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/js/recurrenceplotplotly.js +0 -0
  112. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/webfonts/fa-brands-400.eot +0 -0
  113. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/webfonts/fa-brands-400.svg +0 -0
  114. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/webfonts/fa-brands-400.ttf +0 -0
  115. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/webfonts/fa-brands-400.woff +0 -0
  116. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/webfonts/fa-brands-400.woff2 +0 -0
  117. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/webfonts/fa-regular-400.eot +0 -0
  118. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/webfonts/fa-regular-400.svg +0 -0
  119. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/webfonts/fa-regular-400.ttf +0 -0
  120. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/webfonts/fa-regular-400.woff +0 -0
  121. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/webfonts/fa-regular-400.woff2 +0 -0
  122. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/webfonts/fa-solid-900.eot +0 -0
  123. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/webfonts/fa-solid-900.svg +0 -0
  124. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/webfonts/fa-solid-900.ttf +0 -0
  125. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/webfonts/fa-solid-900.woff +0 -0
  126. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/site_media/webfonts/fa-solid-900.woff2 +0 -0
  127. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/sql/create_web_views.sql +0 -0
  128. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/templates/.DS_Store +0 -0
  129. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/templates/400.html +0 -0
  130. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/templates/403.html +0 -0
  131. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/templates/404.html +0 -0
  132. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/templates/500.html +0 -0
  133. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/templates/atlas/atelfasttrackobject.txt +0 -0
  134. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/templates/atlas/atelsdiscovery.txt +0 -0
  135. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/templates/atlas/atelsfast.txt +0 -0
  136. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/templates/atlas/candidate.html +0 -0
  137. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/templates/atlas/candidate_plotly.html +0 -0
  138. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/templates/atlas/candidate_plotly_test.html +0 -0
  139. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/templates/atlas/crossmatch_external.html +0 -0
  140. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/templates/atlas/error.html +0 -0
  141. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/templates/atlas/followup.html +0 -0
  142. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/templates/atlas/followup.txt +0 -0
  143. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/templates/atlas/followup2.html +0 -0
  144. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/templates/atlas/followup_bs.html +0 -0
  145. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/templates/atlas/followup_bypass_django_tables.html +0 -0
  146. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/templates/atlas/followup_quickview.html +0 -0
  147. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/templates/atlas/followup_quickview_bs.html +0 -0
  148. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/templates/atlas/followup_subset.txt +0 -0
  149. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/templates/atlas/gcn.txt +0 -0
  150. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/templates/atlas/gcn_latex.txt +0 -0
  151. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/templates/atlas/heatmap.html +0 -0
  152. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/templates/atlas/heatmap_test.html +0 -0
  153. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/templates/atlas/index.html +0 -0
  154. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/templates/atlas/index_bs.html +0 -0
  155. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/templates/atlas/index_bs_celestial.html +0 -0
  156. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/templates/atlas/index_bs_celestial_experiment.html +0 -0
  157. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/templates/atlas/iobserve.txt +0 -0
  158. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/templates/atlas/lightcurve.txt +0 -0
  159. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/templates/atlas/lightcurveddc.txt +0 -0
  160. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/templates/atlas/lightcurveforced.txt +0 -0
  161. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/templates/atlas/lightcurvestackedforced.txt +0 -0
  162. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/templates/atlas/pesstorecurrences.txt +0 -0
  163. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/templates/atlas/pesstorecurrencesddc.txt +0 -0
  164. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/templates/atlas/pesstosummary.txt +0 -0
  165. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/templates/atlas/search_results.html +0 -0
  166. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/templates/atlas/search_results_plotly.html +0 -0
  167. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/templates/atlas/sne.json +0 -0
  168. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/templates/atlas/summary.csv +0 -0
  169. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/templates/atlas/userdefinedlists.html +0 -0
  170. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/templates/atlas/userdefinedlists_bs.html +0 -0
  171. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/templates/atlas/visibility.txt +0 -0
  172. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/templates/base.html +0 -0
  173. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/templates/base_bootstrap.html +0 -0
  174. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/templates/base_bootstrap_login.html +0 -0
  175. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/templates/bootstrap4_django_tables2_atlas.html +0 -0
  176. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/templates/invalid_login.html +0 -0
  177. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/templates/loggedin.html +0 -0
  178. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/templates/login.html +0 -0
  179. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/templates/logout.html +0 -0
  180. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/atlas/test.py +0 -0
  181. {psat_server_web-0.4.2/psat_server_web/ps1 → psat_server_web-0.5.0/psat_server_web/atlas/tests}/__init__.py +0 -0
  182. {psat_server_web-0.4.2/psat_server_web/ps1/psdb → psat_server_web-0.5.0/psat_server_web/atlas/tests/atlasapi}/__init__.py +0 -0
  183. {psat_server_web-0.4.2/psat_server_web/ps1/site_media/js/celestial/data → psat_server_web-0.5.0/psat_server_web/common}/__init__.py +0 -0
  184. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/common/psat_api_client.py +0 -0
  185. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/config/wsgi.conf.template +0 -0
  186. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/createUsers.py +0 -0
  187. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/generate_mod_wsgi_apachectl.sh +0 -0
  188. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/manage.py +0 -0
  189. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/media/images/README.txt +0 -0
  190. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/psdb/admin.py.old +0 -0
  191. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/psdb/catalogueviews.py +0 -0
  192. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/psdb/commonqueries.py +0 -0
  193. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/psdb/dbviews.py +0 -0
  194. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/psdb/formchoices.py +0 -0
  195. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/psdb/helpers.py +0 -0
  196. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/psdb/img_scale.py +0 -0
  197. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/psdb/lightcurvequeries.py +0 -0
  198. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/psdb/models.py +0 -0
  199. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/psdb/settings.py +0 -0
  200. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/psdb/urls.py +0 -0
  201. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/psdb/views.py +0 -0
  202. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/psdb/wsgi.py +0 -0
  203. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/psdb/wsgi_apache_example.conf +0 -0
  204. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/psdbapi/apps.py +0 -0
  205. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/psdbapi/permissions.py +0 -0
  206. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/psdbapi/query_auth.py +0 -0
  207. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/psdbapi/serializers.py +0 -0
  208. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/psdbapi/urls.py +0 -0
  209. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/psdbapi/views.py +0 -0
  210. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/css/aladin.css +0 -0
  211. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/css/celestial.css +0 -0
  212. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/css/fontawesome.css +0 -0
  213. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/css/main.css +0 -0
  214. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/css/main_bootstrap.css +0 -0
  215. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/1-star-hover.jpg +0 -0
  216. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/1-star.jpg +0 -0
  217. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/2-star-hover.jpg +0 -0
  218. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/2-star.jpg +0 -0
  219. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/3-star-hover.jpg +0 -0
  220. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/3-star.jpg +0 -0
  221. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/aladin.gif +0 -0
  222. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/cfaIcon.jpg +0 -0
  223. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/cfaIconHover.jpg +0 -0
  224. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/confirmed-sne-hover.jpg +0 -0
  225. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/confirmed-sne.jpg +0 -0
  226. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/detection_example.jpg +0 -0
  227. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/down.jpeg +0 -0
  228. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/down.jpg +0 -0
  229. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/image_not_available.jpeg +0 -0
  230. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/jhuIcon.jpg +0 -0
  231. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/jhuIconHover.jpg +0 -0
  232. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/minus.jpg +0 -0
  233. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/ncuIcon.jpg +0 -0
  234. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/ncuIconHover.jpg +0 -0
  235. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/non_detection_example.jpg +0 -0
  236. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/others-hover.jpg +0 -0
  237. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/others.jpg +0 -0
  238. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/panstarrs-logo-hover.jpg +0 -0
  239. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/panstarrs-logo.jpg +0 -0
  240. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/panstarrs1_logo.jpg +0 -0
  241. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/panstarrs1_o3_logo.jpg +0 -0
  242. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/panstarrs2_logo.jpg +0 -0
  243. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/panstarrs2_o3_logo.jpg +0 -0
  244. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/panstarrs_logo.jpg +0 -0
  245. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/panstarrs_logo_o4.jpg +0 -0
  246. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/panstarrs_logo_original.jpg +0 -0
  247. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/panstarrs_logo_yse.jpg +0 -0
  248. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/panstarrs_logo_yse_stack.jpg +0 -0
  249. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/pittsIcon.jpg +0 -0
  250. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/pittsIconHover.jpg +0 -0
  251. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/plus.jpg +0 -0
  252. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/ps1Icon.jpg +0 -0
  253. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/ps1IconHover.jpg +0 -0
  254. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/ps1sc.gif +0 -0
  255. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/qub-logo-hover.jpg +0 -0
  256. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/qub-logo.jpg +0 -0
  257. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/qubIcon.jpg +0 -0
  258. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/qubIconHover.jpg +0 -0
  259. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/sdss.gif +0 -0
  260. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/table-background.jpg +0 -0
  261. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/table-bottom-left.jpg +0 -0
  262. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/table-bottom-right.jpg +0 -0
  263. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/table-row.jpg +0 -0
  264. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/table-top-left.jpg +0 -0
  265. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/table-top-right.jpg +0 -0
  266. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/uhifaIcon.jpg +0 -0
  267. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/uhifaIconHover.jpg +0 -0
  268. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/up.jpeg +0 -0
  269. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/up.jpg +0 -0
  270. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/variable-stars-hover.jpg +0 -0
  271. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/images/variable-stars.jpg +0 -0
  272. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/js/aladin.js +0 -0
  273. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/js/celestial/celestial.js +0 -0
  274. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/js/celestial/d3.geo.projection.js +0 -0
  275. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/js/celestial/d3.geo.projection.min.js +0 -0
  276. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/js/celestial/d3.geo.zoom.js +0 -0
  277. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/js/celestial/d3.min.js +0 -0
  278. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/js/celestial/data/constellations.bounds.json +0 -0
  279. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/js/celestial/data/constellations.json +0 -0
  280. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/js/celestial/data/constellations.lines.json +0 -0
  281. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/js/celestial/data/dsos.bright.json +0 -0
  282. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/js/celestial/data/lg.json +0 -0
  283. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/js/celestial/data/mw.json +0 -0
  284. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/js/celestial/data/planets.json +0 -0
  285. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/js/celestial/data/stars.6.json +0 -0
  286. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/js/colourplot.js +0 -0
  287. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/js/flot/excanvas.js +0 -0
  288. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/js/flot/jquery-1.7.2.js +0 -0
  289. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/js/flot/jquery.flot.axislabels.js +0 -0
  290. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/js/flot/jquery.flot.crosshair.js +0 -0
  291. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/js/flot/jquery.flot.errorbars.js +0 -0
  292. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/js/flot/jquery.flot.fillbetween.js +0 -0
  293. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/js/flot/jquery.flot.image.js +0 -0
  294. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/js/flot/jquery.flot.js +0 -0
  295. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/js/flot/jquery.flot.navigate.js +0 -0
  296. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/js/flot/jquery.flot.pie.js +0 -0
  297. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/js/flot/jquery.flot.resize.js +0 -0
  298. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/js/flot/jquery.flot.selection.js +0 -0
  299. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/js/flot/jquery.flot.stack.js +0 -0
  300. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/js/flot/jquery.flot.symbol.js +0 -0
  301. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/js/flot/jquery.flot.threshold.js +0 -0
  302. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/js/followup_selectall.js +0 -0
  303. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/js/lightcurve.js +0 -0
  304. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/js/lightcurveplotly.js +0 -0
  305. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/js/mjdcalc.js +0 -0
  306. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/js/plotly/plotly-latest.kws.js +0 -0
  307. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/js/recurrenceplot.js +0 -0
  308. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/js/recurrenceplotplotly.js +0 -0
  309. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/webfonts/fa-brands-400.eot +0 -0
  310. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/webfonts/fa-brands-400.svg +0 -0
  311. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/webfonts/fa-brands-400.ttf +0 -0
  312. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/webfonts/fa-brands-400.woff +0 -0
  313. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/webfonts/fa-brands-400.woff2 +0 -0
  314. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/webfonts/fa-regular-400.eot +0 -0
  315. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/webfonts/fa-regular-400.svg +0 -0
  316. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/webfonts/fa-regular-400.ttf +0 -0
  317. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/webfonts/fa-regular-400.woff +0 -0
  318. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/webfonts/fa-regular-400.woff2 +0 -0
  319. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/webfonts/fa-solid-900.eot +0 -0
  320. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/webfonts/fa-solid-900.svg +0 -0
  321. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/webfonts/fa-solid-900.ttf +0 -0
  322. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/webfonts/fa-solid-900.woff +0 -0
  323. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/site_media/webfonts/fa-solid-900.woff2 +0 -0
  324. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/sql/create_web_cat_views.sql +0 -0
  325. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/sql/create_web_user_grants.sql +0 -0
  326. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/sql/create_web_views.sql +0 -0
  327. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/sql/create_web_views_fgss.sql +0 -0
  328. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/templates/400.html +0 -0
  329. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/templates/403.html +0 -0
  330. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/templates/404.html +0 -0
  331. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/templates/500.html +0 -0
  332. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/templates/admin/base_site.html +0 -0
  333. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/templates/base.html +0 -0
  334. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/templates/base_bootstrap.html +0 -0
  335. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/templates/base_bootstrap_login.html +0 -0
  336. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/templates/base_new.html +0 -0
  337. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/templates/bootstrap4_django_tables2_atlas.html +0 -0
  338. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/templates/invalid_login.html +0 -0
  339. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/templates/loggedin.html +0 -0
  340. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/templates/login.html +0 -0
  341. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/templates/logout.html +0 -0
  342. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/templates/psdb/atelsdiscovery.txt +0 -0
  343. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/templates/psdb/candidate.html +0 -0
  344. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/templates/psdb/candidate_plotly.html +0 -0
  345. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/templates/psdb/candidate_quickview.html +0 -0
  346. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/templates/psdb/candidateflot.html +0 -0
  347. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/templates/psdb/candidates.html +0 -0
  348. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/templates/psdb/colourdata.txt +0 -0
  349. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/templates/psdb/crossmatch_cfa_with_ipp.html +0 -0
  350. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/templates/psdb/crossmatch_external.html +0 -0
  351. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/templates/psdb/dss2.html +0 -0
  352. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/templates/psdb/error.html +0 -0
  353. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/templates/psdb/fasttrackastronote.txt +0 -0
  354. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/templates/psdb/filter.html +0 -0
  355. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/templates/psdb/followup.html +0 -0
  356. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/templates/psdb/followup.txt +0 -0
  357. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/templates/psdb/followup_bs.html +0 -0
  358. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/templates/psdb/followup_bs_old.html +0 -0
  359. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/templates/psdb/followup_quickview.html +0 -0
  360. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/templates/psdb/followup_quickview_bs.html +0 -0
  361. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/templates/psdb/followup_quickview_bs_old.html +0 -0
  362. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/templates/psdb/gcn.txt +0 -0
  363. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/templates/psdb/gcn_latex.txt +0 -0
  364. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/templates/psdb/index.html +0 -0
  365. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/templates/psdb/index_bs_celestial.html +0 -0
  366. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/templates/psdb/index_public.html +0 -0
  367. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/templates/psdb/lightcurve.txt +0 -0
  368. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/templates/psdb/lightcurveforced.txt +0 -0
  369. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/templates/psdb/lightcurves.html +0 -0
  370. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/templates/psdb/obscat.txt +0 -0
  371. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/templates/psdb/obsmediawiki.txt +0 -0
  372. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/templates/psdb/public.html +0 -0
  373. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/templates/psdb/public_textonly.txt +0 -0
  374. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/templates/psdb/reports.html +0 -0
  375. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/templates/psdb/search_results.html +0 -0
  376. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/templates/psdb/search_results_plotly.html +0 -0
  377. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/templates/psdb/sne.json +0 -0
  378. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/templates/psdb/userdefinedlists.html +0 -0
  379. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/ps1/templates/psdb/userdefinedlists_bs.html +0 -0
  380. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/atlas_detections.sql +0 -0
  381. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/atlas_detectionsddc.sql +0 -0
  382. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/atlas_detectionsnnc.sql +0 -0
  383. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/atlas_diff_detections.sql +0 -0
  384. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/atlas_diff_logs.sql +0 -0
  385. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/atlas_diff_moments.sql +0 -0
  386. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/atlas_diff_objects.sql +0 -0
  387. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/atlas_diff_subcell_logs.sql +0 -0
  388. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/atlas_diff_subcells.sql +0 -0
  389. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/atlas_forced_photometry.sql +0 -0
  390. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/atlas_heatmaps.sql +0 -0
  391. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/atlas_metadata.sql +0 -0
  392. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/atlas_metadataddc.sql +0 -0
  393. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/atlas_objects.sql +0 -0
  394. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/atlas_stacked_forced_photometry.sql +0 -0
  395. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/convert_backend_storage_to_innodb.sql +0 -0
  396. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/create_atlas_flattened_view.sql +0 -0
  397. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/create_photpipe_views.sql +0 -0
  398. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/create_schema.sql +0 -0
  399. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/create_user_grants.sql +0 -0
  400. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/create_user_grants_generic.sql +0 -0
  401. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/create_user_grants_root.sql +0 -0
  402. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/delete_transients.sql +0 -0
  403. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/generateATLASSchemaAndCPPClasses.py +0 -0
  404. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/get_table_columns_for_avro.py +0 -0
  405. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/get_table_columns_for_avro.sql +0 -0
  406. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/mjdnow.sql +0 -0
  407. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/refresh_django_views.py +0 -0
  408. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/setup_database.py +0 -0
  409. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/setup_database_utils.py +0 -0
  410. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/sherlock_classifications.sql +0 -0
  411. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/sherlock_crossmatches.sql +0 -0
  412. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/sherlock_triggers_atlas.sql +0 -0
  413. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/sherlock_triggers_ps1.sql +0 -0
  414. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/tcs_cat_gaia_dr1.sql +0 -0
  415. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/tcs_cat_gaia_dr2.sql +0 -0
  416. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/tcs_cat_gaia_dr2_cassandra.cql +0 -0
  417. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/tcs_cat_kepler_k2.sql +0 -0
  418. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/tcs_cat_kepler_k2_pixels.sql +0 -0
  419. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/tcs_cat_ps1_medium_deep_ref.sql +0 -0
  420. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/tcs_cat_ps1_ubercal_stars.sql +0 -0
  421. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/tcs_cat_satellites.sql +0 -0
  422. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/tcs_catalogue_tables.sql +0 -0
  423. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/tcs_cfa_detections.sql +0 -0
  424. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/tcs_cfa_to_ipp_lookup.sql +0 -0
  425. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/tcs_classification_flags.sql +0 -0
  426. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/tcs_classification_history.sql +0 -0
  427. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/tcs_cmf_metadata.sql +0 -0
  428. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/tcs_cross_matches.sql +0 -0
  429. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/tcs_cross_matches_external.sql +0 -0
  430. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/tcs_detection_lists.sql +0 -0
  431. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/tcs_detection_lists_atlas.sql +0 -0
  432. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/tcs_followup_photometry.sql +0 -0
  433. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/tcs_followup_telescope_instruments.sql +0 -0
  434. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/tcs_followup_telescopes.sql +0 -0
  435. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/tcs_forced_photometry.sql +0 -0
  436. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/tcs_function_lunation.sql +0 -0
  437. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/tcs_function_mjdlunation.sql +0 -0
  438. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/tcs_gravity_event_annotations.sql +0 -0
  439. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/tcs_gravity_events.sql +0 -0
  440. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/tcs_guide_star_cat.sql +0 -0
  441. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/tcs_image_groups.sql +0 -0
  442. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/tcs_images.sql +0 -0
  443. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/tcs_ipp_to_cfa_lookup.sql +0 -0
  444. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/tcs_latest_object_stats.sql +0 -0
  445. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/tcs_object_comments.sql +0 -0
  446. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/tcs_object_group_definitions.sql +0 -0
  447. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/tcs_object_group_definitions_atlas.sql +0 -0
  448. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/tcs_object_groups.sql +0 -0
  449. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/tcs_parameter_definitions.sql +0 -0
  450. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/tcs_photpipe_detections.sql +0 -0
  451. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/tcs_postage_stamp_images.sql +0 -0
  452. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/tcs_postage_stamp_requests.sql +0 -0
  453. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/tcs_postage_stamp_status_codes.sql +0 -0
  454. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/tcs_processing_status.sql +0 -0
  455. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/tcs_search_parameters.sql +0 -0
  456. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/tcs_tns_requests.sql +0 -0
  457. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/tcs_tphot_detections.sql +0 -0
  458. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/tcs_transient_objects.sql +0 -0
  459. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/tcs_transient_reobservations.sql +0 -0
  460. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/tcs_vra_rank.sql +0 -0
  461. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/tcs_vra_scores.sql +0 -0
  462. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/tcs_vra_todo.sql +0 -0
  463. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/tcs_zoo_requests.sql +0 -0
  464. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/tcs_zooniverse_scores.sql +0 -0
  465. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/types_gaia_dr2_cassandra.txt +0 -0
  466. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/update_database_types_to_tns_types_atlas.sql +0 -0
  467. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/update_database_types_to_tns_types_panstarrs.sql +0 -0
  468. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/update_tcs_gravity_alerts_001.sql +0 -0
  469. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/update_tcs_gravity_event_annotations_001.sql +0 -0
  470. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/update_tcs_latest_object_stats_001.sql +0 -0
  471. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/update_tcs_vra_rank_20240814.sql +0 -0
  472. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/update_tcs_vra_scores_20240814.sql +0 -0
  473. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web/schema/vra_triggers_atlas.sql +0 -0
  474. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web.egg-info/dependency_links.txt +0 -0
  475. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web.egg-info/not-zip-safe +0 -0
  476. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web.egg-info/requires.txt +0 -0
  477. {psat_server_web-0.4.2 → psat_server_web-0.5.0}/psat_server_web.egg-info/top_level.txt +0 -0
@@ -0,0 +1,131 @@
1
+ Metadata-Version: 2.1
2
+ Name: psat-server-web
3
+ Version: 0.5.0
4
+ Summary: Pan-STARRS and ATLAS web interface.
5
+ Home-page: https://github.com/genghisken/psat-server-web
6
+ Author: genghisken
7
+ Author-email: ken.w.smith@gmail.com
8
+ License: MIT
9
+ Classifier: Development Status :: 4 - Beta
10
+ Classifier: License :: OSI Approved :: MIT License
11
+ Classifier: Programming Language :: Python :: 3.6
12
+ Classifier: Topic :: Utilities
13
+ Requires-Python: >=3.6
14
+ Description-Content-Type: text/markdown
15
+ License-File: LICENSE
16
+ Requires-Dist: numpy
17
+ Requires-Dist: mysqlclient
18
+ Requires-Dist: django<4.2
19
+ Requires-Dist: django_tables2
20
+ Requires-Dist: djangorestframework
21
+ Requires-Dist: mod-wsgi
22
+ Requires-Dist: pyyaml
23
+ Requires-Dist: docopt
24
+ Requires-Dist: python-dotenv
25
+ Requires-Dist: gkhtm
26
+ Requires-Dist: gkutils>=0.3.2
27
+ Requires-Dist: requests
28
+ Requires-Dist: lasair
29
+ Requires-Dist: dustmaps
30
+
31
+ # psat-server-web
32
+ Python 3 web interface for the Pan-STARRS and ATLAS surveys.
33
+
34
+ To install:
35
+
36
+ pip install psat-server-web
37
+
38
+ Once installed, don't forget to add the "data" symlinks in the:
39
+
40
+ site-packages/psat\_server\_web/atlas/media/images
41
+ site-packages/psat\_server\_web/ps1/media/images
42
+
43
+ directories which point to the location of the image stamps.
44
+
45
+ ---
46
+
47
+ # Local development version
48
+
49
+ A localised development instance can be run with docker compose. You will need a
50
+ `.env` file in your repository root to define some environment variables,
51
+ looking something like:
52
+
53
+ ``` .env
54
+ # Django settings
55
+ SECRET_KEY={YOUR_SECRET_KEY_HERE}
56
+ DJANGO_ALLOWED_HOSTS=localhost 127.0.0.1 [::1]
57
+
58
+ # MySQL/MariaDB settings
59
+ MYSQL_ROOT_USER=root
60
+ MYSQL_ROOT_PASSWORD=root
61
+ MYSQL_DATABASE=atlas
62
+ MYSQL_USER=atlas
63
+ MYSQL_PASSWORD=atlas
64
+ MYSQL_PORT=3306
65
+ MYSQL_TEST_DATABASE=atlas_test
66
+ MYSQL_TEST_PORT=3306
67
+ MYSQL_TEST_USER=root
68
+ MYSQL_TEST_PASSWORD=root
69
+
70
+ DJANGO_MYSQL_DBUSER=atlas
71
+ DJANGO_LASAIR_TOKEN=
72
+
73
+ ```
74
+
75
+ Several of the values are omitted but aren't necessary to run a development
76
+ environment. Also ruch simple passwords should not be used in production, but this should get you something running locally. Hopefully it's then as simple as running the following:
77
+
78
+ ``` bash
79
+ docker compose up
80
+ ```
81
+
82
+ Which will start 4 services, comprised of:
83
+ - `db` - A MariaDB instance. By default served at `localhost:3036`
84
+ - `atlas-web` - A mod-wsgi instance to serve the django front end. By default
85
+ served at `localhost:8086` and requires `db` to be running.
86
+ - `adminer` - A web interface for interacting with the db. By default served
87
+ at `localhost:8080` and requires `db` to be running.
88
+ - `tests` - A single-use run of the unit tests using django's `manage.py test`.
89
+ Requires `db` to be running.
90
+
91
+ Each of these services can be run independently with
92
+
93
+ ``` bash
94
+ docker compose up {service_name}
95
+ ```
96
+
97
+ So if, for example, you wanted to run the tests you could execute
98
+ `docker compose up tests` and it would – after starting `db` if it is not
99
+ already running – perform a single run of the unit tests.
100
+
101
+ ## A dummy database
102
+
103
+ There are a few things you will likely need to do to get a fully working version
104
+ of the web-server so as to make your local version useful, namely:
105
+ 1. Get a dummy database dump .sql file from one of the developers and place it into `data/init.sql`
106
+ 2. [Optional] Get an image dump and place it into `data/db_data/`
107
+ 3. Fix a mild issue with the database model (see next section)
108
+
109
+ If you are having problems with any of this, contact one of the developers.
110
+
111
+ ### Issue with `TcsGravityEventAnnotations.map_iteration`
112
+
113
+ If you are getting an error along the lines of
114
+
115
+ ```
116
+ atlas-web-1 | ERRORS:
117
+ atlas-web-1 | atlas.TcsGravityEventAnnotations.map_iteration: (fields.E311) 'TcsGravityAlerts.map_iteration' must be unique because it is referenced by a foreign key.
118
+ atlas-web-1 | HINT: Add unique=True to this field or add a UniqueConstraint (without condition) in the model Meta.constraints.
119
+ ```
120
+
121
+ Then you may need to make an adjustment to the models, specifically by
122
+ uncommenting the line declaring `TcsGravityAlerts.map_iteration` which adds a
123
+ unique `kwarg`, and commenting the line without the unique `kwarg`, should solve
124
+ the problem. Specifically, the lines should look like
125
+ ```
126
+ # map_iteration = models.CharField(max_length=100, blank=True, null=True)
127
+ map_iteration = models.CharField(max_length=100, blank=True, null=True, unique=True)
128
+ ```
129
+ This is within the `TcsGravityAlerts(models.Model)` class. Again, please speak
130
+ to one of the developers if this is unclear.
131
+
@@ -0,0 +1,101 @@
1
+ # psat-server-web
2
+ Python 3 web interface for the Pan-STARRS and ATLAS surveys.
3
+
4
+ To install:
5
+
6
+ pip install psat-server-web
7
+
8
+ Once installed, don't forget to add the "data" symlinks in the:
9
+
10
+ site-packages/psat\_server\_web/atlas/media/images
11
+ site-packages/psat\_server\_web/ps1/media/images
12
+
13
+ directories which point to the location of the image stamps.
14
+
15
+ ---
16
+
17
+ # Local development version
18
+
19
+ A localised development instance can be run with docker compose. You will need a
20
+ `.env` file in your repository root to define some environment variables,
21
+ looking something like:
22
+
23
+ ``` .env
24
+ # Django settings
25
+ SECRET_KEY={YOUR_SECRET_KEY_HERE}
26
+ DJANGO_ALLOWED_HOSTS=localhost 127.0.0.1 [::1]
27
+
28
+ # MySQL/MariaDB settings
29
+ MYSQL_ROOT_USER=root
30
+ MYSQL_ROOT_PASSWORD=root
31
+ MYSQL_DATABASE=atlas
32
+ MYSQL_USER=atlas
33
+ MYSQL_PASSWORD=atlas
34
+ MYSQL_PORT=3306
35
+ MYSQL_TEST_DATABASE=atlas_test
36
+ MYSQL_TEST_PORT=3306
37
+ MYSQL_TEST_USER=root
38
+ MYSQL_TEST_PASSWORD=root
39
+
40
+ DJANGO_MYSQL_DBUSER=atlas
41
+ DJANGO_LASAIR_TOKEN=
42
+
43
+ ```
44
+
45
+ Several of the values are omitted but aren't necessary to run a development
46
+ environment. Also ruch simple passwords should not be used in production, but this should get you something running locally. Hopefully it's then as simple as running the following:
47
+
48
+ ``` bash
49
+ docker compose up
50
+ ```
51
+
52
+ Which will start 4 services, comprised of:
53
+ - `db` - A MariaDB instance. By default served at `localhost:3036`
54
+ - `atlas-web` - A mod-wsgi instance to serve the django front end. By default
55
+ served at `localhost:8086` and requires `db` to be running.
56
+ - `adminer` - A web interface for interacting with the db. By default served
57
+ at `localhost:8080` and requires `db` to be running.
58
+ - `tests` - A single-use run of the unit tests using django's `manage.py test`.
59
+ Requires `db` to be running.
60
+
61
+ Each of these services can be run independently with
62
+
63
+ ``` bash
64
+ docker compose up {service_name}
65
+ ```
66
+
67
+ So if, for example, you wanted to run the tests you could execute
68
+ `docker compose up tests` and it would – after starting `db` if it is not
69
+ already running – perform a single run of the unit tests.
70
+
71
+ ## A dummy database
72
+
73
+ There are a few things you will likely need to do to get a fully working version
74
+ of the web-server so as to make your local version useful, namely:
75
+ 1. Get a dummy database dump .sql file from one of the developers and place it into `data/init.sql`
76
+ 2. [Optional] Get an image dump and place it into `data/db_data/`
77
+ 3. Fix a mild issue with the database model (see next section)
78
+
79
+ If you are having problems with any of this, contact one of the developers.
80
+
81
+ ### Issue with `TcsGravityEventAnnotations.map_iteration`
82
+
83
+ If you are getting an error along the lines of
84
+
85
+ ```
86
+ atlas-web-1 | ERRORS:
87
+ atlas-web-1 | atlas.TcsGravityEventAnnotations.map_iteration: (fields.E311) 'TcsGravityAlerts.map_iteration' must be unique because it is referenced by a foreign key.
88
+ atlas-web-1 | HINT: Add unique=True to this field or add a UniqueConstraint (without condition) in the model Meta.constraints.
89
+ ```
90
+
91
+ Then you may need to make an adjustment to the models, specifically by
92
+ uncommenting the line declaring `TcsGravityAlerts.map_iteration` which adds a
93
+ unique `kwarg`, and commenting the line without the unique `kwarg`, should solve
94
+ the problem. Specifically, the lines should look like
95
+ ```
96
+ # map_iteration = models.CharField(max_length=100, blank=True, null=True)
97
+ map_iteration = models.CharField(max_length=100, blank=True, null=True, unique=True)
98
+ ```
99
+ This is within the `TcsGravityAlerts(models.Model)` class. Again, please speak
100
+ to one of the developers if this is unclear.
101
+
@@ -0,0 +1 @@
1
+ __version__ = '0.5.0'
@@ -0,0 +1,34 @@
1
+ """
2
+ Customise admin interface for Group model to include GroupProfile, so default
3
+ expiry time for tokens can be set.
4
+ """
5
+ import logging
6
+
7
+ from django.contrib import admin
8
+ from django.contrib.auth.models import Group
9
+ from django.forms.models import ModelForm
10
+ from .models import GroupProfile
11
+
12
+
13
+ logger = logging.getLogger(__name__)
14
+
15
+ class AlwaysChangedModelForm(ModelForm):
16
+ def has_changed(self):
17
+ """ Should return True if data differs from initial.
18
+ By always returning true even unchanged inlines will get validated and saved.
19
+ We need this because the GroupProfile needs to be created even if the default
20
+ values haven't been changed.
21
+ """
22
+ return True
23
+
24
+ class GroupProfileInline(admin.StackedInline):
25
+ model = GroupProfile
26
+ can_delete = False
27
+ extra = 1
28
+ form = AlwaysChangedModelForm
29
+
30
+ class GroupAdmin(admin.ModelAdmin):
31
+ inlines = (GroupProfileInline,)
32
+
33
+ admin.site.unregister(Group)
34
+ admin.site.register(Group, GroupAdmin)
@@ -0,0 +1,27 @@
1
+ import logging
2
+
3
+ from django.db.models import signals
4
+ from django.dispatch import receiver
5
+ from django.contrib.auth.models import Group
6
+
7
+ logger = logging.getLogger(__name__)
8
+
9
+ @receiver(signals.post_save, sender=Group)
10
+ def create_group_profile(sender, instance, created, **kwargs):
11
+ # NOTE (2024-11-12 JL): This function is no longer needed as we have instead
12
+ # solved the problem of duplicate GroupProfile creation by using the
13
+ # AlwaysChangedModelForm in the admin interface, but I'm leaving this here
14
+ # as a reference for future use of signals and logging.
15
+ logger.debug('create_group_profile called')
16
+ logger.debug('instance: %s', instance)
17
+ logger.debug('created: %s', created)
18
+
19
+ # Disconnect the signal so we don't get into a loop
20
+ signals.post_save.disconnect(create_group_profile, sender=Group)
21
+
22
+ if created:
23
+ logger.debug('In created block')
24
+
25
+ # Reconnect the signal once we're done
26
+ signals.post_save.connect(create_group_profile, sender=Group)
27
+ logger.debug('create_group_profile finished')
@@ -25,9 +25,9 @@ SITE_ID = 1
25
25
  SECRET_KEY = os.environ.get('DJANGO_SECRET_KEY')
26
26
 
27
27
  # SECURITY WARNING: don't run with debug turned on in production!
28
- DEBUG = True
28
+ DEBUG = os.environ.get('DJANGO_DEBUG', 'False') == 'True'
29
29
 
30
- TEMPLATE_DEBUG = True
30
+ TEMPLATE_DEBUG = os.environ.get('DJANGO_DEBUG', 'False') == 'True'
31
31
 
32
32
  # 2021-08-21 KWS Need to set this to None, otherwise default is 1000.
33
33
  DATA_UPLOAD_MAX_NUMBER_FIELDS = None
@@ -57,14 +57,17 @@ LOGOUT_URL = 'logout'
57
57
 
58
58
  DATABASES = {
59
59
  'default': {
60
- 'ENGINE': 'django.db.backends.mysql',
60
+ 'ENGINE': os.environ.get('DJANGO_DB_ENGINE', 'django.db.backends.mysql'),
61
61
  'NAME': os.environ.get('DJANGO_MYSQL_DBNAME'),
62
62
  'USER': os.environ.get('DJANGO_MYSQL_DBUSER'),
63
63
  'PASSWORD': os.environ.get('DJANGO_MYSQL_DBPASS'),
64
64
  'HOST': os.environ.get('DJANGO_MYSQL_DBHOST'),
65
65
  'PORT': int(os.environ.get('DJANGO_MYSQL_DBPORT')),
66
66
  'TEST': {
67
- 'NAME': os.environ.get('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
@@ -0,0 +1,111 @@
1
+ # tests/test_authentication.py
2
+ from django.test import TestCase
3
+ from django.contrib.auth.models import User, Group
4
+ from django.utils.timezone import now, timedelta
5
+ from django.conf import settings
6
+ from rest_framework.authtoken.models import Token
7
+ from rest_framework.exceptions import AuthenticationFailed
8
+
9
+ from atlasapi.authentication import ExpiringTokenAuthentication
10
+ from accounts.models import GroupProfile
11
+
12
+
13
+ class TokenAuthenticationTests(TestCase):
14
+
15
+ def setUp(self):
16
+ # Create groups
17
+ self.week_group = Group.objects.create(name="Weekly Expiring")
18
+ self.year_group = Group.objects.create(name="Yearly Expiring")
19
+ self.never_expiring_group = Group.objects.create(name="Never Expiring")
20
+ self.no_profile_group = Group.objects.create(name="No Profile")
21
+
22
+ # Add expiration times to group profiles
23
+ # No profile for self.no_profile_group
24
+ GroupProfile.objects.create(group=self.week_group, token_expiration_time=timedelta(weeks=1))
25
+ GroupProfile.objects.create(group=self.year_group, token_expiration_time=timedelta(days=365))
26
+ GroupProfile.objects.create(group=self.never_expiring_group, token_expiration_time=timedelta(days=10000))
27
+
28
+ # Create users and assign them to groups
29
+ self.no_group_user = User.objects.create_user(username="no_group_user", password="password")
30
+ self.no_profile_user = User.objects.create_user(username="no_profile_user", password="password")
31
+ self.week_user = User.objects.create_user(username="week_user", password="password")
32
+ self.year_user = User.objects.create_user(username="year_user", password="password")
33
+ self.never_expiring_user = User.objects.create_user(username="never_expiring_user", password="password")
34
+
35
+ # Assign users to groups
36
+ # No group for self.no_group_user
37
+ self.no_profile_user.groups.add(self.no_profile_group)
38
+ self.week_user.groups.add(self.week_group)
39
+ self.year_user.groups.add(self.year_group)
40
+ self.never_expiring_user.groups.add(self.never_expiring_group)
41
+
42
+ # Create tokens for each user
43
+ self.no_group_token = Token.objects.create(user=self.no_group_user)
44
+ self.no_profile_token = Token.objects.create(user=self.no_profile_user)
45
+ self.week_token = Token.objects.create(user=self.week_user)
46
+ self.year_token = Token.objects.create(user=self.year_user)
47
+ self.never_expiring_token = Token.objects.create(user=self.never_expiring_user)
48
+
49
+ # Setup token authentication
50
+ self.auth = ExpiringTokenAuthentication()
51
+
52
+ def test_no_group(self):
53
+ # Test: user with no group profile should have default token expiration
54
+ self.assertEqual(self.auth.authenticate_credentials(self.no_group_token.key),
55
+ (self.no_group_user, self.no_group_token))
56
+
57
+ self.no_group_token.created = now() - timedelta(days=settings.TOKEN_EXPIRY + 1)
58
+ self.no_group_token.save()
59
+ with self.assertRaises(AuthenticationFailed) as cm:
60
+ self.auth.authenticate_credentials(self.no_group_token.key)
61
+ self.assertEqual(str(cm.exception), 'Token has expired.')
62
+
63
+ def test_no_profile(self):
64
+ # Test: user with no group profile should have default token expiration
65
+ with self.assertRaises(AuthenticationFailed) as cm:
66
+ self.auth.authenticate_credentials(self.no_profile_token.key)
67
+ self.assertEqual(str(cm.exception), 'Could not authenticate: Group has no profile. Please contact administrator.')
68
+
69
+ def test_weekly_token_expiration(self):
70
+ # Test: weekly expiring token should be valid if within one week
71
+ self.assertEqual(
72
+ self.auth.authenticate_credentials(self.week_token.key),
73
+ (self.week_user, self.week_token)
74
+ )
75
+
76
+ # Test: weekly token should expire after one week
77
+ self.week_token.created = now() - timedelta(weeks=2)
78
+ self.week_token.save()
79
+ with self.assertRaises(AuthenticationFailed) as cm:
80
+ self.auth.authenticate_credentials(self.week_token.key)
81
+ self.assertEqual(str(cm.exception), 'Token has expired.')
82
+
83
+ def test_yearly_token_expiration(self):
84
+ # Test: yearly expiring token should be valid if within one year
85
+ self.assertEqual(
86
+ self.auth.authenticate_credentials(self.year_token.key),
87
+ (self.year_user, self.year_token)
88
+ )
89
+
90
+ # Test: yearly token should expire after one year
91
+ self.year_token.created = now() - timedelta(days=400)
92
+ self.year_token.save()
93
+ with self.assertRaises(AuthenticationFailed) as cm:
94
+ self.auth.authenticate_credentials(self.year_token.key)
95
+ self.assertEqual(str(cm.exception), 'Token has expired.')
96
+
97
+ def test_never_expiring_token(self):
98
+ # Test: never-expiring token should always be valid
99
+ self.assertEqual(
100
+ self.auth.authenticate_credentials(self.never_expiring_token.key),
101
+ (self.never_expiring_user, self.never_expiring_token)
102
+ )
103
+
104
+ # Even if we artificially backdate the token, it should still be valid
105
+ self.never_expiring_token.created = now() - timedelta(days=9999)
106
+ self.never_expiring_token.save()
107
+ self.assertEqual(
108
+ self.auth.authenticate_credentials(self.never_expiring_token.key),
109
+ (self.never_expiring_user, self.never_expiring_token)
110
+ )
111
+
@@ -0,0 +1,8 @@
1
+ import unittest
2
+
3
+ from django.test import TestCase
4
+
5
+ class TestFailure(TestCase):
6
+ @unittest.skip("Skipping this test")
7
+ def test_failure(self):
8
+ assert False
@@ -15,14 +15,16 @@ class TestPermissionsAuthenticated(TestCase):
15
15
  self.client.credentials(HTTP_AUTHORIZATION='Token ' + self.token.key)
16
16
 
17
17
  def test_permissions(self):
18
- response = self.client.get(reverse('api:objects'))
18
+ endpoint = "/api/vrascores/"
19
+ response = self.client.get(endpoint)
19
20
  self.assertEqual(response.status_code, status.HTTP_200_OK)
20
21
 
21
- response = self.client.post(reverse('api:objects'))
22
+ response = self.client.post(endpoint)
22
23
  self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
23
24
 
24
25
  self.user.is_staff = True
25
26
  self.user.save()
26
27
 
27
- response = self.client.post(reverse('api:objects'))
28
- self.assertEqual(response.status_code, status.HTTP_201_CREATED)
28
+ response = self.client.post(endpoint)
29
+ # This will now fail with a 400 because we've not provided the payload
30
+ self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
File without changes
@@ -1,6 +1,6 @@
1
1
  -- 2023-06-15 KWS Added an "interesting" column - human override of alert significance
2
2
 
3
- DROP TABLE `tcs_gravity_alerts`;
3
+ DROP TABLE IF EXISTS `tcs_gravity_alerts`;
4
4
 
5
5
  CREATE TABLE `tcs_gravity_alerts` (
6
6
  `id` int NOT NULL AUTO_INCREMENT,
@@ -0,0 +1,131 @@
1
+ Metadata-Version: 2.1
2
+ Name: psat-server-web
3
+ Version: 0.5.0
4
+ Summary: Pan-STARRS and ATLAS web interface.
5
+ Home-page: https://github.com/genghisken/psat-server-web
6
+ Author: genghisken
7
+ Author-email: ken.w.smith@gmail.com
8
+ License: MIT
9
+ Classifier: Development Status :: 4 - Beta
10
+ Classifier: License :: OSI Approved :: MIT License
11
+ Classifier: Programming Language :: Python :: 3.6
12
+ Classifier: Topic :: Utilities
13
+ Requires-Python: >=3.6
14
+ Description-Content-Type: text/markdown
15
+ License-File: LICENSE
16
+ Requires-Dist: numpy
17
+ Requires-Dist: mysqlclient
18
+ Requires-Dist: django<4.2
19
+ Requires-Dist: django_tables2
20
+ Requires-Dist: djangorestframework
21
+ Requires-Dist: mod-wsgi
22
+ Requires-Dist: pyyaml
23
+ Requires-Dist: docopt
24
+ Requires-Dist: python-dotenv
25
+ Requires-Dist: gkhtm
26
+ Requires-Dist: gkutils>=0.3.2
27
+ Requires-Dist: requests
28
+ Requires-Dist: lasair
29
+ Requires-Dist: dustmaps
30
+
31
+ # psat-server-web
32
+ Python 3 web interface for the Pan-STARRS and ATLAS surveys.
33
+
34
+ To install:
35
+
36
+ pip install psat-server-web
37
+
38
+ Once installed, don't forget to add the "data" symlinks in the:
39
+
40
+ site-packages/psat\_server\_web/atlas/media/images
41
+ site-packages/psat\_server\_web/ps1/media/images
42
+
43
+ directories which point to the location of the image stamps.
44
+
45
+ ---
46
+
47
+ # Local development version
48
+
49
+ A localised development instance can be run with docker compose. You will need a
50
+ `.env` file in your repository root to define some environment variables,
51
+ looking something like:
52
+
53
+ ``` .env
54
+ # Django settings
55
+ SECRET_KEY={YOUR_SECRET_KEY_HERE}
56
+ DJANGO_ALLOWED_HOSTS=localhost 127.0.0.1 [::1]
57
+
58
+ # MySQL/MariaDB settings
59
+ MYSQL_ROOT_USER=root
60
+ MYSQL_ROOT_PASSWORD=root
61
+ MYSQL_DATABASE=atlas
62
+ MYSQL_USER=atlas
63
+ MYSQL_PASSWORD=atlas
64
+ MYSQL_PORT=3306
65
+ MYSQL_TEST_DATABASE=atlas_test
66
+ MYSQL_TEST_PORT=3306
67
+ MYSQL_TEST_USER=root
68
+ MYSQL_TEST_PASSWORD=root
69
+
70
+ DJANGO_MYSQL_DBUSER=atlas
71
+ DJANGO_LASAIR_TOKEN=
72
+
73
+ ```
74
+
75
+ Several of the values are omitted but aren't necessary to run a development
76
+ environment. Also ruch simple passwords should not be used in production, but this should get you something running locally. Hopefully it's then as simple as running the following:
77
+
78
+ ``` bash
79
+ docker compose up
80
+ ```
81
+
82
+ Which will start 4 services, comprised of:
83
+ - `db` - A MariaDB instance. By default served at `localhost:3036`
84
+ - `atlas-web` - A mod-wsgi instance to serve the django front end. By default
85
+ served at `localhost:8086` and requires `db` to be running.
86
+ - `adminer` - A web interface for interacting with the db. By default served
87
+ at `localhost:8080` and requires `db` to be running.
88
+ - `tests` - A single-use run of the unit tests using django's `manage.py test`.
89
+ Requires `db` to be running.
90
+
91
+ Each of these services can be run independently with
92
+
93
+ ``` bash
94
+ docker compose up {service_name}
95
+ ```
96
+
97
+ So if, for example, you wanted to run the tests you could execute
98
+ `docker compose up tests` and it would – after starting `db` if it is not
99
+ already running – perform a single run of the unit tests.
100
+
101
+ ## A dummy database
102
+
103
+ There are a few things you will likely need to do to get a fully working version
104
+ of the web-server so as to make your local version useful, namely:
105
+ 1. Get a dummy database dump .sql file from one of the developers and place it into `data/init.sql`
106
+ 2. [Optional] Get an image dump and place it into `data/db_data/`
107
+ 3. Fix a mild issue with the database model (see next section)
108
+
109
+ If you are having problems with any of this, contact one of the developers.
110
+
111
+ ### Issue with `TcsGravityEventAnnotations.map_iteration`
112
+
113
+ If you are getting an error along the lines of
114
+
115
+ ```
116
+ atlas-web-1 | ERRORS:
117
+ atlas-web-1 | atlas.TcsGravityEventAnnotations.map_iteration: (fields.E311) 'TcsGravityAlerts.map_iteration' must be unique because it is referenced by a foreign key.
118
+ atlas-web-1 | HINT: Add unique=True to this field or add a UniqueConstraint (without condition) in the model Meta.constraints.
119
+ ```
120
+
121
+ Then you may need to make an adjustment to the models, specifically by
122
+ uncommenting the line declaring `TcsGravityAlerts.map_iteration` which adds a
123
+ unique `kwarg`, and commenting the line without the unique `kwarg`, should solve
124
+ the problem. Specifically, the lines should look like
125
+ ```
126
+ # map_iteration = models.CharField(max_length=100, blank=True, null=True)
127
+ map_iteration = models.CharField(max_length=100, blank=True, null=True, unique=True)
128
+ ```
129
+ This is within the `TcsGravityAlerts(models.Model)` class. Again, please speak
130
+ to one of the developers if this is unclear.
131
+