Alec Nikolas Reiter 7 лет назад
Родитель
Сommit
f6e9fc0e32

+ 6 - 0
flaskbb/fixtures/groups.py

@@ -27,6 +27,7 @@ fixture = OrderedDict((
         'postreply': True,
         'mod_edituser': True,
         'mod_banuser': True,
+        'viewhidden': True,
     }),
     ('Super Moderator', {
         'description': 'The Super Moderator Group',
@@ -42,6 +43,7 @@ fixture = OrderedDict((
         'postreply': True,
         'mod_edituser': True,
         'mod_banuser': True,
+        'viewhidden': True,
     }),
     ('Moderator', {
         'description': 'The Moderator Group',
@@ -57,6 +59,7 @@ fixture = OrderedDict((
         'postreply': True,
         'mod_edituser': True,
         'mod_banuser': True,
+        'viewhidden': True
     }),
     ('Member', {
         'description': 'The Member Group',
@@ -72,6 +75,7 @@ fixture = OrderedDict((
         'postreply': True,
         'mod_edituser': False,
         'mod_banuser': False,
+        'viewhidden': False,
     }),
     ('Banned', {
         'description': 'The Banned Group',
@@ -87,6 +91,7 @@ fixture = OrderedDict((
         'postreply': False,
         'mod_edituser': False,
         'mod_banuser': False,
+        'viewhidden': False,
     }),
     ('Guest', {
         'description': 'The Guest Group',
@@ -102,5 +107,6 @@ fixture = OrderedDict((
         'postreply': False,
         'mod_edituser': False,
         'mod_banuser': False,
+        'viewhidden': False
     })
 ))

+ 5 - 0
flaskbb/management/forms.py

@@ -218,6 +218,11 @@ class GroupForm(FlaskForm):
         description=_("Allow moderators to ban other users.")
     )
 
+    viewhidden = BooleanField(
+        _("Can view hidden posts and topics"),
+        description=_("Allows a user to view hidden posts and topics"),
+    )
+
     submit = SubmitField(_("Save"))
 
     def validate_name(self, field):

+ 2 - 0
flaskbb/templates/management/group_form.html

@@ -51,6 +51,8 @@
                         {{ render_boolean_field(form.deletetopic) }}
                         {{ render_boolean_field(form.posttopic) }}
                         {{ render_boolean_field(form.postreply) }}
+                        {{ render_boolean_field(form.viewhidden) }}
+
 
                         {{ render_submit_field(form.submit, div_class="form-group col-sm-5") }}
                     </div>

+ 1 - 0
flaskbb/user/models.py

@@ -56,6 +56,7 @@ class Group(db.Model, CRUDMixin):
     deletetopic = db.Column(db.Boolean, default=False, nullable=False)
     posttopic = db.Column(db.Boolean, default=True, nullable=False)
     postreply = db.Column(db.Boolean, default=True, nullable=False)
+    viewhidden = db.Column(db.Boolean, default=False, nullable=False)
 
     # Methods
     def __repr__(self):

+ 57 - 0
migrations/05da2ac3bd49_add_hidden_fields_and_permission.py

@@ -0,0 +1,57 @@
+"""Add hidden fields and permission
+
+Revision ID: 05da2ac3bd49
+Revises: 331500ad355b
+Create Date: 2017-09-03 21:48:30.850960
+
+"""
+import sqlalchemy as sa
+from alembic import op
+
+# revision identifiers, used by Alembic.
+revision = '05da2ac3bd49'
+down_revision = '331500ad355b'
+branch_labels = ()
+depends_on = None
+
+
+def upgrade():
+    # ### commands auto generated by Alembic - please adjust! ###
+    with op.batch_alter_table('groups', schema=None) as batch_op:
+        batch_op.add_column(
+            sa.Column('viewhidden', sa.Boolean(), nullable=True)
+        )
+
+    with op.batch_alter_table('groups', schema=None) as batch_op:
+        groups = sa.sql.table(
+            'groups',
+            sa.sql.column('viewhidden'),
+            sa.sql.column('admin'), sa.sql.column('super_mod'), sa.sql.column('mod')
+        )
+        batch_op.execute(
+            groups.update().where(
+                sa.or_(
+                    groups.c.admin == True,
+                    groups.c.mod == True,
+                    groups.c.super_mod == True
+                )
+            ).values(viewhidden=True)
+        )
+        batch_op.execute(
+            groups.update().where(sa.and_(
+                groups.c.admin != True,
+                groups.c.mod != True,
+                groups.c.super_mod != True
+            )).values(viewhidden=False)
+        )
+
+        batch_op.alter_column('viewhidden', existing_type=sa.Boolean(), nullable=False)
+    # ### end Alembic commands ###
+
+
+def downgrade():
+    # ### commands auto generated by Alembic - please adjust! ###
+    with op.batch_alter_table('groups', schema=None) as batch_op:
+        batch_op.drop_column('viewhidden')
+
+    # ### end Alembic commands ###