"""Utilities used by views that allow users to interact with FITS images."""
import json
from django.http import JsonResponse
[docs]
def update_fits_display(request):
"""Updatet the displayed FITS image per user interaction."""
if 'fits_display' not in request.session:
request.session['fits_display'] = {
'image_index': 0,
'range': 'zscale',
'transform': None,
}
if request.method != 'POST':
return None
request_data = json.loads(request.body.decode())
print(f'Request data: {request_data!r}')
change = request_data.pop('change')
if change == 'next image':
request.session['fits_display']['image_index'] += 1
elif change == 'previous image':
request.session['fits_display']['image_index'] -= 1
else:
assert len(change) == 1
for param, value in change.items():
request.session['fits_display'][param] = (
int(value) - 1 if param == 'image_index'
else value
)
request.session['view_config'] = json.dumps(request_data)
request.session.modified = True
return JsonResponse({'ok': True})