コード例 #1
0
ファイル: views.py プロジェクト: opinnmr/stjornbord
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))