def edit_profile(request): user = request.user user_profile = user.user_profile if request.method == 'POST' and request.POST: user_form = UserEditForm(request.POST, instance=user) profile_form = UserProfileForm(request.POST, request.FILES, instance=user_profile) edu_formset = EducationDetailsFormSet(request.POST, instance=user_profile) emp_formset = EmploymentDetailsFormSet(request.POST, instance=user_profile) if user_form.is_valid() and profile_form.is_valid() and edu_formset.is_valid() and emp_formset.is_valid(): if "url" in request.POST: user_profile.picture = cropAndSave(user, request.POST) user_profile.save() user_form.save() profile_form.save() emp_formset.save() edu_formset.save() return render(request, "mentor/edit_profile.html", locals()) # return here if different behaviour desired else: print user_form.errors print profile_form.errors return render(request, "mentor/edit_profile.html", locals()) else: user_form = UserEditForm(instance=user) profile_form = UserProfileForm(instance=user_profile) edu_formset = EducationDetailsFormSet(instance=user_profile) emp_formset = EmploymentDetailsFormSet(instance=user_profile) context = RequestContext(request) context_dict = {} categories = Business_categories.objects.all() dict_index = 0; for cat in categories: subcat_list = [] subcategories = Business_subcategories.objects.filter(category_id=cat.id) subcat_list.append({'category_id': cat.id, 'category_name': cat.name, 'subcategories': subcategories}) context_dict[dict_index] = subcat_list dict_index = dict_index + 1 tags = Business_Mentor_Tags.objects.filter(mentor=user_profile) return render(request, "mentor/edit_profile.html", locals())
def register(request): # Like before, get the request's context. context = RequestContext(request) # A boolean value for telling the template whether the registration was successful. # Set to False initially. Code changes value to True when registration succeeds. registered = False # 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. data = request.POST.copy() # so we can manipulate data # random username data['username'] = data[ 'email'] # useless,rather keep email as data['email'] username ''.join([choice(letters) for i in xrange(30)]) data['is_new'] = False user_form = UserForm(data) profile_form = UserProfileForm(data=request.POST) education_form = EducationForm(data=request.POST) # If the two forms are valid... if user_form.is_valid() and profile_form.is_valid() and education_form.is_valid(): # Save the user's form data to the database. user = user_form.save() # Now we hash the password with the set_password method. # Once hashed, we can update the user object. user.save() ''' we dont need it now #now delete the default mentee profile thats created UserProfile.objects.get(user=user).delete() ''' # Now sort out the UserProfile instance. # Since we need to set the user attribute ourselves, we set commit=False. # This delays saving the model until we're ready to avoid integrity problems. profile = profile_form.save(commit=False) profile.user = user cropAndSave(user, request.POST) if "url" in request.POST: profile.picture = request.POST['url'] else: HttpResponse("Image URL missing :(") profile.is_new = False profile.is_mentor = True education = education_form.save(commit=False) education.parent = profile # employee = employment_form.save(commit=False) # employee.parent = profile profile.save() if education.institution != '': education.save() # if employee.organization != '': # employee.save() # Update our variable to tell the template registration was successful. registered = True return HttpResponseRedirect("/user/thank-you/") # Invalid form or forms - mistakes or something else? # Print problems to the terminal. # They'll also be shown to the user. else: print user_form.errors, profile_form.errors, education_form.errors return HttpResponse("Invalid user Input.") # Not a HTTP POST, so we render our form using two ModelForm instances. # These forms will be blank, ready for user input. else: user_form = UserForm() profile_form = UserProfileForm() education_form = EducationForm() # employment_form = EmploymentForm() # Render the template depending on the context. return render_to_response( 'mentor/register.html', {'user_form': user_form, 'profile_form': profile_form, 'education_form': education_form, 'registered': registered}, context)