diff options
author | Dan McGee <dan@archlinux.org> | 2013-11-08 13:14:27 -0600 |
---|---|---|
committer | Dan McGee <dan@archlinux.org> | 2013-11-08 13:15:02 -0600 |
commit | e2fc5cfccdd2f844e75df75f44fff84f4181da7d (patch) | |
tree | 0a90df2557f2a49829fcadde24b51fda176e87e2 | |
parent | 7ac017e1e7884320bd00f67134dd1ae7e06ceaaf (diff) |
Ensure user has a profile created when they go to edit it
Use get_or_create, even though it leaves a bad taste in my mouth. The
first user created won't have a profile becuase Django doesn't create
one for users created at the command line, causing an exception when
the user goes to edit it.
Signed-off-by: Dan McGee <dan@archlinux.org>
-rw-r--r-- | devel/views.py | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/devel/views.py b/devel/views.py index 378d6d57..b6e85822 100644 --- a/devel/views.py +++ b/devel/views.py @@ -20,7 +20,7 @@ from django.utils.http import http_date from django.utils.timezone import now from .forms import ProfileForm, UserProfileForm, NewUserForm -from .models import DeveloperKey +from .models import DeveloperKey, UserProfile from main.models import Package, PackageFile from main.models import Arch, Repo from news.models import News @@ -158,10 +158,11 @@ def clock(request): @login_required @never_cache def change_profile(request): + profile, _ = UserProfile.objects.get_or_create(user=request.user) if request.POST: form = ProfileForm(request.POST) profile_form = UserProfileForm(request.POST, request.FILES, - instance=request.user.userprofile) + instance=profile) if form.is_valid() and profile_form.is_valid(): request.user.email = form.cleaned_data['email'] if form.cleaned_data['passwd1']: @@ -172,7 +173,7 @@ def change_profile(request): return HttpResponseRedirect('/devel/') else: form = ProfileForm(initial={'email': request.user.email}) - profile_form = UserProfileForm(instance=request.user.userprofile) + profile_form = UserProfileForm(instance=profile) return render(request, 'devel/profile.html', {'form': form, 'profile_form': profile_form}) |