Browse Source

Adding/Removing secondary groups is working now

sh4nks 11 years ago
parent
commit
626667e9e6
3 changed files with 26 additions and 18 deletions
  1. 3 3
      flaskbb/admin/forms.py
  2. 4 3
      flaskbb/admin/views.py
  3. 19 12
      flaskbb/user/models.py

+ 3 - 3
flaskbb/admin/forms.py

@@ -13,8 +13,8 @@ from datetime import datetime
 from flask.ext.wtf import Form
 from flask.ext.wtf import Form
 from wtforms import (TextField, TextAreaField, PasswordField, IntegerField,
 from wtforms import (TextField, TextAreaField, PasswordField, IntegerField,
                      BooleanField, SelectField, DateField)
                      BooleanField, SelectField, DateField)
-from wtforms.validators import (Required, Optional, Email, EqualTo, regexp,
-                                ValidationError, URL, Length)
+from wtforms.validators import (Required, Optional, Email, regexp, Length, URL,
+                                ValidationError)
 
 
 from wtforms.ext.sqlalchemy.fields import (QuerySelectField,
 from wtforms.ext.sqlalchemy.fields import (QuerySelectField,
                                            QuerySelectMultipleField)
                                            QuerySelectMultipleField)
@@ -34,7 +34,7 @@ def selectable_categories():
 
 
 
 
 def select_primary_group():
 def select_primary_group():
-    return Group.query.order_by(Group.id)
+    return Group.query.filter(Group.guest == False).order_by(Group.id)
 
 
 
 
 class UserForm(Form):
 class UserForm(Form):

+ 4 - 3
flaskbb/admin/views.py

@@ -77,7 +77,9 @@ def edit_user(user_id):
     user = User.query.filter_by(id=user_id).first()
     user = User.query.filter_by(id=user_id).first()
 
 
     secondary_group_query = Group.query.filter(
     secondary_group_query = Group.query.filter(
-        db.not_(Group.id == user.primary_group_id))
+        db.not_(Group.id == user.primary_group_id),
+        db.not_(Group.banned == True),
+        db.not_(Group.guest == True))
 
 
     form = UserForm(user)
     form = UserForm(user)
     form.secondary_groups.query = secondary_group_query
     form.secondary_groups.query = secondary_group_query
@@ -112,8 +114,7 @@ def edit_user(user_id):
         form.avatar.data = user.avatar
         form.avatar.data = user.avatar
         form.notes.data = user.notes
         form.notes.data = user.notes
         form.primary_group.data = user.primary_group
         form.primary_group.data = user.primary_group
-        if
-        form.secondary_groups.query = secondary_group_query
+        form.secondary_groups.data = user.groups
 
 
     return render_template("admin/edit_user.html", form=form)
     return render_template("admin/edit_user.html", form=form)
 
 

+ 19 - 12
flaskbb/user/models.py

@@ -31,17 +31,17 @@ class Group(db.Model):
     name = db.Column(db.String, unique=True)
     name = db.Column(db.String, unique=True)
     description = db.Column(db.String(80))
     description = db.Column(db.String(80))
 
 
-    admin = db.Column(db.Boolean)
-    super_mod = db.Column(db.Boolean)
-    mod = db.Column(db.Boolean)
-    guest = db.Column(db.Boolean)
-    banned = db.Column(db.Boolean)
-
-    editpost = db.Column(db.Boolean)
-    deletepost = db.Column(db.Boolean)
-    deletetopic = db.Column(db.Boolean)
-    posttopic = db.Column(db.Boolean)
-    postreply = db.Column(db.Boolean)
+    admin = db.Column(db.Boolean, default=False)
+    super_mod = db.Column(db.Boolean, default=False)
+    mod = db.Column(db.Boolean, default=False)
+    guest = db.Column(db.Boolean, default=False)
+    banned = db.Column(db.Boolean, default=False)
+
+    editpost = db.Column(db.Boolean, default=True)
+    deletepost = db.Column(db.Boolean, default=False)
+    deletetopic = db.Column(db.Boolean, default=False)
+    posttopic = db.Column(db.Boolean, default=True)
+    postreply = db.Column(db.Boolean, default=True)
 
 
     def save(self):
     def save(self):
         db.session.add(self)
         db.session.add(self)
@@ -265,8 +265,15 @@ class User(db.Model, UserMixin):
 
 
     def save(self, groups=None):
     def save(self, groups=None):
         if groups:
         if groups:
+            # TODO: Only remove/add groups that are selected
+            all_groups = self.groups.all()
+            if all_groups:
+                for group in all_groups:
+                    self.groups.remove(group)
+                db.session.commit()
+
             for group in groups:
             for group in groups:
-                self.add_to_group(group)
+                self.groups.append(group)
         db.session.add(self)
         db.session.add(self)
         db.session.commit()
         db.session.commit()
         return self
         return self