Example #1
0
    def edit_member(self, requester, user_or_group, reason, **kwargs):
        """ Edit an existing member (User or Group) of a group.

            This takes the same parameters as add_member, except that we do not allow you to set
            a status: this only works on existing members.

            Any option that is not passed is not updated, and instead, the existing value for this
            user is kept.
        """
        logging.debug("Editing member (%s) in %s", user_or_group.name,
                      self.groupname)

        persist_group_member_changes(session=self.session,
                                     group=self,
                                     requester=requester,
                                     member=user_or_group,
                                     status="actioned",
                                     reason=reason,
                                     **kwargs)

        member_type = user_or_group.member_type

        message = "Edit member {} {}: {}".format(
            OBJ_TYPES_IDX[member_type].lower(), user_or_group.name, reason)
        AuditLog.log(self.session,
                     requester.id,
                     "edit_member",
                     message,
                     on_group_id=self.id)
Example #2
0
    def revoke_member(self, requester: User, user_or_group: Union[User, Group],
                      reason: str) -> None:
        """Revoke a member (User or Group) from this group.

        Args:
            requester: A User object of the person requesting the addition
            user_or_group: A User/Group object of the member
            reason: A comment on why this member should exist
        """
        logging.debug("Revoking member (%s) from %s", user_or_group.name,
                      self.groupname)

        persist_group_member_changes(
            session=self.session,
            group=self,
            requester=requester,
            member=user_or_group,
            status="actioned",
            reason=reason,
            # Create the edge even if it doesn't exist so that we can explicitly disable it.
            create_edge=True,
            role="member",
            expiration=None,
            active=False,
        )
Example #3
0
    def edit_member(self, requester, user_or_group, reason, **kwargs):
        """ Edit an existing member (User or Group) of a group.

            This takes the same parameters as add_member, except that we do not allow you to set
            a status: this only works on existing members.

            Any option that is not passed is not updated, and instead, the existing value for this
            user is kept.
        """
        logging.debug(
            "Editing member (%s) in %s", user_or_group.name, self.groupname
        )

        persist_group_member_changes(
            session=self.session,
            group=self,
            requester=requester,
            member=user_or_group,
            status="actioned",
            reason=reason,
            **kwargs
        )

        member_type = user_or_group.member_type

        message = "Edit member {} {}: {}".format(
            OBJ_TYPES_IDX[member_type].lower(), user_or_group.name, reason)
        AuditLog.log(self.session, requester.id, 'edit_member',
                     message, on_group_id=self.id)
Example #4
0
    def revoke_member(self, requester, user_or_group, reason):
        """ Revoke a member (User or Group) from this group.

            Arguments:
                requester: A User object of the person requesting the addition
                user_or_group: A User/Group object of the member
                reason: A comment on why this member should exist
        """
        logging.debug(
            "Revoking member (%s) from %s", user_or_group.name, self.groupname
        )

        persist_group_member_changes(
            session=self.session,
            group=self,
            requester=requester,
            member=user_or_group,
            status="actioned",
            reason=reason,
            # Create the edge even if it doesn't exist so that we can explicitly disable it.
            create_edge=True,
            role="member",
            expiration=None,
            active=False
        )
Example #5
0
    def add_member(self,
                   requester,
                   user_or_group,
                   reason,
                   status="pending",
                   expiration=None,
                   role="member"):
        """ Add a member (User or Group) to this group.

            Arguments:
                requester: A User object of the person requesting the addition
                user_or_group: A User/Group object of the member
                reason: A comment on why this member should exist
                status: pending/actioned, whether the request needs approval
                        or should be immediate
                expiration: datetime object when membership should expire.
                role: member/manager/owner/np-owner of the Group.
        """
        logging.debug("Adding member (%s) to %s", user_or_group.name,
                      self.groupname)

        return persist_group_member_changes(
            session=self.session,
            group=self,
            requester=requester,
            member=user_or_group,
            status=status,
            reason=reason,
            create_edge=True,
            role=role,
            expiration=expiration,
            active=True,
        )
Example #6
0
    def add_member(self, requester, user_or_group, reason, status="pending",
                   expiration=None, role="member"):
        """ Add a member (User or Group) to this group.

            Arguments:
                requester: A User object of the person requesting the addition
                user_or_group: A User/Group object of the member
                reason: A comment on why this member should exist
                status: pending/actioned, whether the request needs approval
                        or should be immediate
                expiration: datetime object when membership should expire.
                role: member/manager/owner/np-owner of the Group.
        """
        logging.debug(
            "Adding member (%s) to %s", user_or_group.name, self.groupname
        )

        return persist_group_member_changes(
            session=self.session,
            group=self,
            requester=requester,
            member=user_or_group,
            status=status,
            reason=reason,
            create_edge=True,
            role=role,
            expiration=expiration,
            active=True
        )