Automated merge with ssh://openslides.org/openslides
This commit is contained in:
commit
452d23a16b
@ -9,10 +9,20 @@
|
||||
:copyright: 2011 by the OpenSlides team, see AUTHORS.
|
||||
:license: GNU GPL, see LICENSE for more details.
|
||||
"""
|
||||
from random import choice
|
||||
import string
|
||||
|
||||
from django.contrib.auth.models import User
|
||||
|
||||
|
||||
def gen_password():
|
||||
chars = string.letters + string.digits
|
||||
newpassword = ''
|
||||
for i in range(8):
|
||||
newpassword += choice(chars)
|
||||
return newpassword
|
||||
|
||||
|
||||
def gen_username(first_name, last_name):
|
||||
testname = "%s%s" % (first_name, last_name)
|
||||
try:
|
||||
|
@ -12,6 +12,7 @@
|
||||
|
||||
from django.forms import Form, ModelForm, CharField, EmailField, FileField, FileInput, MultipleChoiceField
|
||||
from django.contrib.auth.models import User, Group
|
||||
from django.contrib.auth.forms import AdminPasswordChangeForm
|
||||
from django.utils.translation import ugettext as _
|
||||
from participant.models import Profile
|
||||
|
||||
@ -24,7 +25,7 @@ class UserForm(ModelForm):
|
||||
|
||||
class Meta:
|
||||
model = User
|
||||
exclude = ('username', 'password', 'is_staff', 'last_login', 'date_joined', 'user_permissions')
|
||||
exclude = ('password', 'is_staff', 'last_login', 'date_joined', 'user_permissions')
|
||||
|
||||
class UsernameForm(ModelForm):
|
||||
error_css_class = 'error'
|
||||
|
@ -14,6 +14,8 @@ from django.db import models
|
||||
from django.contrib.auth.models import User
|
||||
from django.utils.translation import ugettext as _
|
||||
|
||||
from participant.api import gen_password
|
||||
|
||||
class Profile(models.Model):
|
||||
GENDER_CHOICES = (
|
||||
('none', _('Not specified')),
|
||||
@ -32,6 +34,11 @@ class Profile(models.Model):
|
||||
group = models.CharField(max_length=100, null=True, blank=True, verbose_name = _("Group"))
|
||||
type = models.CharField(max_length=100, choices=TYPE_CHOICE, default='delegate', verbose_name = _("Typ"))
|
||||
committee = models.CharField(max_length=100, null=True, blank=True, verbose_name = _("Committee"))
|
||||
firstpassword = models.CharField(max_length=100, null=True, blank=True, verbose_name = _("First Password"))
|
||||
|
||||
|
||||
def reset_password(self):
|
||||
self.user.set_password(self.firstpassword)
|
||||
|
||||
def __unicode__(self):
|
||||
if self.group:
|
||||
@ -44,3 +51,10 @@ class Profile(models.Model):
|
||||
('can_view_participants', "Can see the list of participants"),
|
||||
('can_manage_participants', "Can manage the participant list"),
|
||||
)
|
||||
|
||||
def set_first_user_passwords():
|
||||
for user in Profile.objects.filter(firstpassword=''):
|
||||
user.firstpassword = gen_password()
|
||||
user.user.set_password(user.firstpassword)
|
||||
user.user.save()
|
||||
user.save()
|
||||
|
@ -14,6 +14,7 @@
|
||||
<li><a href="{% url user_group_new %}">{%trans "New user group" %}</a></li>
|
||||
<li><a href="{% url user_print %}"><img src="/static/images/icons/application-pdf.png"> {%trans 'Print participant list' %}</a></li>
|
||||
<li><a href="{% url user_import %}"> {%trans 'Import' %}</a></li>
|
||||
<li><a href="{% url user_gen_passwords %}">{% trans 'Set Default Passwords' %}</a></li>
|
||||
{% endif %}
|
||||
</ul>
|
||||
{% endblock %}
|
||||
|
@ -9,11 +9,11 @@
|
||||
{% endif %}
|
||||
|
||||
<form action="" method="post">{% csrf_token %}
|
||||
{% if edituser %}
|
||||
{{ usernameform.as_p }}
|
||||
{% endif %}
|
||||
{{ userform.as_p }}
|
||||
{{ profileform.as_p }}
|
||||
{% if edituser %}
|
||||
<a href="{% url user_reset_passwords edituser.id %}">{% trans 'Reset Password' %}</a>
|
||||
{% endif %}
|
||||
<button type="submit">
|
||||
<span class="icon ok">{%trans 'Save' %}</span>
|
||||
</button>
|
||||
|
@ -27,6 +27,8 @@ urlpatterns = patterns('participant.views',
|
||||
url(r'^participant/group/(?P<group_id>\d+)/edit$', 'group_edit', name='user_group_edit'),
|
||||
url(r'^participant/group/(?P<group_id>\d+)/del$', 'group_delete', name='user_group_delete'),
|
||||
url(r'^user/settings$', 'user_settings', name='user_settings'),
|
||||
url(r'^participant/genpasswords$', 'gen_passwords', name='user_gen_passwords'),
|
||||
url(r'^participant/resetpassword/(?P<user_id>\d+)$', 'reset_password', name='user_reset_passwords'),
|
||||
)
|
||||
|
||||
urlpatterns += patterns('django.contrib.auth.views',
|
||||
|
@ -20,9 +20,9 @@ from django.contrib.auth.forms import SetPasswordForm
|
||||
from django.contrib import messages
|
||||
from django.core.urlresolvers import reverse
|
||||
from django.utils.translation import ugettext as _
|
||||
from participant.models import Profile
|
||||
from participant.models import Profile, set_first_user_passwords
|
||||
from participant.api import gen_username
|
||||
from participant.forms import UserForm, UsernameForm, ProfileForm, UsersettingsForm, UserImportForm, GroupForm
|
||||
from participant.forms import UserForm, UsernameForm, ProfileForm, UsersettingsForm, UserImportForm, GroupForm, AdminPasswordChangeForm
|
||||
from utils.utils import template, permission_required, gen_confirm_form
|
||||
from utils.pdf import print_userlist
|
||||
|
||||
@ -81,24 +81,18 @@ def edit(request, user_id=None):
|
||||
|
||||
if request.method == 'POST':
|
||||
userform = UserForm(request.POST, instance=user, prefix="user")
|
||||
usernameform = UsernameForm(request.POST, instance=user, prefix="username")
|
||||
try:
|
||||
profileform = ProfileForm(request.POST, instance=user.profile, prefix="profile")
|
||||
except:
|
||||
profileform = ProfileForm(request.POST, prefix="profile")
|
||||
|
||||
formlist = [userform, profileform]
|
||||
formerror = 0
|
||||
if user:
|
||||
formlist.append(usernameform)
|
||||
for f in formlist:
|
||||
if not f.is_valid():
|
||||
formerror += 1
|
||||
if formerror == 0:
|
||||
user = userform.save()
|
||||
if user_id is None:
|
||||
user.username = gen_username(user.first_name, user.last_name)
|
||||
user.set_password("%s%s" % (user.first_name, user.last_name))
|
||||
user.save()
|
||||
profile = profileform.save(commit=False)
|
||||
profile.user = user
|
||||
profile.save()
|
||||
@ -110,14 +104,12 @@ def edit(request, user_id=None):
|
||||
messages.error(request, _('Please check the form for errors.'))
|
||||
else:
|
||||
userform = UserForm(instance=user, prefix="user")
|
||||
usernameform = UsernameForm(instance=user, prefix="username")
|
||||
try:
|
||||
profileform = ProfileForm(instance=user.profile, prefix="profile")
|
||||
except AttributeError:
|
||||
profileform = ProfileForm(prefix="profile")
|
||||
return {
|
||||
'userform': userform,
|
||||
'usernameform': usernameform,
|
||||
'profileform': profileform,
|
||||
'edituser': user,
|
||||
}
|
||||
@ -274,3 +266,22 @@ def user_import(request):
|
||||
return {
|
||||
'form': form,
|
||||
}
|
||||
|
||||
|
||||
@permission_required('participant.can_manage_participants')
|
||||
def gen_passwords(request):
|
||||
set_first_user_passwords()
|
||||
return redirect(reverse('user_overview'))
|
||||
|
||||
|
||||
@permission_required('participant.can_manage_participants')
|
||||
def reset_password(request, user_id):
|
||||
user = User.objects.get(pk=user_id)
|
||||
if request.method == 'POST':
|
||||
user.profile.reset_password()
|
||||
user.profile.save()
|
||||
messages.success(request, _('The Password for <b>%s</b> was successfully resettet') % user)
|
||||
else:
|
||||
gen_confirm_form(request, _('Do you really want to reset the password for <b>%s</b>') % user,
|
||||
reverse('user_overview'))
|
||||
return redirect(reverse('user_edit', args=[user_id]))
|
||||
|
Loading…
Reference in New Issue
Block a user