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. try: user_profile = request.user.get_profile() except ObjectDoesNotExist: 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"] user_profile.timezone = form.cleaned_data["timezone"] request.user.save() user_profile.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, "timezone": get_current_timezone(), }) # Favorites try: favorites = Favorite.objects.filter(user=request.user) except Favorite.DoesNotExist: favorites = [] for fav in favorites: thread = store.get_thread(fav.list_address, fav.threadid) fav.thread = thread if thread is None: fav.delete() # thread has gone away? favorites = [f for f in favorites if f.thread is not None] # Flash messages flash_messages = [] flash_msg = request.GET.get("msg") if flash_msg: flash_msg = { "type": FLASH_MESSAGES[flash_msg][0], "msg": FLASH_MESSAGES[flash_msg][1] } flash_messages.append(flash_msg) context = { 'user_profile': user_profile, 'form': form, 'favorites': favorites, 'flash_messages': flash_messages, } return render(request, "user_profile.html", context)
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. try: user_profile = request.user.get_profile() except ObjectDoesNotExist: 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"] user_profile.timezone = form.cleaned_data["timezone"] request.user.save() user_profile.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, "timezone": get_current_timezone(), }) # Favorites try: favorites = Favorite.objects.filter(user=request.user) except Favorite.DoesNotExist: favorites = [] for fav in favorites: thread = store.get_thread(fav.list_address, fav.threadid) fav.thread = thread if thread is None: fav.delete() # thread has gone away? favorites = [ f for f in favorites if f.thread is not None ] # Flash messages flash_messages = [] flash_msg = request.GET.get("msg") if flash_msg: flash_msg = { "type": FLASH_MESSAGES[flash_msg][0], "msg": FLASH_MESSAGES[flash_msg][1] } flash_messages.append(flash_msg) context = { 'user_profile' : user_profile, 'form': form, 'favorites': favorites, 'flash_messages': flash_messages, } return render(request, "user_profile.html", context)
def user_profile(request): if not request.user.is_authenticated(): return redirect('user_login') store = get_store(request) # try to render the user profile. try: user_profile = request.user.get_profile() except ObjectDoesNotExist: user_profile = UserProfile.objects.create(user=request.user) # get the Mailman user try: mm_client = mailmanclient.Client('%s/3.0' % settings.MAILMAN_REST_SERVER, settings.MAILMAN_API_USER, settings.MAILMAN_API_PASS) mm_user = mm_client.get_user(request.user.email) except (HTTPError, mailmanclient.MailmanConnectionError): mm_client = mm_user = None 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"] user_profile.timezone = form.cleaned_data["timezone"] request.user.save() user_profile.save() # Now update the display name in Mailman if mm_user is not None: mm_user.display_name = "%s %s" % ( request.user.first_name, request.user.last_name) mm_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, "timezone": get_current_timezone(), }) # Favorites try: favorites = Favorite.objects.filter(user=request.user) except Favorite.DoesNotExist: favorites = [] for fav in favorites: thread = store.get_thread(fav.list_address, fav.threadid) fav.thread = thread if thread is None: fav.delete() # thread has gone away? favorites = [ f for f in favorites if f.thread is not None ] # Emails emails = [] if mm_user is not None: for addr in mm_user.addresses: addr = unicode(addr) if addr != request.user.email: emails.append(addr) # Flash messages flash_messages = [] flash_msg = request.GET.get("msg") if flash_msg: flash_msg = { "type": FLASH_MESSAGES[flash_msg][0], "msg": FLASH_MESSAGES[flash_msg][1] } flash_messages.append(flash_msg) # Extract the gravatar_url used by django_gravatar2. The site # administrator could alternatively set this to http://cdn.libravatar.org/ gravatar_url = getattr(settings, 'GRAVATAR_URL', 'http://www.gravatar.com') gravatar_shortname = '.'.join(gravatar_url.split('.')[-2:]).strip('/') context = { 'user_profile' : user_profile, 'form': form, 'emails': emails, 'favorites': favorites, 'flash_messages': flash_messages, 'gravatar_url': gravatar_url, 'gravatar_shortname': gravatar_shortname, } return render(request, "user_profile.html", context)
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. try: user_profile = request.user.get_profile() # @TODO: Include the error name e.g, ProfileDoesNotExist? 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) except Rating.DoesNotExist: votes = [] votes_up = [] votes_down = [] for vote in votes: message = store.get_message_by_hash_from_list( vote.list_address, vote.messageid) vote_data = {"list_address": vote.list_address, "messageid": vote.messageid, "message": message, } if vote.vote == 1: votes_up.append(vote_data) elif vote.vote == -1: votes_down.append(vote_data) # Favorites try: favorites = Favorite.objects.filter(user=request.user) except Favorite.DoesNotExist: favorites = [] for fav in favorites: 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)
def user_profile(request): if not request.user.is_authenticated(): return redirect('hk_user_login') try: profile = Profile.objects.get(user=request.user) except Profile.DoesNotExist: # Create the profile if it does not exist. There's a signal receiver # that creates it for new users, but HyperKitty may be added to an # existing Django project with existing users. profile = Profile.objects.create(user=request.user) mm_user = profile.get_mailman_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"] profile.timezone = form.cleaned_data["timezone"] request.user.save() profile.save() # Now update the display name in Mailman if mm_user is not None: mm_user.display_name = "%s %s" % ( request.user.first_name, request.user.last_name) mm_user.save() redirect_url = reverse('hk_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, "timezone": get_current_timezone(), }) # Favorites favorites = Favorite.objects.filter(user=request.user) # Emails other_addresses = profile.addresses[:] other_addresses.remove(request.user.email) # Flash messages flash_messages = [] flash_msg = request.GET.get("msg") if flash_msg: flash_msg = { "type": FLASH_MESSAGES[flash_msg][0], "msg": FLASH_MESSAGES[flash_msg][1] } flash_messages.append(flash_msg) # Extract the gravatar_url used by django_gravatar2. The site # administrator could alternatively set this to http://cdn.libravatar.org/ gravatar_url = getattr(settings, 'GRAVATAR_URL', 'http://www.gravatar.com') gravatar_shortname = '.'.join(gravatar_url.split('.')[-2:]).strip('/') context = { 'user_profile' : profile, 'form': form, 'other_addresses': other_addresses, 'favorites': favorites, 'flash_messages': flash_messages, 'gravatar_url': gravatar_url, 'gravatar_shortname': gravatar_shortname, } return render(request, "hyperkitty/user_profile.html", context)
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. try: user_profile = request.user.get_profile() # @TODO: Include the error name e.g, ProfileDoesNotExist? 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) except Rating.DoesNotExist: votes = [] votes_up = [] votes_down = [] for vote in votes: message = store.get_message_by_hash_from_list(vote.list_address, vote.messageid) vote_data = { "list_address": vote.list_address, "messageid": vote.messageid, "message": message, } if vote.vote == 1: votes_up.append(vote_data) elif vote.vote == -1: votes_down.append(vote_data) # Favorites try: favorites = Favorite.objects.filter(user=request.user) except Favorite.DoesNotExist: favorites = [] for fav in favorites: 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": FLASH_MESSAGES[flash_msg][0], "msg": FLASH_MESSAGES[flash_msg][1] } 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)
def user_profile(request): try: profile = Profile.objects.get(user=request.user) except Profile.DoesNotExist: # Create the profile if it does not exist. There's a signal receiver # that creates it for new users, but HyperKitty may be added to an # existing Django project with existing users. profile = Profile.objects.create(user=request.user) mm_user = profile.get_mailman_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"] profile.timezone = form.cleaned_data["timezone"] request.user.save() profile.save() # Now update the display name in Mailman if mm_user is not None: mm_user.display_name = "%s %s" % (request.user.first_name, request.user.last_name) mm_user.save() redirect_url = reverse('hk_user_profile') redirect_url += "?msg=updated-ok" # TODO: Cookie-based flash msg return redirect(redirect_url) else: form = UserProfileForm( initial={ "first_name": request.user.first_name, "last_name": request.user.last_name, "timezone": get_current_timezone(), }) # Favorites favorites = Favorite.objects.filter(user=request.user) # Emails other_addresses = profile.addresses[:] other_addresses.remove(request.user.email) # Flash messages flash_messages = [] flash_msg = request.GET.get("msg") if flash_msg: flash_msg = { "type": FLASH_MESSAGES[flash_msg][0], "msg": FLASH_MESSAGES[flash_msg][1] } flash_messages.append(flash_msg) # Extract the gravatar_url used by django_gravatar2. The site # administrator could alternatively set this to http://cdn.libravatar.org/ gravatar_url = getattr(settings, 'GRAVATAR_URL', 'http://www.gravatar.com') gravatar_shortname = '.'.join(gravatar_url.split('.')[-2:]).strip('/') context = { 'user_profile': profile, 'form': form, 'other_addresses': other_addresses, 'favorites': favorites, 'flash_messages': flash_messages, 'gravatar_url': gravatar_url, 'gravatar_shortname': gravatar_shortname, } return render(request, "hyperkitty/user_profile.html", context)