def update_permission(role, collection, read, write, editor_id=None): """Update a roles permission to access a given collection.""" pre = Permission.by_collection_role(collection, role) post = Permission.grant(collection, role, read, write) db.session.commit() refresh_role(role) if post is None: return params = {"role": role, "collection": collection} if pre is None or not pre.read: if role.foreign_id == Role.SYSTEM_GUEST: publish( Events.PUBLISH_COLLECTION, actor_id=editor_id, params=params, channels=[GLOBAL], ) else: publish( Events.GRANT_COLLECTION, actor_id=editor_id, params=params, channels=[role], ) return post
def update_permission(role, collection, read, write): """Update a roles permission to access a given collection.""" pre = Permission.by_collection_role(collection, role) post = Permission.grant(collection, role, read, write) db.session.commit() notify_role_template(role, collection.label, 'email/permission.html', url=collection_url(collection.id), pre=pre, post=post, collection=collection) return post
def update_permission(role, collection, read, write, editor_id=None): """Update a roles permission to access a given collection.""" pre = Permission.by_collection_role(collection, role) post = Permission.grant(collection, role, read, write) params = {'role': role, 'collection': collection} if (pre is None or not pre.read) and post.read: if role.is_public: publish(Events.PUBLISH_COLLECTION, actor_id=editor_id, params=params, channels=[Notification.GLOBAL]) else: publish(Events.GRANT_COLLECTION, actor_id=editor_id, params=params) elif pre is not None and pre.read and not post.read: publish(Events.REVOKE_COLLECTION, actor_id=editor_id, params=params) db.session.commit() Authz.flush() return post
def update_permission(role, collection, read, write, editor_id=None): """Update a roles permission to access a given collection.""" pre = Permission.by_collection_role(collection, role) post = Permission.grant(collection, role, read, write) params = {'role': role, 'collection': collection} if (pre is None or not pre.read) and post.read: if role.foreign_id == Role.SYSTEM_GUEST: publish(Events.PUBLISH_COLLECTION, actor_id=editor_id, params=params, channels=[Notification.GLOBAL]) else: publish(Events.GRANT_COLLECTION, actor_id=editor_id, params=params, channels=[role]) db.session.commit() Authz.flush() refresh_role(role) return post
def update_permission(role, collection, read, write): """Update a roles permission to access a given collection.""" pre = Permission.by_collection_role(collection.id, role) post = Permission.grant_collection(collection.id, role, read, write) db.session.commit() try: url = '%scollections/%s' % (app_url, collection.id) html = render_template('email/permission.html', role=role, url=url, collection=collection, pre=pre, post=post, app_url=app_url, app_title=app_title) notify_role(role, collection.label, html) except Exception as ex: log.exception(ex) return post
def update_permission(role, collection, read, write, editor=None): """Update a roles permission to access a given collection.""" pre = Permission.by_collection_role(collection, role) post = Permission.grant(collection, role, read, write) params = {'role': role, 'collection': collection} granted = pre is None or (pre.read != post.read and post.read) revoked = pre is not None and (pre.read != post.read and pre.read) if granted: if role.is_public: publish(Events.PUBLISH_COLLECTION, actor_id=editor.id, params=params, channels=[Notification.GLOBAL]) else: publish(Events.GRANT_COLLECTION, actor_id=editor.id, params=params) elif revoked: publish(Events.REVOKE_COLLECTION, actor_id=editor.id, params=params) cchannel = channel(collection) Subscription.unsubscribe(role=role, channel=cchannel) db.session.commit() return post
def update_permission(role, collection, read, write, editor_id=None): """Update a roles permission to access a given collection.""" pre = Permission.by_collection_role(collection, role) post = Permission.grant(collection, role, read, write) params = {'role': role, 'collection': collection} if (pre is None or not pre.read) and post.read: if role.is_public: publish(Events.PUBLISH_COLLECTION, actor_id=editor_id, params=params, channels=[Notification.GLOBAL]) else: publish(Events.GRANT_COLLECTION, actor_id=editor_id, params=params) elif pre is not None and pre.read and not post.read: publish(Events.REVOKE_COLLECTION, actor_id=editor_id, params=params) db.session.commit() Authz.flush() refresh_role(role) return post