Example #1
0
def edit_profile(request):
	# If it's a HTTP POST, we're interested in processing form data.
	if request.method == 'POST':
		# Attempt to grab information from the raw form information.
		# Note that we make use of both UserForm and UserProfileForm.

		user = request.user
		profile = None
		query_set = UserProfile.objects.filter(user=user)
		if not query_set.exists():
			profile = UserProfile()
			profile.user = user
			profile.save()
		else:
			profile = query_set[0]


		if 'username' in request.POST and request.POST.get('username'):
			if User.objects.filter(username=str(request.POST.get('username'))).exists():
				error_messages = ['Username "' + str(request.POST.get('username')) + '" is already taken.']
				return view_profile(request, request.user.id, error_messages=error_messages)
			user.username = request.POST.get('username')
		if 'password' in request.POST and request.POST.get('password'):
			user.set_password(request.POST.get('password'))
		if 'first_name' in request.POST and request.POST.get('first_name'):
			user.first_name = request.POST.get('first_name')
		if 'last_name' in request.POST and request.POST.get('last_name'):
			user.last_name = request.POST.get('last_name')
		if 'email' in request.POST and request.POST.get('email'):
			user.email = request.POST.get('email')
		user.save()

		if 'picture-clear' in request.POST:
			profile.picture.delete(save=False)
		elif 'picture' in request.FILES:
			profile.picture = request.FILES['picture']
		if 'website' in request.POST and request.POST.get('website'):
			profile.website = request.POST.get('website')
		profile.save()
		
		return HttpResponseRedirect('/users/'+str(user.id))

	# Not a HTTP POST, this should never happen
	else:
		return view_profile(request, request.user.id, error_messages=['An error occurred while editing profile.'])