def edit_profile(request): profile = request.user.get_profile() user_groups = stringify_groups(profile.groups.all().order_by('name')) user_skills = stringify_groups(profile.skills.all().order_by('name')) if request.method == 'POST': form = forms.ProfileForm( request.POST, request.FILES, instance=profile, ) if form.is_valid(): old_username = request.user.username form.save(request) # Notify the user that their old profile URL won't work. if (not profile.is_vouched and request.user.username != old_username): messages.info( request, _(u'You changed your username; please ' 'note your profile URL has also ' 'changed.')) return redirect(reverse('profile', args=[request.user.username])) else: initial = dict(first_name=request.user.first_name, last_name=request.user.last_name, bio=profile.bio, website=profile.website, irc_nickname=profile.ircname, groups=user_groups, skills=user_skills) if not request.user.username.startswith('u/'): initial.update(username=request.user.username) form = forms.ProfileForm( instance=profile, initial=initial, ) # When changing this keep in mind that the same view is used for # user.register. d = dict(form=form, mode='edit', user_groups=user_groups, my_vouches=UserProfile.objects.filter(vouched_by=profile), profile=profile) return render(request, 'phonebook/edit_profile.html', d)
def edit_profile(request): profile = request.user.get_profile() user_groups = stringify_groups(profile.groups.all().order_by('name')) user_skills = stringify_groups(profile.skills.all().order_by('name')) if request.method == 'POST': form = forms.ProfileForm( request.POST, request.FILES, instance=profile, ) if form.is_valid(): old_username = request.user.username form.save(request) # Notify the user that their old profile URL won't work. if (not profile.is_vouched and request.user.username != old_username): messages.info(request, _(u'You changed your username; please ' 'note your profile URL has also ' 'changed.')) return redirect(reverse('profile', args=[request.user.username])) else: initial = dict(first_name=request.user.first_name, last_name=request.user.last_name, bio=profile.bio, website=profile.website, irc_nickname=profile.ircname, groups=user_groups, skills=user_skills) if not request.user.username.startswith('u/'): initial.update(username=request.user.username) form = forms.ProfileForm( instance=profile, initial=initial, ) # When changing this keep in mind that the same view is used for # user.register. d = dict(form=form, mode='edit', user_groups=user_groups, my_vouches=UserProfile.objects.filter(vouched_by=profile), profile=profile) return render(request, 'phonebook/edit_profile.html', d)
def test_groups_are_case_insensitive(self): """Ensure groups are case insensitive.""" profile = self.mozillian.get_profile() self.client.login(email=self.mozillian.email) self.client.post(reverse('profile.edit'), dict(last_name='tofumatt', groups='Awesome,foo,Bar'), follow=True) eq_(3, profile.groups.count(), 'Three groups should be saved.') group_string = stringify_groups(profile.groups.all()) for g in ['awesome', 'bar', 'foo']: assert g in group_string, ( 'All three saved groups should be lowercase.') assert not 'Awesome' in group_string, ( 'Uppercase group should be transformed to lowercase.') # Make an AJAX request for a group using a capital letter. r = self.client.get(reverse('group_search'), dict(term='Awesome'), HTTP_X_REQUESTED_WITH='XMLHttpRequest') for g in json.loads(r.content): assert g.name == g.name.lower(), ( 'Group search is case-insensitive.')
def edit_profile(request): profile = request.user.get_profile() user_groups = stringify_groups(profile.groups.all().order_by("name")) if request.method == "POST": form = forms.ProfileForm(request.POST, request.FILES, instance=profile) if form.is_valid(): form.save(request) return redirect(reverse("profile", args=[request.user.username])) else: initial = dict( first_name=request.user.first_name, last_name=request.user.last_name, bio=profile.bio, website=profile.website, irc_nickname=profile.ircname, groups=user_groups, ) form = forms.ProfileForm(instance=profile, initial=initial) # When changing this keep in mind that the same view is used for # user.register. d = dict(form=form, mode="edit", user_groups=user_groups, profile=profile) return render(request, "phonebook/edit_profile.html", d)
def edit_profile(request): profile = request.user.get_profile() user_groups = stringify_groups(profile.groups.all().order_by('name')) if request.method == 'POST': form = forms.ProfileForm(request.POST, request.FILES) if form.is_valid(): form.save(request) return redirect(reverse('profile', args=[request.user.username])) else: initial = dict(first_name=request.user.first_name, last_name=request.user.last_name, biography=profile.bio, website=profile.website, irc_nickname=profile.ircname, groups=user_groups) form = forms.ProfileForm(initial=initial) # When changing this keep in mind that the same view is used for # user.register. d = dict(form=form, mode='edit', user_groups=user_groups, profile=profile) return render(request, 'phonebook/edit_profile.html', d)
def _edit_profile(request, new_account): ldap = UserSession.connect(request) unique_id = request.user.unique_id try: person = ldap.get_by_unique_id(unique_id, use_master=True) except NO_SUCH_PERSON: log.info("profile_uid Sending 404 for [%s]" % unique_id) raise Http404 del_form = forms.DeleteForm(initial=dict(unique_id=unique_id)) if not person: raise Http404 if request.user.unique_id != person.unique_id: return HttpResponseForbidden() profile = request.user.get_profile() user_groups = stringify_groups(profile.groups.all().order_by("name")) if request.method == "POST": form = forms.ProfileForm(request.POST, request.FILES) if form.is_valid(): # Save both LDAP and RDBS data via our ProfileForm ldap.update_person(unique_id, form.cleaned_data) ldap.update_profile_photo(unique_id, form.cleaned_data) form.save(request, ldap) return redirect(reverse("confirm_register") if new_account else reverse("profile", args=[unique_id])) else: initial = dict( first_name=person.first_name, last_name=person.last_name, biography=person.biography, website=profile.website, groups=user_groups, ) initial.update(_get_services_fields(ldap, unique_id, use_master=True)) form = forms.ProfileForm(initial=initial) d = dict( form=form, edit_form_action=reverse("phonebook.edit_profile"), delete_form=del_form, person=person, email=person.username, registration_flow=new_account, user_groups=user_groups, photo=ldap.profile_photo(unique_id, use_master=True), ) return render(request, "phonebook/edit_profile.html", d)
def _edit_profile(request, new_account): ldap = UserSession.connect(request) unique_id = request.user.unique_id try: person = ldap.get_by_unique_id(unique_id, use_master=True) except NO_SUCH_PERSON: log.info('profile_uid Sending 404 for [%s]' % unique_id) raise Http404 del_form = forms.DeleteForm(initial=dict(unique_id=unique_id)) if not person: raise Http404 if request.user.unique_id != person.unique_id: return HttpResponseForbidden() profile = request.user.get_profile() user_groups = stringify_groups(profile.groups.all().order_by('name')) if request.method == 'POST': form = forms.ProfileForm(request.POST, request.FILES) if form.is_valid(): # Save both LDAP and RDBS data via our ProfileForm ldap.update_person(unique_id, form.cleaned_data) ldap.update_profile_photo(unique_id, form.cleaned_data) form.save(request, ldap) return redirect( reverse('confirm_register') if new_account else reverse('profile', args=[unique_id])) else: initial = dict(first_name=person.first_name, last_name=person.last_name, biography=person.biography, website=profile.website, groups=user_groups) initial.update(_get_services_fields(ldap, unique_id, use_master=True)) form = forms.ProfileForm(initial=initial) d = dict( form=form, edit_form_action=reverse('phonebook.edit_profile'), delete_form=del_form, person=person, email=person.username, registration_flow=new_account, user_groups=user_groups, photo=ldap.profile_photo(unique_id, use_master=True), ) return render(request, 'phonebook/edit_profile.html', d)
def test_groups_are_case_insensitive(self): """Ensure groups are case insensitive.""" profile = self.mozillian.get_profile() self.client.login(email=self.mozillian.email) self.client.post(reverse("profile.edit"), dict(last_name="tofumatt", groups="Awesome,foo,Bar"), follow=True) eq_(3, profile.groups.count(), "Three groups should be saved.") group_string = stringify_groups(profile.groups.all()) for g in ["awesome", "bar", "foo"]: assert g in group_string, "All three saved groups should be lowercase." assert not "Awesome" in group_string, "Uppercase group should be transformed to lowercase." # Make an AJAX request for a group using a capital letter. r = self.client.get(reverse("group_search"), dict(term="Awesome"), HTTP_X_REQUESTED_WITH="XMLHttpRequest") for g in json.loads(r.content): assert g.name == g.name.lower(), "Group search is case-insensitive."
def edit_profile(request): profile = request.user.get_profile() user_groups = stringify_groups(profile.groups.all().order_by('name')) if request.method == 'POST': form = forms.ProfileForm(request.POST, request.FILES, instance=profile) if form.is_valid(): form.save(request) return redirect(reverse('profile', args=[request.user.username])) else: initial = dict(first_name=request.user.first_name, last_name=request.user.last_name, bio=profile.bio, website=profile.website, irc_nickname=profile.ircname, groups=user_groups) form = forms.ProfileForm(instance=profile, initial=initial) # When changing this keep in mind that the same view is used for # user.register. d = dict(form=form, mode='edit', user_groups=user_groups, profile=profile) return render(request, 'phonebook/edit_profile.html', d)
def edit_profile(request): COUNTRIES = zip( product_details.get_regions(request.locale).values(), product_details.get_regions(request.locale).values()) COUNTRIES = sorted(COUNTRIES, key=lambda country: country[1]) COUNTRIES.insert(0, ('', '----')) profile = request.user.get_profile() user_groups = stringify_groups(profile.groups.all().order_by('name')) user_skills = stringify_groups(profile.skills.all().order_by('name')) user_languages = stringify_groups(profile.languages.all().order_by('name')) if request.method == 'POST': form = forms.ProfileForm( request.POST, request.FILES, instance=profile, ) form.fields['region'].choices = COUNTRIES if 'reset_api_key' in request.POST: # The rest of the form is irrelevant. try: request.user.api_key.delete() except ApiKey.DoesNotExist: pass return redirect(urlparams(reverse('profile.edit'), 'services')) if form.is_valid(): old_username = request.user.username form.save(request) # Notify the user that their old profile URL won't work. if (not profile.is_vouched and request.user.username != old_username): messages.info( request, _(u'You changed your username; please ' 'note your profile URL has also ' 'changed.')) return redirect(reverse('profile', args=[request.user.username])) else: initial = dict(first_name=request.user.first_name, last_name=request.user.last_name, username=request.user.username, bio=profile.bio, website=profile.website, irc_nickname=profile.ircname, groups=user_groups, skills=user_skills, languages=user_languages) form = forms.ProfileForm( instance=profile, initial=initial, ) form.fields['country'].choices = COUNTRIES if not request.user.username.startswith('u/'): initial.update(username=request.user.username) # When changing this keep in mind that the same view is used for # user.register. d = dict(form=form, mode='edit', user_groups=user_groups, my_vouches=UserProfile.objects.filter(vouched_by=profile), profile=profile) # If there are form errors, don't send a 200 OK. status = 400 if form.errors else 200 return render(request, 'phonebook/edit_profile.html', d, status=status)
def edit_profile(request): COUNTRIES = product_details.get_regions(request.locale).items() COUNTRIES = sorted(COUNTRIES, key=lambda country: country[1]) COUNTRIES.insert(0, ('', '----')) profile = request.user.get_profile() user_groups = stringify_groups(profile.groups.all().order_by('name')) user_skills = stringify_groups(profile.skills.all().order_by('name')) user_languages = stringify_groups(profile.languages.all().order_by('name')) if request.method == 'POST': form = forms.ProfileForm( request.POST, request.FILES, instance=profile, ) form.fields['region'].choices = COUNTRIES if 'reset_api_key' in request.POST: # The rest of the form is irrelevant. try: request.user.api_key.delete() except ApiKey.DoesNotExist: pass return redirect(urlparams(reverse('profile.edit'), 'services')) if form.is_valid(): old_username = request.user.username form.save(request) # Notify the user that their old profile URL won't work. if (not profile.is_vouched and request.user.username != old_username): messages.info(request, _(u'You changed your username; please ' 'note your profile URL has also ' 'changed.')) return redirect(reverse('profile', args=[request.user.username])) else: initial = dict(first_name=request.user.first_name, last_name=request.user.last_name, username=request.user.username, bio=profile.bio, website=profile.website, irc_nickname=profile.ircname, groups=user_groups, skills=user_skills, languages=user_languages) form = forms.ProfileForm( instance=profile, initial=initial, ) form.fields['country'].choices = COUNTRIES if not request.user.username.startswith('u/'): initial.update(username=request.user.username) # When changing this keep in mind that the same view is used for # user.register. d = dict(form=form, mode='edit', user_groups=user_groups, my_vouches=UserProfile.objects.filter(vouched_by=profile), profile=profile) # If there are form errors, don't send a 200 OK. status = 400 if form.errors else 200 return render(request, 'phonebook/edit_profile.html', d, status=status)