コード例 #1
0
ファイル: project.py プロジェクト: theMavl/InnoMetrics
def accept_invitation(project_id: str, user: str) -> Optional[bool]:
    """
    Accept invitation to the project
    :param project_id: an id of the project were a user was invited
    :param user: a reference to the user
    :return:
    """
    if not (project_id or user):
        return None

    project = Project.objects(id=project_id).first()
    if not project:
        return None

    user_indeed_was_invited = False
    if user in project.invited_users and user not in project.users:
        project.users.append(user)
        user_indeed_was_invited = True

    if user in project.invited_managers and user not in project.managers:
        project.managers.append(user)
        user_indeed_was_invited = True

    project.save()
    return user_indeed_was_invited
コード例 #2
0
ファイル: project.py プロジェクト: theMavl/InnoMetrics
def get_project_activities(project_id: str, user: str,
                           **filters) -> Union[int, None, List[Activity]]:
    """
    Return activities of all users in a project
    :param project_id: an id of the project
    :param user: a reference to the user asking, should have a manager role
    :param filters: filters for find_activities method
    :return:
    """
    if not (project_id or user):
        return None

    project = Project.objects(id=project_id).first()
    if not project:
        return None

    if user not in project.managers:
        return None

    if not project.users:
        return []
    else:
        return find_activities(user_ids=project.users, **filters)
コード例 #3
0
ファイル: project.py プロジェクト: theMavl/InnoMetrics
def invite_user(project_id: str,
                user_email: str,
                invitor: str,
                manager: bool = False) -> Optional[bool]:
    """
    Invite a user to the project
    :param manager: if a person invited for manager role
    :param invitor: an user reference to invitor
    :param project_id: an id of the project
    :param user_email: a user's email
    :return:
    """
    if not (project_id and user_email and invitor):
        return None

    project = Project.objects(id=project_id).first()
    if not project:
        return None

    if invitor not in project.managers:
        return None

    user = User.objects(email=user_email).first()
    if not user:
        return None

    if manager:
        if user.to_dbref() not in project.invited_managers:
            project.invited_managers.append(user.to_dbref())
    else:
        if user.to_dbref() not in project.invited_users:
            project.invited_users.append(user.to_dbref())

    project.save()

    return True