diff options
Diffstat (limited to 'hyperkitty/views')
-rw-r--r-- | hyperkitty/views/accounts.py | 30 | ||||
-rw-r--r-- | hyperkitty/views/forms.py | 6 | ||||
-rw-r--r-- | hyperkitty/views/list.py | 6 |
3 files changed, 39 insertions, 3 deletions
diff --git a/hyperkitty/views/accounts.py b/hyperkitty/views/accounts.py index d35641b..8e5dc03 100644 --- a/hyperkitty/views/accounts.py +++ b/hyperkitty/views/accounts.py @@ -32,18 +32,23 @@ from django.utils.http import is_safe_url from django.utils.translation import gettext as _ from hyperkitty.models import UserProfile, Rating, Favorite -from hyperkitty.views.forms import RegistrationForm +from hyperkitty.views.forms import RegistrationForm, UserProfileForm from hyperkitty.lib import get_store logger = logging.getLogger(__name__) +FLASH_MESSAGES = { + "updated-ok": "The profile was successfully updated.", +} + @login_required def user_profile(request, user_email=None): if not request.user.is_authenticated(): return redirect('user_login') + store = get_store(request) # try to render the user profile. @@ -53,6 +58,21 @@ def user_profile(request, user_email=None): except: user_profile = UserProfile.objects.create(user=request.user) + if request.method == 'POST': + form = UserProfileForm(request.POST) + if form.is_valid(): + request.user.first_name = form.cleaned_data["first_name"] + request.user.last_name = form.cleaned_data["last_name"] + request.user.save() + redirect_url = reverse('user_profile') + redirect_url += "?msg=updated-ok" + return redirect(redirect_url) + else: + form = UserProfileForm(initial={ + "first_name": request.user.first_name, + "last_name": request.user.last_name, + }) + # Votes try: votes = Rating.objects.filter(user=request.user) @@ -81,11 +101,19 @@ def user_profile(request, user_email=None): thread = store.get_thread(fav.list_address, fav.threadid) fav.thread = thread + flash_messages = [] + flash_msg = request.GET.get("msg") + if flash_msg: + flash_msg = { "type": "success", "msg": FLASH_MESSAGES[flash_msg] } + flash_messages.append(flash_msg) + context = { 'user_profile' : user_profile, + 'form': form, 'votes_up': votes_up, 'votes_down': votes_down, 'favorites': favorites, + 'flash_messages': flash_messages, } return render(request, "user_profile.html", context) diff --git a/hyperkitty/views/forms.py b/hyperkitty/views/forms.py index c19ace4..8cd3abd 100644 --- a/hyperkitty/views/forms.py +++ b/hyperkitty/views/forms.py @@ -58,6 +58,12 @@ class RegistrationForm(forms.Form): +class UserProfileForm(forms.Form): + first_name = forms.CharField() + last_name = forms.CharField() + + + class TextInputWithButton(forms.TextInput): """ Render a text field and a button following the Twitter Bootstrap diff --git a/hyperkitty/views/list.py b/hyperkitty/views/list.py index 26d27ed..a9e5071 100644 --- a/hyperkitty/views/list.py +++ b/hyperkitty/views/list.py @@ -141,9 +141,11 @@ def _thread_list(request, mlist, threads, template_name='thread_list.html', extr # If page is out of range (e.g. 9999), deliver last page of results. threads = paginator.page(paginator.num_pages) + flash_messages = [] flash_msg = request.GET.get("msg") if flash_msg: - flash_msg = FLASH_MESSAGES[flash_msg] + flash_msg = { "type": "success", "msg": FLASH_MESSAGES[flash_msg] } + flash_messages.append(flash_msg) context = { 'mlist' : mlist, @@ -152,7 +154,7 @@ def _thread_list(request, mlist, threads, template_name='thread_list.html', extr 'threads': threads, 'participants': len(participants), 'months_list': get_months(store, mlist.name), - 'flash_msg': flash_msg, + 'flash_messages': flash_messages, } context.update(extra_context) return render(request, template_name, context) |