1
# Copyright 2010 Canonical Ltd. This software is licensed under the
2
# GNU Affero General Public License version 3 (see the file LICENSE).
7
from django.conf import settings
8
from django.contrib.admin.views.decorators import staff_member_required
9
from django.http import Http404, HttpResponse, HttpResponseRedirect
10
from django.shortcuts import render
11
from django.views.decorators.csrf import csrf_exempt
12
from django.views.decorators.http import require_POST
14
from identityprovider.readonly import (
21
logger = logging.getLogger(__name__)
24
@staff_member_required
25
def readonly_admin(request):
26
atts = get_server_atts(settings.APP_SERVERS)
27
return render(request, 'admin/readonly.html', atts)
30
@staff_member_required
31
def readonly_confirm(request, action, appserver=None):
32
if request.method == 'POST':
33
update_server(action, appserver)
34
return HttpResponseRedirect('/readonly')
36
'appserver': appserver,
39
return render(request, 'admin/readonly_confirm.html', context)
44
def readonly_data(request):
45
"""Provides data about the readonly status of this app server."""
47
secret = request.POST.get('secret')
48
if secret != settings.READONLY_SECRET:
50
'readonly_data request received with incorrect secret %r', secret)
53
action = request.POST.get('action')
54
romanager = ReadOnlyManager()
57
romanager.set_readonly()
58
elif action == 'clear':
59
romanager.clear_readonly()
62
'readonly': settings.READ_ONLY_MODE,
64
return HttpResponse(json.dumps(result))