From 9c13667ff05b1039668e6740134490af1aae8551 Mon Sep 17 00:00:00 2001 From: Emanuel Schuetze Date: Mon, 2 Apr 2012 08:35:10 +0200 Subject: [PATCH] #81: Merged fix of r363 from default branch into 1.2-dev branch. --- .../templates/participant/overview.html | 27 +++++++---- openslides/participant/urls.py | 7 ++- openslides/participant/views.py | 48 +++++++++++-------- openslides/static/javascript/participant.js | 39 +++++++++++++++ openslides/static/styles/participant.css | 33 +++++++++++++ 5 files changed, 123 insertions(+), 31 deletions(-) create mode 100644 openslides/static/javascript/participant.js create mode 100644 openslides/static/styles/participant.css diff --git a/openslides/participant/templates/participant/overview.html b/openslides/participant/templates/participant/overview.html index 6436a97c7..9e0efbad3 100644 --- a/openslides/participant/templates/participant/overview.html +++ b/openslides/participant/templates/participant/overview.html @@ -4,6 +4,13 @@ {% block title %}{{ block.super }} - {%trans "Participants" %}{% endblock %} +{% block header %} + {% if perms.agenda.can_manage_agenda %} + + + {% endif %} +{% endblock %} + {% block content %}

{% trans "Participants" %}

@@ -76,16 +83,16 @@ - {% if user.is_active %} - - {% else %} - - {% endif %} - {% if user.is_superuser %} - - {% else %} - - {% endif %} + + + + + + {% endif %} diff --git a/openslides/participant/urls.py b/openslides/participant/urls.py index a665202a6..e7665dd69 100644 --- a/openslides/participant/urls.py +++ b/openslides/participant/urls.py @@ -19,8 +19,11 @@ urlpatterns = patterns('participant.views', url(r'^participant/(?P\d+)/edit$', 'edit', name='user_edit'), url(r'^participant/print$', 'print_userlist', name='user_print'), url(r'^participant/(?P\d+)/del$', 'user_delete', name='user_delete'), - url(r'^participant/(?P\d+)/admin$', 'user_set_superuser', name='user_set_superuser'), - url(r'^participant/(?P\d+)/active$', 'user_set_active', name='user_set_active'), + url(r'^participant/(?P\d+)/active/$', 'user_set_active', {'active': True}, name='user_active'), + url(r'^participant/(?P\d+)/inactive/$', 'user_set_active', {'active': False}, name='user_inactive'), + url(r'^participant/(?P\d+)/superuser/$', 'user_set_superuser', {'superuser': True}, name='user_superuser'), + url(r'^participant/(?P\d+)/normaluser/$', 'user_set_superuser', {'superuser': False}, name='user_normaluser'), + url(r'^participant/import$', 'user_import', name='user_import'), url(r'^participant/group/$', 'get_group_overview', name='user_group_overview'), url(r'^participant/group/new$', 'group_edit', name='user_group_new'), diff --git a/openslides/participant/views.py b/openslides/participant/views.py index b5d06309e..22ad2b9ff 100644 --- a/openslides/participant/views.py +++ b/openslides/participant/views.py @@ -34,7 +34,7 @@ from django.db import transaction from participant.models import Profile from participant.api import gen_username, gen_password from participant.forms import UserNewForm, UserEditForm, ProfileForm, UsersettingsForm, UserImportForm, GroupForm, AdminPasswordChangeForm -from utils.utils import template, permission_required, gen_confirm_form +from utils.utils import template, permission_required, gen_confirm_form, ajax_request from utils.pdf import print_userlist, print_passwords from utils.template import Tab from system import config @@ -177,30 +177,40 @@ def user_delete(request, user_id): @permission_required('participant.can_manage_participant') @template('confirm.html') -def user_set_superuser(request, user_id): - user = User.objects.get(pk=user_id) - if user.is_superuser: - user.is_superuser = False +def user_set_superuser(request, user_id, superuser=True): + try: + user = User.objects.get(pk=user_id) + user.is_superuser = superuser user.save() - messages.success(request, _('Participant %s is now a normal user.') % user) - else: - user.is_superuser = True - user.save() - messages.success(request, _('Participant %s is now administrator.') % user) + except User.DoesNotExist: + messages.error(request, _('Participant %d does not exist.') % int(user_id)) + + if request.is_ajax(): + if superuser: + link = reverse('user_normaluser', args=[user.id]) + else: + link = reverse('user_superuser', args=[user.id]) + return ajax_request({'superuser': superuser, + 'link': link}) return redirect(reverse('user_overview')) @permission_required('participant.can_manage_participant') @template('confirm.html') -def user_set_active(request, user_id): - user = User.objects.get(pk=user_id) - if user.is_active: - user.is_active = False +def user_set_active(request, user_id, active=True): + try: + user = User.objects.get(pk=user_id) + user.is_active = active user.save() - messages.success(request, _('Participant %s was successfully deactivated.') % user) - else: - user.is_active = True - user.save() - messages.success(request, _('Participant %s was successfully activated.') % user) + except User.DoesNotExist: + messages.error(request, _('Participant %d does not exist.') % int(user_id)) + + if request.is_ajax(): + if active: + link = reverse('user_inactive', args=[user.id]) + else: + link = reverse('user_active', args=[user.id]) + return ajax_request({'active': active, + 'link': link}) return redirect(reverse('user_overview')) @permission_required('participant.can_manage_participant') diff --git a/openslides/static/javascript/participant.js b/openslides/static/javascript/participant.js new file mode 100644 index 000000000..895456830 --- /dev/null +++ b/openslides/static/javascript/participant.js @@ -0,0 +1,39 @@ +$(function() { + $('.status_link').click(function(event) { + event.preventDefault(); + link = $(this); + $.ajax({ + type: 'GET', + url: link.attr('href'), + dataType: 'json', + success: function(data) { + if (data.active) { + newclass = 'active'; + } else { + newclass = 'inactive'; + } + link.removeClass('active inactive').addClass(newclass); + link.attr('href', data.link); + } + }); + }); + + $('.superuser_link').click(function(event) { + event.preventDefault(); + link = $(this); + $.ajax({ + type: 'GET', + url: link.attr('href'), + dataType: 'json', + success: function(data) { + if (data.superuser) { + newclass = 'superuser'; + } else { + newclass = 'normaluser'; + } + link.removeClass('superuser normaluser').addClass(newclass); + link.attr('href', data.link); + } + }); + }); +}); \ No newline at end of file diff --git a/openslides/static/styles/participant.css b/openslides/static/styles/participant.css new file mode 100644 index 000000000..5355ec87f --- /dev/null +++ b/openslides/static/styles/participant.css @@ -0,0 +1,33 @@ +a.status_link.active span { + background-image: url(/static/images/icons/user-online.png); + background-repeat: no-repeat; + background-position: center; + width: 16px; + height: 16px; + display: inline-block; +} +a.status_link.inactive span { + background-image: url(/static/images/icons/user-offline.png); + background-repeat: no-repeat; + background-position: center; + width: 16px; + height: 16px; + display: inline-block; +} + +a.superuser_link.superuser span { + background-image: url(/static/images/icons/meeting-chair.png); + background-repeat: no-repeat; + background-position: center; + width: 16px; + height: 16px; + display: inline-block; +} +a.superuser_link.normaluser span { + background-image: url(/static/images/icons/im-user.png); + background-repeat: no-repeat; + background-position: center; + width: 16px; + height: 16px; + display: inline-block; +} \ No newline at end of file