From 2de085a9374fd6eef17b334f0ff10f95bd1ea549 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: Mar 18 2019 09:59:32 +0000 Subject: Add a DB field to store users to block on a project Signed-off-by: Pierre-Yves Chibon --- diff --git a/alembic/versions/1a510f2216c0_add_the__block_users_field.py b/alembic/versions/1a510f2216c0_add_the__block_users_field.py new file mode 100644 index 0000000..9a46c0e --- /dev/null +++ b/alembic/versions/1a510f2216c0_add_the__block_users_field.py @@ -0,0 +1,30 @@ +"""Add the _block_users field + +Revision ID: 1a510f2216c0 +Revises: 003fcd9e8860 +Create Date: 2019-03-14 12:24:32.139377 + +""" + +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = '1a510f2216c0' +down_revision = '003fcd9e8860' + + +def upgrade(): + ''' Add the column _block_users to the table projects. + ''' + op.add_column( + 'projects', + sa.Column('_block_users', sa.Text, nullable=True) + ) + + +def downgrade(): + ''' Drop the column _block_users from the table projects. + ''' + op.drop_column('projects', '_block_users') diff --git a/pagure/lib/model.py b/pagure/lib/model.py index 97de6d5..19bc5f9 100644 --- a/pagure/lib/model.py +++ b/pagure/lib/model.py @@ -377,6 +377,7 @@ class Project(BASE): _reports = sa.Column(sa.Text, nullable=True) _notifications = sa.Column(sa.Text, nullable=True) _close_status = sa.Column(sa.Text, nullable=True) + _block_users = sa.Column(sa.Text, nullable=True) mirrored_from = sa.Column(sa.Text, nullable=True) mirrored_from_last_log = sa.Column(sa.Text, nullable=True) @@ -721,6 +722,23 @@ class Project(BASE): self._priorities = json.dumps(priorities) @property + def block_users(self): + """ Return the dict stored as string in the database as an actual + dict object. + """ + block_users = [] + + if self._block_users: + block_users = json.loads(self._block_users) + + return block_users + + @block_users.setter + def block_users(self, block_users): + """ Ensures the block_users are properly saved. """ + self._block_users = json.dumps(block_users) + + @property def quick_replies(self): """ Return a list of quick replies available for pull requests and issues.