project/scipycon/user/views.py
changeset 128 d804be977989
parent 119 05a3e98b1fe0
child 138 250e2731039d
equal deleted inserted replaced
127:328b5244aa1c 128:d804be977989
    53     if profile.photo:
    53     if profile.photo:
    54         photo = os.path.join(settings.USER_MEDIA_URL, profile.photo)
    54         photo = os.path.join(settings.USER_MEDIA_URL, profile.photo)
    55     else:
    55     else:
    56         photo = '/img/user-default.png'
    56         photo = '/img/user-default.png'
    57 
    57 
    58     qstring = ""
       
    59 
       
    60     wifi_comment = None
    58     wifi_comment = None
    61     if wifiobj:
    59     if wifiobj:
    62         wifi_form = False
    60         wifi_form = False
    63     else:
    61     else:
    64         if request.method == "POST":
    62         if request.method == "POST":
   103 
   101 
   104             profile.url = form.data.get("url")
   102             profile.url = form.data.get("url")
   105             profile.about = form.data.get("about")
   103             profile.about = form.data.get("about")
   106             profile.save()
   104             profile.save()
   107 
   105 
   108             redirect_to = reverse("scipycon_account")
   106             redirect_to = reverse('scipycon_account',
       
   107                                   kwargs={'scope': scope})
   109             return set_message_cookie(redirect_to,
   108             return set_message_cookie(redirect_to,
   110                     msg = u"Your profile has been changed.")
   109                     msg = u"Your profile has been changed.")
   111 
   110 
   112     else:
   111     else:
   113         form = EditProfileForm(initial={"email" : user.email,
   112         form = EditProfileForm(initial={"email" : user.email,
   117                                         "url" : profile.url,
   116                                         "url" : profile.url,
   118                                         "about" : profile.about,
   117                                         "about" : profile.about,
   119                                         })
   118                                         })
   120 
   119 
   121     return render_to_response(template_name, RequestContext(request, {
   120     return render_to_response(template_name, RequestContext(request, {
   122         "form": form
   121         'params': {'scope': scope},
       
   122         'form': form
   123     }))
   123     }))
   124 
   124 
   125 def login(request, scope, template_name="user/login.html"):
   125 def login(request, scope, template_name="user/login.html"):
   126     """Custom view to login or register/login a user.
   126     """Custom view to login or register/login a user.
   127     Integration of register and login form
   127        Integration of register and login form
   128     It uses Django's standard AuthenticationForm, though.
   128        It uses Django's standard AuthenticationForm, though.
   129     """
   129     """
       
   130 
   130     user = request.user
   131     user = request.user
   131     if user.is_authenticated():
   132     if user.is_authenticated():
   132         redirect_to = reverse("scipycon_account", kwargs={'scope': scope})
   133         redirect_to = reverse("scipycon_account", kwargs={'scope': scope})
   133         return set_message_cookie(redirect_to,
   134         return set_message_cookie(redirect_to,
   134                 msg = u"Redirected to account from login form.")
   135                 msg = u"Redirected to account from login form.")
   142 
   143 
   143         if login_form.is_valid():
   144         if login_form.is_valid():
   144             redirect_to = request.POST.get("next")
   145             redirect_to = request.POST.get("next")
   145             # Light security check -- make sure redirect_to isn't garbage.
   146             # Light security check -- make sure redirect_to isn't garbage.
   146             if not redirect_to or '//' in redirect_to or ' ' in redirect_to:
   147             if not redirect_to or '//' in redirect_to or ' ' in redirect_to:
   147                 redirect_to = reverse("scipycon_account")
   148                 redirect_to = reverse('scipycon_account',
       
   149                                       kwargs={'scope': scope})
   148 
   150 
   149             from django.contrib.auth import login
   151             from django.contrib.auth import login
   150             login(request, login_form.get_user())
   152             login(request, login_form.get_user())
   151 
   153 
   152             return set_message_cookie(redirect_to, msg = u"You have been logged in.")
   154             return set_message_cookie(redirect_to, msg = u"You have been logged in.")
   157 
   159 
   158             user = scipycon_createuser(request, register_form.data, scope)
   160             user = scipycon_createuser(request, register_form.data, scope)
   159 
   161 
   160             redirect_to = request.POST.get("next")
   162             redirect_to = request.POST.get("next")
   161             if not redirect_to or '//' in redirect_to or ' ' in redirect_to:
   163             if not redirect_to or '//' in redirect_to or ' ' in redirect_to:
   162                 redirect_to = reverse("scipycon_account")
   164                 redirect_to = reverse('scipycon_account',
       
   165                                       kwargs={'scope': scope})
   163 
   166 
   164             return set_message_cookie(
   167             return set_message_cookie(
   165                 redirect_to, msg = u"You have been registered and logged in.")
   168                 redirect_to, msg = u"You have been registered and logged in.")
   166 
   169 
   167     # Get next_url
   170     # Get next_url
   168     next_url = request.REQUEST.get("next")
   171     next_url = request.REQUEST.get("next")
   169     if next_url is None:
   172     if next_url is None:
   170         next_url = request.META.get("HTTP_REFERER")
   173         next_url = request.META.get("HTTP_REFERER")
   171     if next_url is None:
   174     if next_url is None:
   172         next_url = reverse("scipycon_account")
   175         next_url = reverse('scipycon_account', kwargs={'scope': scope})
   173     # Get just the path of the url. See django.contrib.auth.views.login for more
   176 
       
   177     # Get just the path of the url.
       
   178     # See django.contrib.auth.views.login for more
   174     next_url = urlparse(next_url)
   179     next_url = urlparse(next_url)
   175     next_url = next_url[2]
   180     next_url = next_url[2]
   176 
   181 
   177     try:
   182     try:
   178         login_form_errors = login_form.errors["__all__"]
   183         login_form_errors = login_form.errors["__all__"]
   191     """Custom method to logout a user.
   196     """Custom method to logout a user.
   192 
   197 
   193     The reason to use a custom logout method is just to provide a login and a
   198     The reason to use a custom logout method is just to provide a login and a
   194     logoutmethod on one place.
   199     logoutmethod on one place.
   195     """
   200     """
       
   201 
   196     from django.contrib.auth import logout
   202     from django.contrib.auth import logout
   197     logout(request)
   203     logout(request)
   198 
   204 
   199     redirect_to = '/'
   205     redirect_to = '/%s' % (scope)
   200     return set_message_cookie(redirect_to, msg = u"You have been logged out.")
   206     return set_message_cookie(redirect_to, msg = u"You have been logged out.")
   201 
   207 
   202 @login_required
   208 @login_required
   203 def password(request, scope, template_name="user/password.html"):
   209 def password(request, scope, template_name='user/password.html'):
   204     """Changes the password of current user.
   210     """Changes the password of current user.
   205     """
   211     """
   206     if request.method == "POST":
   212 
       
   213     if request.method == 'POST':
   207         form = PasswordChangeForm(request.user, request.POST)
   214         form = PasswordChangeForm(request.user, request.POST)
   208         if form.is_valid():
   215         if form.is_valid():
   209             form.save()
   216             form.save()
   210             redirect_to = reverse("scipycon_account")
   217             redirect_to = reverse('scipycon_account', kwargs={'scope': scope})
   211             return set_message_cookie(redirect_to,
   218             return set_message_cookie(redirect_to,
   212                     msg = u"Your password has been changed.")
   219                     msg = u'Your password has been changed.')
   213     else:
   220     else:
   214         form = PasswordChangeForm(request.user)
   221         form = PasswordChangeForm(request.user)
   215 
   222 
   216     return render_to_response(template_name, RequestContext(request, {
   223     return render_to_response(template_name, RequestContext(request, {
   217         'params': {'scope': scope},
   224         'params': {'scope': scope},
   218         'form' : form
   225         'form' : form
   219     }))
   226     }))
   220 
   227 
   221 @login_required
   228 @login_required
   222 def username(request, scope, template_name="user/username.html"):
   229 def username(request, scope, template_name='user/username.html'):
   223     """Saves the username from the data form.
   230     """Saves the username from the data form.
   224     """
   231     """
   225     if request.method == "POST":
   232     if request.method == 'POST':
   226         username_form = UsernameForm(initial={"username" : request.user.username}, data=request.POST)
   233         username_form = UsernameForm(
       
   234             initial={'username' : request.user.username},
       
   235             data=request.POST)
   227         if username_form.is_valid():
   236         if username_form.is_valid():
   228             request.user.username = username_form.cleaned_data.get("username")
   237             request.user.username = username_form.cleaned_data.get("username")
   229             request.user.save()
   238             request.user.save()
   230             redirect_to = reverse("scipycon_account")
   239             redirect_to = reverse('scipycon_account',
       
   240                                   kwargs={'scope': scope})
   231             return set_message_cookie(redirect_to,
   241             return set_message_cookie(redirect_to,
   232                     msg = u"Your username has been changed.")
   242                     msg = u"Your username has been changed.")
   233     else:        
   243     else:        
   234         username_form = UsernameForm(initial={"username" : request.user.username})
   244         username_form = UsernameForm(initial={"username" : request.user.username})
   235 
   245 
   236     return render_to_response(template_name, RequestContext(request, {
   246     return render_to_response(template_name, RequestContext(request, {
   237         "form": username_form
   247         'params': {'scope': scope},
       
   248         'form': username_form
   238     }))
   249     }))
   239 
   250 
   240 
   251 
   241 def get_usernames(request, scope):
   252 def get_usernames(request, scope):
   242     """Returns in json the list of ten possible usernames
   253     """Returns in json the list of ten possible usernames