def send_add_board_editor_notification(board_id, uid, read, write, session=None): inviting_user = user_logic.get_user_by_id(current_user.id, session=session) invited_user = user_logic.get_user_by_id(uid, session=session) board = Board.get(id=board_id, session=session) environment = board.environment permission_type = "edit" if write else "view" board_url = f"{QuerybookSettings.PUBLIC_URL}/{environment.name}/list/{board_id}/" notify_user( user=invited_user, template_name="board_invitation", template_params=dict( inviting_username=inviting_user.get_name(), read_or_write=permission_type, board_url=board_url, board_name=board.name, ), session=session, )
def _send_datadoc_notification( user_id: int, notify_with: str, notification_params: Dict, session=None, ): user = User.get(id=user_id, session=session) notify_user( user=user, template_name="datadoc_completion_notification", template_params=notification_params, notifier_name=notify_with, session=session, )
def notifiy_on_execution_completion(query_execution_id, session=None): query_execution = qe_logic.get_query_execution_by_id(query_execution_id, session=session) notifications = query_execution.notifications if len(notifications): data_cell = next(iter(query_execution.cells), None) # TODO: this should be determined by the notification.user? # Come up with a more efficient way to determine env per user env_name = getattr( qe_perm_logic.get_default_user_environment_by_execution_id( execution_id=query_execution_id, uid=query_execution.uid, session=session, ), "name", None, ) # If the query execution is not associated with any environment # then no notification can be done if not env_name: return for notification in notifications: uid = notification.user user = user_logic.get_user_by_id(uid, session=session) doc_id = None cell_id = None query_title = "Untitled" if data_cell is not None: cell_id = data_cell.id doc_id = data_cell.doc.id query_title = data_cell.meta.get("title", query_title) notify_user( user=user, template_name="query_completion_notification", template_params=dict( query_execution=query_execution, doc_id=doc_id, cell_id=cell_id, query_title=query_title, public_url=QuerybookSettings.PUBLIC_URL, env_name=env_name, ), session=session, )
def send_query_execution_invitation_notification(execution_id, uid, session=None): inviting_user = user_logic.get_user_by_id(current_user.id, session=session) invited_user = user_logic.get_user_by_id(uid, session=session) environment = get_default_user_environment_by_execution_id( execution_id=execution_id, uid=uid, session=session ) execution_url = f"{QuerybookSettings.PUBLIC_URL}/{environment.name}/query_execution/{execution_id}/" notify_user( user=invited_user, template_name="query_execution_invitation", template_params=dict( inviting_username=inviting_user.get_name(), execution_id=execution_id, execution_url=execution_url, ), session=session, )
def send_board_transfer_notification(board_id, next_owner_id, session=None): inviting_user = user_logic.get_user_by_id(current_user.id, session=session) invited_user = user_logic.get_user_by_id(next_owner_id, session=session) board = Board.get(id=board_id, session=session) environment = board.environment board_url = f"{QuerybookSettings.PUBLIC_URL}/{environment.name}/board/{board_id}/" notify_user( user=invited_user, template_name="board_ownership_transfer", template_params=dict( inviting_username=inviting_user.get_name(), board_url=board_url, board_name=board.name, ), session=session, )
def send_query_execution_access_request_notification(execution_id, uid, session=None): requestor = user_logic.get_user_by_id(uid, session=session) query_execution = logic.get_query_execution_by_id(execution_id, session=session) environment = get_default_user_environment_by_execution_id( execution_id=execution_id, uid=uid, session=session ) execution_url = f"{QuerybookSettings.PUBLIC_URL}/{environment.name}/query_execution/{execution_id}/" owner = user_logic.get_user_by_id(query_execution.uid, session=session) requestor_username = requestor.get_name() notify_user( user=owner, template_name="query_execution_access_request", template_params=dict( username=requestor_username, execution_id=execution_id, execution_url=execution_url, ), )
def send_datadoc_transfer_notification(doc_id, next_owner_id, session=None): inviting_user = user_logic.get_user_by_id(current_user.id, session=session) invited_user = user_logic.get_user_by_id(next_owner_id, session=session) data_doc = logic.get_data_doc_by_id(doc_id, session=session) environment = data_doc.environment data_doc_title = data_doc.title or "Untitled" doc_url = f"{QuerybookSettings.PUBLIC_URL}/{environment.name}/datadoc/{doc_id}/" notify_user( user=invited_user, template_name="datadoc_ownership_transfer", template_params=dict( inviting_username=inviting_user.get_name(), doc_url=doc_url, data_doc_title=data_doc_title, ), session=session, )
def send_add_datadoc_editor_email(doc_id, uid, read, write, session=None): inviting_user = user_logic.get_user_by_id(current_user.id, session=session) invited_user = user_logic.get_user_by_id(uid, session=session) data_doc = logic.get_data_doc_by_id(doc_id, session=session) environment = data_doc.environment read_or_write = "edit" if write else "view" data_doc_title = data_doc.title or "Untitled" doc_url = f"{QuerybookSettings.PUBLIC_URL}/{environment.name}/datadoc/{doc_id}/" notify_user( user=invited_user, template_name="datadoc_invitation", template_params=dict( inviting_username=inviting_user.get_name(), read_or_write=read_or_write, doc_url=doc_url, data_doc_title=data_doc_title, ), session=session, )
def send_datadoc_access_request_notification(doc_id, uid, session=None): requestor = user_logic.get_user_by_id(uid, session=session) data_doc = logic.get_data_doc_by_id(doc_id, session=session) environment = data_doc.environment data_doc_title = data_doc.title or "Untitled" doc_url = f"{QuerybookSettings.PUBLIC_URL}/{environment.name}/datadoc/{doc_id}/" owner = user_logic.get_user_by_id(data_doc.owner_uid, session=session) doc_editors = [owner] writer_uids = [ writer.uid for writer in logic.get_data_doc_writers_by_doc_id(doc_id) ] doc_editors.extend(user_logic.get_users_by_ids(writer_uids)) requestor_username = requestor.get_name() for user in doc_editors: notify_user( user=user, template_name="datadoc_access_request", template_params=dict( username=requestor_username, data_doc_title=data_doc_title, doc_url=doc_url, ), )
def send_board_access_request_notification(board_id, uid, session=None): requestor = user_logic.get_user_by_id(uid, session=session) board = Board.get(id=board_id, session=session) environment = board.environment board_url = f"{QuerybookSettings.PUBLIC_URL}/{environment.name}/list/{board_id}/" owner = user_logic.get_user_by_id(board.owner_uid, session=session) doc_editors = [owner] writer_uids = [ writer.uid for writer in logic.get_board_editors_by_board_id(board_id) ] doc_editors.extend(user_logic.get_users_by_ids(writer_uids)) requestor_username = requestor.get_name() for user in doc_editors: notify_user( user=user, template_name="board_access_request", template_params=dict( username=requestor_username, board_name=board.name, board_url=board_url, ), )