No reason for 'verification_successful = bool' here.
[mediagoblin.git] / mediagoblin / auth / views.py
index 22fdd46bbcbaf5b5f69142197051d90db281760b..948db188262d9cf8835dd330e2af2ff9ab6fa002 100644 (file)
 # You should have received a copy of the GNU Affero General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+import uuid
+
 from webob import Response, exc
 
+from mediagoblin.db.util import ObjectId
 from mediagoblin.auth import lib as auth_lib
 from mediagoblin.auth import forms as auth_forms
 from mediagoblin.util import send_email
@@ -140,6 +143,7 @@ def logout(request):
     return exc.HTTPFound(
         location=request.urlgen("index"))
 
+
 def verify_email(request):
     """
     Email verification view
@@ -147,13 +151,14 @@ def verify_email(request):
     validates GET parameters against database and unlocks the user account, if
     you are lucky :)
     """
-    import bson.objectid
-    user = request.db.User.find_one(
-        {'_id': bson.objectid.ObjectId(unicode(request.GET.get('userid')))})
+    # If we don't have userid and token parameters, we can't do anything; 404
+    if not request.GET.has_key('userid') or not request.GET.has_key('token'):
+        return exc.HTTPNotFound()
 
-    verification_successful = bool
+    user = request.db.User.find_one(
+        {'_id': ObjectId(unicode(request.GET['userid']))})
 
-    if user and user['verification_key'] == unicode(request.GET.get('token')):
+    if user and user['verification_key'] == unicode(request.GET['token']):
         user['status'] = u'active'
         user['email_verified'] = True
         verification_successful = True
@@ -183,14 +188,15 @@ def verify_email_notice(request):
         template.render(
             {'request': request}))
 
+
 def resend_activation(request):
     """
     The reactivation view
 
     Resend the activation email.
     """
-
-    request.user.generate_new_verification_key()
+    request.user['verification_key'] = unicode(uuid.uuid4())
+    request.user.save()
 
     # Copied shamelessly from the register view above.
 
@@ -215,12 +221,13 @@ def resend_activation(request):
                 userid=unicode(request.user['_id']),
                 verification_key=request.user['verification_key'])))
 
+    return exc.HTTPFound(
+        location=request.urlgen('mediagoblin.auth.resend_verification_success'))
 
-    # TODO: For now, we use the successful registration page until we get a 
-    # proper messaging system.
 
+def resend_activation_success(request):
     template = request.template_env.get_template(
-        'mediagoblin/auth/register_success.html')
-    return exc.HTTPFound(
-        location=request.urlgen('mediagoblin.auth.register_success'))
-
+        'mediagoblin/auth/resent_verification_email.html')
+    return Response(
+        template.render(
+            {'request': request}))