Просмотр исходного кода

Adding/Removing secondary groups is working now

sh4nks 11 лет назад
Родитель
Сommit
626667e9e6
3 измененных файлов с 26 добавлено и 18 удалено
  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 wtforms import (TextField, TextAreaField, PasswordField, IntegerField,
                      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,
                                            QuerySelectMultipleField)
@@ -34,7 +34,7 @@ def selectable_categories():
 
 
 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):

+ 4 - 3
flaskbb/admin/views.py

@@ -77,7 +77,9 @@ def edit_user(user_id):
     user = User.query.filter_by(id=user_id).first()
 
     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.secondary_groups.query = secondary_group_query
@@ -112,8 +114,7 @@ def edit_user(user_id):
         form.avatar.data = user.avatar
         form.notes.data = user.notes
         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)
 

+ 19 - 12
flaskbb/user/models.py

@@ -31,17 +31,17 @@ class Group(db.Model):
     name = db.Column(db.String, unique=True)
     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):
         db.session.add(self)
@@ -265,8 +265,15 @@ class User(db.Model, UserMixin):
 
     def save(self, groups=None):
         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:
-                self.add_to_group(group)
+                self.groups.append(group)
         db.session.add(self)
         db.session.commit()
         return self