Browse Source

Add make hidden permission

Alec Nikolas Reiter 7 years ago
parent
commit
405f743018

+ 8 - 2
flaskbb/fixtures/groups.py

@@ -28,6 +28,7 @@ fixture = OrderedDict((
         'mod_edituser': True,
         'mod_banuser': True,
         'viewhidden': True,
+        'makehidden': True,
     }),
     ('Super Moderator', {
         'description': 'The Super Moderator Group',
@@ -44,6 +45,7 @@ fixture = OrderedDict((
         'mod_edituser': True,
         'mod_banuser': True,
         'viewhidden': True,
+        'makehidden': True,
     }),
     ('Moderator', {
         'description': 'The Moderator Group',
@@ -59,7 +61,8 @@ fixture = OrderedDict((
         'postreply': True,
         'mod_edituser': True,
         'mod_banuser': True,
-        'viewhidden': True
+        'viewhidden': True,
+        'makehidden': False,
     }),
     ('Member', {
         'description': 'The Member Group',
@@ -76,6 +79,7 @@ fixture = OrderedDict((
         'mod_edituser': False,
         'mod_banuser': False,
         'viewhidden': False,
+        'makehidden': False,
     }),
     ('Banned', {
         'description': 'The Banned Group',
@@ -92,6 +96,7 @@ fixture = OrderedDict((
         'mod_edituser': False,
         'mod_banuser': False,
         'viewhidden': False,
+        'makehidden': False,
     }),
     ('Guest', {
         'description': 'The Guest Group',
@@ -107,6 +112,7 @@ fixture = OrderedDict((
         'postreply': False,
         'mod_edituser': False,
         'mod_banuser': False,
-        'viewhidden': False
+        'viewhidden': False,
+        'makehidden': False
     })
 ))

+ 6 - 0
flaskbb/management/forms.py

@@ -223,6 +223,12 @@ class GroupForm(FlaskForm):
         description=_("Allows a user to view hidden posts and topics"),
     )
 
+    makehidden = BooleanField(
+        _("Can hide posts and topics"),
+        description=_("Allows a user to hide posts and topics"),
+    )
+
+
     submit = SubmitField(_("Save"))
 
     def validate_name(self, field):

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

@@ -51,6 +51,7 @@
                         {{ render_boolean_field(form.deletetopic) }}
                         {{ render_boolean_field(form.posttopic) }}
                         {{ render_boolean_field(form.postreply) }}
+                        {{ render_boolean_field(form.makehidden) }}
                         {{ render_boolean_field(form.viewhidden) }}
 
 

+ 1 - 0
flaskbb/user/models.py

@@ -57,6 +57,7 @@ class Group(db.Model, CRUDMixin):
     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)
+    makehidden = db.Column(db.Boolean, default=False, nullable=False)
 
     # Methods
     def __repr__(self):

+ 59 - 0
migrations/63eabbb0e837_add_makehidden_permission.py

@@ -0,0 +1,59 @@
+"""Add makehidden permission
+
+Revision ID: 63eabbb0e837
+Revises: 05da2ac3bd49
+Create Date: 2017-09-03 23:43:54.316625
+
+"""
+from alembic import op
+import sqlalchemy as sa
+
+
+# revision identifiers, used by Alembic.
+revision = '63eabbb0e837'
+down_revision = '05da2ac3bd49'
+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('makehidden', sa.Boolean(), nullable=True)
+        )
+
+    with op.batch_alter_table('groups', schema=None) as batch_op:
+        groups = sa.sql.table(
+            'groups',
+            sa.sql.column('makehidden'),
+            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(makehidden=True)
+        )
+        batch_op.execute(
+            groups.update().where(sa.and_(
+                groups.c.admin != True,
+                groups.c.mod != True,
+                groups.c.super_mod != True
+            )).values(makehidden=False)
+        )
+
+        batch_op.alter_column('makehidden', 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('makehidden')
+
+    # ### end Alembic commands ###