Browse Source

Convert all user views to CBV

Alec Nikolas Reiter 7 years ago
parent
commit
1262f95dcb
1 changed files with 35 additions and 29 deletions
  1. 35 29
      flaskbb/user/views.py

+ 35 - 29
flaskbb/user/views.py

@@ -11,43 +11,19 @@
 """
 from flask import Blueprint, flash, request
 from flask.views import MethodView
-from flask_login import login_required, current_user
 from flask_babelplus import gettext as _
+from flask_login import current_user, login_required
 
+from flaskbb.user.forms import (ChangeEmailForm, ChangePasswordForm,
+                                ChangeUserDetailsForm, GeneralSettingsForm)
+from flaskbb.user.models import User
 from flaskbb.utils.helpers import (get_available_languages,
                                    get_available_themes, register_view,
                                    render_template)
-from flaskbb.user.models import User
-from flaskbb.user.forms import (ChangePasswordForm, ChangeEmailForm,
-                                ChangeUserDetailsForm, GeneralSettingsForm)
-
 
 user = Blueprint("user", __name__)
 
 
-@user.route("/<username>")
-def profile(username):
-    user = User.query.filter_by(username=username).first_or_404()
-
-    return render_template("user/profile.html", user=user)
-
-
-@user.route("/<username>/topics")
-def view_all_topics(username):
-    page = request.args.get("page", 1, type=int)
-    user = User.query.filter_by(username=username).first_or_404()
-    topics = user.all_topics(page, current_user)
-    return render_template("user/all_topics.html", user=user, topics=topics)
-
-
-@user.route("/<username>/posts")
-def view_all_posts(username):
-    page = request.args.get("page", 1, type=int)
-    user = User.query.filter_by(username=username).first_or_404()
-    posts = user.all_posts(page, current_user)
-    return render_template("user/all_posts.html", user=user, posts=posts)
-
-
 class UserSettings(MethodView):
     decorators = [login_required]
     form = GeneralSettingsForm
@@ -134,13 +110,43 @@ class ChangeUserDetails(MethodView):
         return render_template("user/change_user_details.html", form=form)
 
 
+class AllUserTopics(MethodView):
+
+    def get(self, username):
+        page = request.args.get("page", 1, type=int)
+        user = User.query.filter_by(username=username).first_or_404()
+        topics = user.all_topics(page, current_user)
+        return render_template("user/all_topics.html", user=user, topics=topics)
+
+
+class AllUserPosts(MethodView):
+
+    def get(self, username):
+        page = request.args.get("page", 1, type=int)
+        user = User.query.filter_by(username=username).first_or_404()
+        posts = user.all_posts(page, current_user)
+        return render_template("user/all_posts.html", user=user, posts=posts)
+
+
+class UserProfile(MethodView):
+
+    def get(self, username):
+        user = User.query.filter_by(username=username).first_or_404()
+        return render_template("user/profile.html", user=user)
+
+
+register_view(user, routes=['/settings/email'], view_func=ChangeEmail.as_view('change_email'))
 register_view(user, routes=['/settings/general'], view_func=UserSettings.as_view('settings'))
 register_view(
     user, routes=['/settings/password'], view_func=ChangePassword.as_view('change_password')
 )
-register_view(user, routes=['/settings/email'], view_func=ChangeEmail.as_view('change_email'))
 register_view(
     user,
     routes=["/settings/user-details"],
     view_func=ChangeUserDetails.as_view('change_user_details')
 )
+register_view(user, routes=['/<username>/posts'], view_func=AllUserPosts.as_view('view_all_posts'))
+register_view(
+    user, routes=['/<username>/topics'], view_func=AllUserTopics.as_view('view_all_topics')
+)
+register_view(user, routes=['/<username>'], view_func=UserProfile.as_view('profile'))