def profile_edit(request): tas = TASClient() user = request.user tas_user = tas.get_user(username=user.username) user = request.user ds_profile = DesignSafeProfile.objects.get(user_id=user.id) pro_form = forms.ProfessionalProfileForm(request.POST or None, instance=ds_profile) if request.method == 'POST': form = forms.UserProfileForm(request.POST, initial=tas_user) if form.is_valid() and pro_form.is_valid(): pro_form.save() data = form.cleaned_data # punt on PI Eligibility for now data['piEligibility'] = tas_user['piEligibility'] # retain original account source data['source'] = tas_user['source'] tas.save_user(tas_user['id'], data) messages.success(request, 'Your profile has been updated!') try: ds_profile = user.profile ds_profile.ethnicity = data['ethnicity'] ds_profile.gender = data['gender'] except ObjectDoesNotExist as e: logger.info('exception e: {} {}'.format(type(e), e )) ds_profile = DesignSafeProfile( user=user, ethnicity=data['ethnicity'], gender=data['gender'] ) ds_profile.update_required = False ds_profile.save() return HttpResponseRedirect(reverse('designsafe_accounts:manage_profile')) else: try: tas_user['ethnicity'] = user.profile.ethnicity tas_user['gender'] = user.profile.gender except ObjectDoesNotExist: pass form = forms.UserProfileForm(initial=tas_user) context = { 'title': 'Account Profile', 'form': form, 'pro_form': pro_form } return render(request, 'designsafe/apps/accounts/profile_edit.html', context)