Example #1
0
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,
    )
Example #2
0
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,
            )
Example #4
0
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,
    )
Example #5
0
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,
    )
Example #6
0
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,
        ),
    )
Example #7
0
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,
    )
Example #8
0
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,
    )
Example #9
0
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,
            ),
        )
Example #10
0
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,
            ),
        )