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

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 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