def request_permission(cls, copr, user, permission, req_bool): approved = helpers.PermissionEnum('approved') state = None if req_bool is True: state = 'request' elif req_bool is False: state = 'nothing' else: raise BadRequest("invalid '{0}' permission request '{1}', " "expected True or False".format( permission, req_bool)) cls.validate_permission(user, copr, permission, state) perm_o = models.CoprPermission(user_id=user.id, copr_id=copr.id) perm_o = db.session.merge(perm_o) old_state = perm_o.get_permission(permission) if old_state == approved and state == 'request': raise BadRequest("You already are '{0}' in '{1}'".format( permission, copr.full_name)) new_state = helpers.PermissionEnum(state) perm_o.set_permission(permission, new_state) if old_state != new_state: return (old_state, new_state) return None
def f_copr_permissions(self): self.cp1 = models.CoprPermission( copr=self.c2, user=self.u1, copr_builder=helpers.PermissionEnum("approved"), copr_admin=helpers.PermissionEnum("nothing")) self.cp2 = models.CoprPermission( copr=self.c3, user=self.u3, copr_builder=helpers.PermissionEnum("nothing"), copr_admin=helpers.PermissionEnum("nothing")) self.cp3 = models.CoprPermission( copr=self.c3, user=self.u1, copr_builder=helpers.PermissionEnum("request"), copr_admin=helpers.PermissionEnum("approved"))
def set_permissions(cls, request_user, copr, user, permission, state): users_logic.UsersLogic.raise_if_cant_update_copr( request_user, copr, "only owners and admins may update their projects permissions.") cls.validate_permission(user, copr, permission, state) perm_o = models.CoprPermission(user_id=user.id, copr_id=copr.id) perm_o = db.session.merge(perm_o) old_state = perm_o.get_permission(permission) new_state = helpers.PermissionEnum(state) perm_o.set_permission(permission, new_state) db.session.merge(perm_o) return (old_state, new_state) if old_state != new_state else None
def f_copr_more_permissions(self, f_copr_permissions): self.u4 = models.User( username=u"user4", proven=False, mail="*****@*****.**", api_token='u4xxx', api_login='******', api_token_expiration=datetime.date.today() + datetime.timedelta(days=1000)) # only a builder self.cp4 = models.CoprPermission( copr=self.c3, user=self.u4, copr_builder=helpers.PermissionEnum("approved"), copr_admin=helpers.PermissionEnum("nothing")) self.db.session.add_all([self.cp1, self.cp2, self.cp3])
def update_permissions_by_applier(cls, user, copr, copr_permission, new_builder, new_admin): if copr_permission: # preserve approved permissions if set if (not new_builder or copr_permission.copr_builder != helpers.PermissionEnum("approved")): copr_permission.copr_builder = new_builder if (not new_admin or copr_permission.copr_admin != helpers.PermissionEnum("approved")): copr_permission.copr_admin = new_admin else: perm = models.CoprPermission(user=user, copr=copr, copr_builder=new_builder, copr_admin=new_admin) cls.new(perm)