+@admin_page
+def maintenance(request):
+ if request.POST:
+ if 'close' in request.POST or 'adjust' in request.POST:
+ form = MaintenanceModeForm(request.POST)
+
+ if form.is_valid():
+ settings.MAINTAINANCE_MODE.set_value({
+ 'allow_ips': form.cleaned_data['ips'],
+ 'message': form.cleaned_data['message']})
+
+ if 'close' in request.POST:
+ message = _('Maintenance mode enabled')
+ else:
+ message = _('Settings adjusted')
+
+ request.user.message_set.create(message=message)
+
+ return HttpResponseRedirect(reverse('admin_maintenance'))
+ elif 'open' in request.POST:
+ settings.MAINTAINANCE_MODE.set_value(None)
+ request.user.message_set.create(message=_("Your site is now running normally"))
+ return HttpResponseRedirect(reverse('admin_maintenance'))
+ else:
+ form = MaintenanceModeForm(initial={'ips': request.META['REMOTE_ADDR'],
+ 'message': _('Currently down for maintenance. We\'ll be back soon')})
+
+ return ('osqaadmin/maintenance.html', {'form': form, 'in_maintenance': settings.MAINTAINANCE_MODE.value is not None
+ })
+
+
+@admin_page
+def flagged_posts(request):
+ return ('osqaadmin/flagged_posts.html', {
+ 'flagged_posts': get_flagged_posts(),
+ })
+
+@admin_page
+def static_pages(request):
+ pages = Page.objects.all()
+
+ return ('osqaadmin/static_pages.html', {
+ 'pages': pages,
+ })
+
+@admin_page
+def edit_page(request, id=None):
+ if id:
+ page = get_object_or_404(Page, id=id)
+ else:
+ page = None
+
+ if request.POST:
+ form = PageForm(page, request.POST)
+
+ if form.is_valid():
+ if form.has_changed():
+ if not page:
+ page = NewPageAction(user=request.user, ip=request.META['REMOTE_ADDR']).save(data=form.cleaned_data
+ ).node
+ else:
+ EditPageAction(user=request.user, node=page, ip=request.META['REMOTE_ADDR']).save(
+ data=form.cleaned_data)
+
+ if ('publish' in request.POST) and (not page.published):
+ PublishAction(user=request.user, node=page, ip=request.META['REMOTE_ADDR']).save()
+ elif ('unpublish' in request.POST) and page.published:
+ page.nstate.published.cancel(ip=request.META['REMOTE_ADDR'])
+
+ return HttpResponseRedirect(reverse('admin_edit_page', kwargs={'id': page.id}))
+
+ else:
+ form = PageForm(page)
+
+ if page:
+ published = page.published
+ else:
+ published = False
+
+ return ('osqaadmin/edit_page.html', {
+ 'page': page,
+ 'form': form,
+ 'published': published
+ })
+
+
+