def edit_user(request, kennitala, user_id=None): ou = get_object_or_404(OrganizationalUnit, pk=kennitala) if user_id: userp = get_object_or_404(UserProfile, pk=user_id, kennitala=kennitala) title = u"Breyta notanda" else: userp = None title = u"Bæta við notanda" if request.method == "POST": user = None form = UserForm(request.POST) if form.is_valid(current_holder=userp): if not user_id: user = User.objects.create(username=form.cleaned_data['username'], password="******") userp = UserProfile( user = user, kennitala = ou.kennitala, user_type = ContentType.objects.get_for_model(ou), ) userp.status = UserStatus.objects.get(pk=form.cleaned_data['status']) if form.cleaned_data['password']: userp.set_password(form.cleaned_data['password']) userp.set_dirty() # TODO: Catch invalid state transitions. userp.save() return HttpResponseRedirect("/ou/list/") else: initial = {'kennitala': kennitala, 'status': 1} if user_id: initial['status'] = userp.status.id initial['username'] = userp.user.username form = UserForm(initial=initial) return render_to_response('ou/edit.html', {'form': form.as_ul(), 'title': title, 'userp': userp, 'editwarning': True if userp else False }, context_instance=RequestContext(request))