X-Git-Url: https://git.openstreetmap.org./osqa.git/blobdiff_plain/f32668123bbf48a0b73e90024bc09aa60e903ea0..1157280cd8ff44da57a37dfc2f5920e53180f6b4:/forum/views/admin.py diff --git a/forum/views/admin.py b/forum/views/admin.py index 724315f..a834b71 100644 --- a/forum/views/admin.py +++ b/forum/views/admin.py @@ -1,20 +1,23 @@ from datetime import datetime, timedelta -import os, time, csv, random +import json +import time +from django.views.decorators.csrf import csrf_exempt from django.shortcuts import render_to_response, get_object_or_404 from django.core.urlresolvers import reverse from django.http import HttpResponseRedirect, HttpResponse, Http404 -from forum.http_responses import HttpResponseUnauthorized from django.template import RequestContext from django.utils.translation import ugettext as _ -from django.utils import simplejson from django.db import models + +from django.contrib import messages + +from forum.http_responses import HttpResponseUnauthorized from forum.settings.base import Setting from forum.forms import MaintenanceModeForm, PageForm, CreateUserForm from forum.settings.forms import SettingsSetForm from forum.utils import pagination, html from forum.utils.mail import send_template_email - from forum.models import Question, Answer, User, Node, Action, Page, NodeState, Tag from forum.models.node import NodeMetaClass from forum.actions import NewPageAction, EditPageAction, PublishAction, DeleteAction, UserJoinsAction, CloseAction @@ -56,6 +59,10 @@ def admin_page_wrapper(fn, request, *args, **kwargs): context['tools'] = [(name, fn.label) for name, fn in TOOLS.items()] + # Show the navigation only to moderators and super users + if not context.has_key("hide_navigation"): + context['hide_navigation'] = not request.user.is_superuser + unsaved = request.session.get('previewing_settings', {}) context['unsaved'] = set([getattr(settings, s).set.name for s in unsaved.keys() if hasattr(settings, s)]) @@ -114,7 +121,7 @@ def statistics(request): 'added_at', flat=True) last_month_n_questions = Question.objects.filter_state(deleted=False).filter(added_at__lt=last_month).count() - qgraph_data = simplejson.dumps([ + qgraph_data = json.dumps([ (time.mktime(d.timetuple()) * 1000, i + last_month_n_questions) for i, d in enumerate(last_month_questions) ]) @@ -124,7 +131,7 @@ def statistics(request): last_month_n_users = User.objects.filter(date_joined__lt=last_month).count() - ugraph_data = simplejson.dumps([ + ugraph_data = json.dumps([ (time.mktime(d.timetuple()) * 1000, i + last_month_n_users) for i, d in enumerate(last_month_users) ]) @@ -176,7 +183,7 @@ def settings_set(request, set_name): if not 'reset' in request.POST: form.save() - request.user.message_set.create(message=_("'%s' settings saved succesfully") % set_name) + messages.info(request, _("'%s' settings saved succesfully") % set_name) if set_name in ('minrep', 'badges', 'repgain'): settings.SETTINGS_PACK.set_value("custom") @@ -283,7 +290,7 @@ def go_bootstrap(request): settings.SETTINGS_PACK.set_value("bootstrap") - request.user.message_set.create(message=_('Bootstrap mode enabled')) + messages.info(request, _('Bootstrap mode enabled')) return HttpResponseRedirect(reverse('admin_index')) @super_user_required @@ -297,7 +304,7 @@ def go_defaults(request): settings.SETTINGS_PACK.set_value("default") - request.user.message_set.create(message=_('All values reverted to defaults')) + messages.info(request, ('All values reverted to defaults')) return HttpResponseRedirect(reverse('admin_index')) @@ -313,7 +320,7 @@ def recalculate_denormalized(request): u.reputation = u.reputes.aggregate(reputation=models.Sum('value'))['reputation'] u.save() - request.user.message_set.create(message=_('All values recalculated')) + messages.info(request, _('All values recalculated')) return HttpResponseRedirect(reverse('admin_index')) @admin_page @@ -332,12 +339,12 @@ def maintenance(request): else: message = _('Settings adjusted') - request.user.message_set.create(message=message) + messages.info(request, 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")) + messages.info(request, _("Your site is now running normally")) return HttpResponseRedirect(reverse('admin_maintenance')) else: form = MaintenanceModeForm(initial={'ips': request.META['REMOTE_ADDR'], @@ -401,6 +408,12 @@ def edit_page(request, id=None): 'published': published }) +@admin_page +def delete_page(request, id=None): + page = get_object_or_404(Page, id=id) + page.delete() + return HttpResponseRedirect(reverse('admin_static_pages')) + @admin_tools_page(_('createuser'), _("Create new user")) def create_user(request): if request.POST: @@ -416,7 +429,7 @@ def create_user(request): user_.save() UserJoinsAction(user=user_).save() - request.user.message_set.create(message=_("New user created sucessfully. %s.") % html.hyperlink( + messages.info(request, _("New user created sucessfully. %s.") % html.hyperlink( user_.get_profile_url(), _("See %s profile") % user_.username, target="_blank")) return HttpResponseRedirect(reverse("admin_tools", kwargs={'name': 'createuser'})) @@ -458,7 +471,7 @@ def node_management(request): selected_nodes = request.POST.getlist('_selected_node') if selected_nodes and request.POST.get('action', None): - action = request.POST['action'] + action = str(request.POST['action']) selected_nodes = Node.objects.filter(id__in=selected_nodes) message = _("No action performed") @@ -496,7 +509,7 @@ def node_management(request): message = _("All selected nodes deleted") - request.user.message_set.create(message=message) + messages.info(request, message) params = pagination.generate_uri(request.GET, ('page',)) @@ -565,9 +578,10 @@ def node_management(request): 'state_types': state_types, 'authors': authors, 'tags': tags, - 'hide_menu': True + 'hide_navigation': True })) +@csrf_exempt @super_user_required def test_email_settings(request): user = request.user @@ -578,4 +592,4 @@ def test_email_settings(request): 'osqaadmin/test_email_settings.html', { 'user': user, }, RequestContext(request) - ) \ No newline at end of file + )