in pontoon/contributors/views.py [0:0]
def settings(request):
"""View and edit user settings."""
profile = request.user.profile
if request.method == "POST":
locales_form = forms.UserLocalesOrderForm(
request.POST,
instance=profile,
)
user_form = forms.UserForm(
request.POST,
instance=request.user,
)
user_profile_form = forms.UserProfileForm(
request.POST,
instance=profile,
)
if (
locales_form.is_valid()
and user_form.is_valid()
and user_profile_form.is_valid()
):
locales_form.save()
user_form.save()
user_profile_form.save()
if "contact_email" in user_profile_form.changed_data:
profile.contact_email_verified = False
profile.save(update_fields=["contact_email_verified"])
token = utils.generate_verification_token(request.user)
link = request.build_absolute_uri(
reverse("pontoon.contributors.verify.email", args=(token,))
)
send_verification_email(request.user, link)
messages.success(request, "Settings saved.")
else:
user_form = forms.UserForm(instance=request.user)
user_profile_form = forms.UserProfileForm(instance=profile)
selected_locales = list(profile.sorted_locales)
available_locales = Locale.objects.exclude(
pk__in=[loc.pk for loc in selected_locales]
)
default_homepage_locale = Locale(name="Default homepage", code="")
all_locales = list(Locale.objects.all())
all_locales.insert(0, default_homepage_locale)
custom_homepage_locale = default_homepage_locale
# Set default for custom homepage locale based on code
if profile.custom_homepage:
try:
custom_homepage_locale = get_locale_or_redirect(profile.custom_homepage)
except Http404:
messages.info(
request,
"Your previously selected custom homepage locale is no longer available. Please pick a different one.",
)
# Similar logic for preferred source locale
default_preferred_source_locale = Locale(name="Default project locale", code="")
preferred_locales = list(Locale.objects.all())
preferred_locales.insert(0, default_preferred_source_locale)
preferred_source_locale = default_preferred_source_locale
# Set preferred source locale based on code
if profile.preferred_source_locale:
try:
preferred_source_locale = get_locale_or_redirect(
profile.preferred_source_locale
)
except Http404:
messages.info(
request,
"Your previously selected preferred source locale is no longer available. Please pick a different one.",
)
return render(
request,
"contributors/settings.html",
{
"selected_locales": selected_locales,
"available_locales": available_locales,
"locales": all_locales,
"locale": custom_homepage_locale,
"preferred_locales": preferred_locales,
"preferred_locale": preferred_source_locale,
"user_form": user_form,
"user_profile_form": user_profile_form,
"user_profile_toggle_form": forms.UserProfileToggleForm(instance=profile),
},
)