+
+@super_user_required
+def recalculate_denormalized(request):
+ for n in Node.objects.all():
+ n = n.leaf
+ n.score = n.votes.aggregate(score=Sum('value'))['score']
+ if not n.score: n.score = 0
+ n.save()
+
+ for u in User.objects.all():
+ u.reputation = u.reputes.aggregate(reputation=Sum('value'))['reputation']
+ u.save()
+
+ request.user.message_set.create(message=_('All values recalculated'))
+ return HttpResponseRedirect(reverse('admin_index'))
+
+@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(),
+ })
+
+