]> git.lizzy.rs Git - cheatdb.git/blobdiff - app/views/users.py
Add topics todo list based on forum parser
[cheatdb.git] / app / views / users.py
index 94fc30b163fb6d0752ba9ae6be86b9480cad904c..86219f9964a7870108a1edeb98914482191d8633 100644 (file)
@@ -29,8 +29,6 @@ from app.utils import rank_required, randomString, loginUser
 from app.tasks.forumtasks import checkForumAccount
 from app.tasks.emails import sendVerifyEmail
 from app.tasks.phpbbparser import getProfile
-from werkzeug.contrib.cache import SimpleCache
-cache = SimpleCache()
 
 # Define the User profile form
 class UserProfileForm(FlaskForm):
@@ -52,10 +50,6 @@ def user_profile_page(username):
        if not user:
                abort(404)
 
-       packages = user.packages.filter_by(soft_deleted=False)
-       if not current_user.is_authenticated or (user != current_user and not current_user.canAccessTodoList()):
-               packages = packages.filter_by(approved=True)
-
        form = None
        if user.checkPerm(current_user, Permission.CHANGE_DNAME) or \
                        user.checkPerm(current_user, Permission.CHANGE_EMAIL) or \
@@ -97,9 +91,21 @@ def user_profile_page(username):
                        # Redirect to home page
                        return redirect(url_for("user_profile_page", username=username))
 
+       packages = user.packages.filter_by(soft_deleted=False)
+       if not current_user.is_authenticated or (user != current_user and not current_user.canAccessTodoList()):
+               packages = packages.filter_by(approved=True)
+       packages = packages.order_by(db.asc(Package.title))
+
+       topics_to_add = None
+       if current_user == user or user.checkPerm(current_user, Permission.CHANGE_AUTHOR):
+               topics_to_add = KrockForumTopic.query \
+                                       .filter_by(author_id=user.id) \
+                                       .filter(~ db.exists().where(Package.forums==KrockForumTopic.topic_id)) \
+                                       .all()
+
        # Process GET or invalid POST
        return render_template("users/user_profile_page.html",
-                       user=user, form=form, packages=packages)
+                       user=user, form=form, packages=packages, topics_to_add=topics_to_add)
 
 class SetPasswordForm(FlaskForm):
        email = StringField("Email (Optional)", [Optional(), Email()])
@@ -176,10 +182,12 @@ def user_claim_page():
                if user is not None and method == "github":
                        return redirect(url_for("github_signin_page"))
 
-       token = cache.get("forum_claim_key_" + request.remote_addr)
-       if token is None:
+       token = None
+       if "forum_token" in session:
+               token = session["forum_token"]
+       else:
                token = randomString(32)
-               cache.set("forum_claim_key_" + request.remote_addr, token, 5*60)
+               session["forum_token"] = token
 
        if request.method == "POST":
                ctype   = request.form.get("claim_type")