diff --git a/config.py b/config.py index 948b1b1..0b57119 100644 --- a/config.py +++ b/config.py @@ -52,7 +52,7 @@ OPENID_CREATE_USERS = True OPENID_UPDATE_DETAILS_FROM_SREG = True SITE_NAME = os.environ.get('SITE_NAME', 'libravatar') -IVATAR_VERSION = '1.3' +IVATAR_VERSION = '1.4' SECURE_BASE_URL = os.environ.get('SECURE_BASE_URL', 'https://avatars.linux-kernel.at/avatar/') BASE_URL = os.environ.get('BASE_URL', 'http://avatars.linux-kernel.at/avatar/') diff --git a/ivatar/ivataraccount/templates/preferences.html b/ivatar/ivataraccount/templates/preferences.html index 76612a4..ea563ac 100644 --- a/ivatar/ivataraccount/templates/preferences.html +++ b/ivatar/ivataraccount/templates/preferences.html @@ -7,36 +7,56 @@ {% block content %}

{% trans 'Account settings' %}

-
- - -
+ + +
{% csrf_token %} +
+ + + + + + + +
+ + +
-
+
-

{% trans 'Permanently delete your account' %}

+ +

{% trans 'Permanently delete your account' %}

{% endblock content %} diff --git a/ivatar/ivataraccount/views.py b/ivatar/ivataraccount/views.py index db18795..bcdc7b4 100644 --- a/ivatar/ivataraccount/views.py +++ b/ivatar/ivataraccount/views.py @@ -731,6 +731,9 @@ class UserPreferenceView(FormView, UpdateView): success_url = reverse_lazy('user_preference') def post(self, request, *args, **kwargs): # pylint: disable=unused-argument + ''' + Process POST-ed data from this form + ''' userpref = None try: userpref = self.request.user.userpreference @@ -738,6 +741,30 @@ class UserPreferenceView(FormView, UpdateView): userpref = UserPreference(user=self.request.user) userpref.theme = request.POST['theme'] userpref.save() + try: + if request.POST['email'] != self.request.user.email: + addresses = list(self.request.user.confirmedemail_set.all().values_list('email', flat=True)) + if request.POST['email'] not in addresses: + messages.error(self.request, _('Mail address not allowed: %s' % request.POST['email'])) + else: + self.request.user.email = request.POST['email'] + self.request.user.save() + messages.info(self.request, _('Mail address changed.')) + except Exception as e: # pylint: disable=broad-except + messages.error(self.request, _('Error setting new mail address: %s' % e)) + + try: + if request.POST['first_name'] or request.POST['last_name']: + if request.POST['first_name'] != self.request.user.first_name: + self.request.user.first_name = request.POST['first_name'] + messages.info(self.request, _('First name changed.')) + if request.POST['last_name'] != self.request.user.last_name: + self.request.user.last_name = request.POST['last_name'] + messages.info(self.request, _('Last name changed.')) + self.request.user.save() + except Exception as e: # pylint: disable=broad-except + messages.error(self.request, _('Error setting names: %s' % e)) + return HttpResponseRedirect(reverse_lazy('user_preference'))