Browse Source

Fix being unable to add user via admin

RJackson 11 years ago
parent
commit
d1d0e5e78f
2 changed files with 21 additions and 13 deletions
  1. 14 6
      flaskbb/admin/forms.py
  2. 7 7
      flaskbb/admin/views.py

+ 14 - 6
flaskbb/admin/forms.py

@@ -77,9 +77,21 @@ class UserForm(Form):
                                      query_factory=select_primary_group,
                                      query_factory=select_primary_group,
                                      get_label="name")
                                      get_label="name")
 
 
-    secondary_groups = QuerySelectMultipleField(
-        "Secondary Groups", allow_blank=True, get_label="name")
+    secondary_groups = QuerySelectMultipleField("Secondary Groups",
+                                                query_factory=select_primary_group,  # TODO: Template rendering errors "NoneType is not callable" without this, figure out why.
+                                                allow_blank=True,
+                                                get_label="name")
 
 
+    def save(self):
+        user = User(**self.data)
+        return user.save()
+
+
+class AddUserForm(UserForm):
+    pass
+
+
+class EditUserForm(UserForm):
     def __init__(self, user, *args, **kwargs):
     def __init__(self, user, *args, **kwargs):
         self.user = user
         self.user = user
         kwargs['obj'] = self.user
         kwargs['obj'] = self.user
@@ -99,10 +111,6 @@ class UserForm(Form):
         if user:
         if user:
             raise ValidationError("This email is taken")
             raise ValidationError("This email is taken")
 
 
-    def save(self):
-        user = User(**self.data)
-        return user.save()
-
 
 
 class GroupForm(Form):
 class GroupForm(Form):
     name = TextField("Group Name", validators=[
     name = TextField("Group Name", validators=[

+ 7 - 7
flaskbb/admin/views.py

@@ -9,7 +9,7 @@ from flaskbb.decorators import admin_required
 from flaskbb.extensions import db
 from flaskbb.extensions import db
 from flaskbb.user.models import User, Group
 from flaskbb.user.models import User, Group
 from flaskbb.forum.models import Post, Topic, Forum, Category
 from flaskbb.forum.models import Post, Topic, Forum, Category
-from flaskbb.admin.forms import UserForm, AddGroupForm, EditGroupForm, ForumForm, CategoryForm
+from flaskbb.admin.forms import AddUserForm, EditUserForm, AddGroupForm, EditGroupForm, ForumForm, CategoryForm
 
 
 
 
 admin = Blueprint("admin", __name__)
 admin = Blueprint("admin", __name__)
@@ -81,7 +81,7 @@ def edit_user(user_id):
         db.not_(Group.banned == True),
         db.not_(Group.banned == True),
         db.not_(Group.guest == True))
         db.not_(Group.guest == True))
 
 
-    form = UserForm(user)
+    form = EditUserForm(user)
     form.secondary_groups.query = secondary_group_query
     form.secondary_groups.query = secondary_group_query
     if form.validate_on_submit():
     if form.validate_on_submit():
         user.username = form.username.data
         user.username = form.username.data
@@ -131,13 +131,13 @@ def delete_user(user_id):
 @admin.route("/users/add", methods=["GET", "POST"])
 @admin.route("/users/add", methods=["GET", "POST"])
 @admin_required
 @admin_required
 def add_user():
 def add_user():
-    form = UserForm()
+    form = AddUserForm()
     if form.validate_on_submit():
     if form.validate_on_submit():
         form.save()
         form.save()
         flash("User successfully added.", "success")
         flash("User successfully added.", "success")
         return redirect(url_for("admin.users"))
         return redirect(url_for("admin.users"))
 
 
-    return render_template("admin/add_user.html", form=form)
+    return render_template("admin/edit_user.html", form=form)
 
 
 
 
 @admin.route("/groups/<int:group_id>/edit", methods=["GET", "POST"])
 @admin.route("/groups/<int:group_id>/edit", methods=["GET", "POST"])
@@ -187,7 +187,7 @@ def add_group():
         flash("Group successfully added.", "success")
         flash("Group successfully added.", "success")
         return redirect(url_for("admin.users"))
         return redirect(url_for("admin.users"))
 
 
-    return render_template("admin/add_group.html", form=form)
+    return render_template("admin/edit_group.html", form=form)
 
 
 
 
 @admin.route("/forums/<int:forum_id>/edit", methods=["GET", "POST"])
 @admin.route("/forums/<int:forum_id>/edit", methods=["GET", "POST"])
@@ -234,7 +234,7 @@ def add_forum():
         flash("Forum successfully added.", "success")
         flash("Forum successfully added.", "success")
         return redirect(url_for("admin.forums"))
         return redirect(url_for("admin.forums"))
 
 
-    return render_template("admin/add_forum.html", form=form)
+    return render_template("admin/edit_forum.html", form=form)
 
 
 
 
 @admin.route("/categories/<int:category_id>/edit", methods=["GET", "POST"])
 @admin.route("/categories/<int:category_id>/edit", methods=["GET", "POST"])
@@ -275,4 +275,4 @@ def add_category():
         flash("Category successfully added.", "success")
         flash("Category successfully added.", "success")
         return redirect(url_for("admin.categories"))
         return redirect(url_for("admin.categories"))
 
 
-    return render_template("admin/add_category.html", form=form)
+    return render_template("admin/edit_category.html", form=form)