[copr] bkabrda-workspace: Transfer permissions to enums (1776cca)
bkabrda at fedoraproject.org
bkabrda at fedoraproject.org
Mon Nov 26 08:50:52 UTC 2012
Repository : http://git.fedorahosted.org/cgit/copr.git
On branch : bkabrda-workspace
>---------------------------------------------------------------
commit 1776ccac4cece215a9307aa478e76a8c210ec945
Author: Bohuslav Kabrda <bkabrda at redhat.com>
Date: Mon Nov 26 09:50:26 2012 +0100
Transfer permissions to enums
>---------------------------------------------------------------
...b_setup.py => 595a31c145fb_initial_db_setup.py} | 26 ++++++++++----------
wsgi/coprs/helpers.py | 13 ++++++++++
wsgi/coprs/models.py | 15 ++++++++++-
3 files changed, 39 insertions(+), 15 deletions(-)
diff --git a/wsgi/alembic/versions/2728f7ddff7d_initial_db_setup.py b/wsgi/alembic/versions/595a31c145fb_initial_db_setup.py
similarity index 92%
rename from wsgi/alembic/versions/2728f7ddff7d_initial_db_setup.py
rename to wsgi/alembic/versions/595a31c145fb_initial_db_setup.py
index f8f8844..ee0ad30 100644
--- a/wsgi/alembic/versions/2728f7ddff7d_initial_db_setup.py
+++ b/wsgi/alembic/versions/595a31c145fb_initial_db_setup.py
@@ -1,13 +1,13 @@
"""Initial DB setup
-Revision ID: 2728f7ddff7d
+Revision ID: 595a31c145fb
Revises: None
-Create Date: 2012-11-26 08:14:58.017240
+Create Date: 2012-11-26 09:39:51.229910
"""
# revision identifiers, used by Alembic.
-revision = '2728f7ddff7d'
+revision = '595a31c145fb'
down_revision = None
from alembic import op
@@ -35,15 +35,6 @@ def upgrade():
sa.ForeignKeyConstraint(['owner_id'], ['user.id'], ),
sa.PrimaryKeyConstraint('id')
)
- op.create_table('copr_permission',
- sa.Column('copr_builder', sa.Boolean(), nullable=True),
- sa.Column('copr_admin', sa.Boolean(), nullable=True),
- sa.Column('user_id', sa.Integer(), nullable=False),
- sa.Column('copr_id', sa.Integer(), nullable=False),
- sa.ForeignKeyConstraint(['copr_id'], ['copr.id'], ),
- sa.ForeignKeyConstraint(['user_id'], ['user.id'], ),
- sa.PrimaryKeyConstraint('user_id', 'copr_id')
- )
op.create_table('build',
sa.Column('id', sa.Integer(), nullable=False),
sa.Column('pkgs', sa.Text(), nullable=True),
@@ -63,13 +54,22 @@ def upgrade():
sa.ForeignKeyConstraint(['user_id'], ['user.id'], ),
sa.PrimaryKeyConstraint('id')
)
+ op.create_table('copr_permission',
+ sa.Column('copr_builder', sa.SmallInteger(), nullable=True),
+ sa.Column('copr_admin', sa.SmallInteger(), nullable=True),
+ sa.Column('user_id', sa.Integer(), nullable=False),
+ sa.Column('copr_id', sa.Integer(), nullable=False),
+ sa.ForeignKeyConstraint(['copr_id'], ['copr.id'], ),
+ sa.ForeignKeyConstraint(['user_id'], ['user.id'], ),
+ sa.PrimaryKeyConstraint('user_id', 'copr_id')
+ )
### end Alembic commands ###
def downgrade():
### commands auto generated by Alembic - please adjust! ###
- op.drop_table('build')
op.drop_table('copr_permission')
+ op.drop_table('build')
op.drop_table('copr')
op.drop_table('user')
### end Alembic commands ###
diff --git a/wsgi/coprs/helpers.py b/wsgi/coprs/helpers.py
index c8498e9..c1fbe7a 100644
--- a/wsgi/coprs/helpers.py
+++ b/wsgi/coprs/helpers.py
@@ -8,6 +8,19 @@ def chroots():
return ['{0}-{1}'.format(rel, arch) for rel, arches in constants.CHROOTS.items()
for arch in arches]
+class PermissionEnum(object):
+ vals = {'No Permission': 0, 'Asked': 1, 'Approved': 2}
+
+ @classmethod
+ def num(cls, key):
+ return vals.get(key, None)
+
+ @classmethod
+ def key(cls, num):
+ for k, n in cls.vals:
+ if n == num:
+ return k
+ return None
class Paginator(object):
def __init__(self, query, total_count, page = 1, per_page_override = None, urls_count_override = None):
diff --git a/wsgi/coprs/models.py b/wsgi/coprs/models.py
index 8c094f9..8e12799 100644
--- a/wsgi/coprs/models.py
+++ b/wsgi/coprs/models.py
@@ -75,6 +75,15 @@ class User(db.Model, Serializer):
return can_build
+ def can_edit(self, copr):
+ can_edit = False
+ if copr.owner == self:
+ can_edit = True
+ if self.permissions_for_copr(copr) and self.permissions_for_copr.copr_admin == True:
+ can_edit = True
+
+ return can_edit
+
@classmethod
def openidize_name(cls, name):
return 'http://{0}.id.fedoraproject.org/'.format(name)
@@ -117,8 +126,10 @@ class Copr(db.Model, Serializer):
__mapper_args__ = {'order_by': id.desc()}
class CoprPermission(db.Model, Serializer):
- copr_builder = db.Column(db.Boolean, default = False)
- copr_admin = db.Column(db.Boolean, default = False)
+ # 0 = nothing, 1 = asked for, 2 = approved
+ # not using enum, as that translates to varchar on some DBs
+ copr_builder = db.Column(db.SmallInteger, default = 0)
+ copr_admin = db.Column(db.SmallInteger, default = 0)
# relations
user_id = db.Column(db.Integer, db.ForeignKey('user.id'), primary_key = True)
More information about the copr-devel
mailing list