Fix user update formular

This commit is contained in:
Götz 2019-04-09 15:13:56 +02:00
parent a400b1812b
commit acfa85e220
4 changed files with 34 additions and 17 deletions

View File

@ -8,6 +8,17 @@ class AddLDAPUserForm(forms.Form):
email = forms.EmailField(label='E-Mail', required=False)
class UpdateLDAPUserForm(forms.Form):
# username = forms.CharField(label='Nutzername', max_length=400)
email = forms.EmailField(label='E-Mail')
password = forms.CharField(label='Passwort', widget=forms.PasswordInput, required=False)
first_name = forms.CharField(label='Vorname', required=True)
last_name = forms.CharField(label='Nachname', required=True)
# phone = forms.(db_column='telephoneNumber', blank=True)
# mobile_phone = forms.CharField(db_column='mobile', blank=True)
# photo = forms.ImageField(label='Profilfoto', required=False)
class UserDeleteListForm(forms.Form):
ldap_users = forms.ModelMultipleChoiceField(widget=forms.CheckboxSelectMultiple, queryset=LdapUser.objects.all())

View File

@ -1,16 +1,20 @@
import logging
import re
from smtplib import SMTPAuthenticationError, SMTPConnectError, SMTPException
from socket import timeout
from django.contrib.auth.decorators import login_required
from django.contrib.auth.models import Group, User
from django.shortcuts import render, redirect
from django.core.exceptions import ObjectDoesNotExist
from django.shortcuts import render, redirect, HttpResponse
from account_helper.models import Realm
from account_manager.utils.mail_utils import realm_send_mail
from .forms import RealmAddForm, RealmUpdateForm, EmailSettingsForm
from .models import LdapGroup, LdapUser
logger = logging.getLogger(__name__)
def is_realm_admin(view_func):
def decorator(request, *args, **kwargs):
@ -31,10 +35,14 @@ def realm_list(request):
if not user.is_superuser:
realms = Realm.objects.filter(admin_group__user__username__contains=user.username)
if len(realms) == 0:
user = LdapUser.objects.get(username=user.username)
realm_base_dn = re.compile('(uid=[a-zA-Z0-9_]*),(ou=[a-zA-Z_]*),(.*)').match(user.dn).group(3)
realm = Realm.objects.get(ldap_base_dn=realm_base_dn)
return redirect('realm-user-detail', realm.id, user.dn)
try:
user = LdapUser.objects.get(username=user.username)
realm_base_dn = re.compile('(uid=[a-zA-Z0-9_]*),(ou=[a-zA-Z_]*),(.*)').match(user.dn).group(3)
realm = Realm.objects.get(ldap_base_dn=realm_base_dn)
return redirect('realm-user-detail', realm.id, user.dn)
except ObjectDoesNotExist as err:
logger.info('Anmeldung fehlgeschlagen', err)
return HttpResponse("Invalid login. Please try again.")
elif len(realms) == 1:
return redirect('realm-detail', realms[0].id)
else:

View File

@ -6,7 +6,7 @@ from . import main_views
urlpatterns = [
# Realm
path('realm/', main_views.realm_list, name='realm-home'),
path('', main_views.realm_list, name='realm-home'),
path('realm/<int:realm_id>/', main_views.realm_detail, name='realm-detail'),
path('realm/<int:realm_id>/update/', main_views.realm_update, name='realm-update'),
path('realm/<int:realm_id>/delete/', main_views.realm_delete, name='realm-delete'),

View File

@ -1,16 +1,14 @@
from django.contrib.auth.decorators import login_required
from django.contrib.auth.models import User
from django.contrib.auth.views import PasswordResetConfirmView
from django.contrib.sites.shortcuts import get_current_site
from django.core.exceptions import ObjectDoesNotExist
from django.shortcuts import render, redirect
from account_helper.models import Realm
from account_manager.forms import AddLDAPUserForm, UserDeleteListForm
from account_manager.models import LdapUser, LdapGroup
from django.contrib.auth.models import User
from account_manager.forms import AddLDAPUserForm, UserDeleteListForm, UpdateLDAPUserForm
from account_manager.main_views import is_realm_admin
from django.core.exceptions import ObjectDoesNotExist, ValidationError
from django.utils.http import urlsafe_base64_decode
from django.contrib.auth.views import PasswordResetConfirmView
from django.contrib.sites.shortcuts import get_current_site
from django.contrib.auth import login
from account_manager.models import LdapUser, LdapGroup
@login_required
@ -132,9 +130,9 @@ def user_deleted(request, realm_id):
def user_update_controller(ldap_user, realm_id, realm_obj, request, user_dn, redirect_name, detail_page):
if request.method == 'POST':
form = AddLDAPUserForm(request.POST)
form = UpdateLDAPUserForm(request.POST)
if form.is_valid():
ldap_user.username = form.cleaned_data['username']
# ldap_user.username = form.cleaned_data['username']
password = form.cleaned_data['password']
if password:
ldap_user.password = password
@ -147,7 +145,7 @@ def user_update_controller(ldap_user, realm_id, realm_obj, request, user_dn, red
else:
form_data = {'username': ldap_user.username, 'first_name': ldap_user.first_name,
'last_name': ldap_user.last_name, 'email': ldap_user.email}
form = AddLDAPUserForm(initial=form_data)
form = UpdateLDAPUserForm(initial=form_data)
return render(request, detail_page, {'form': form, 'realm': realm_obj})