--- remove_member_consent -- @module remove_member_consent local remove_member_consent = { name = "Remove a member (consent)", slug = "remove_member_consent", desc = "Removes org member with consent of other members" } remove_member_consent.data = { member_to_remove = "", result = nil } remove_member_consent.config = { } function remove_member_consent:initiate(result) -- Abort if in root org if self.org == modpol.instance then modpol.interactions.message( self.initiator, "Members cannot be removed from the root org") if result then result() end self.org:delete_process(self.id) else -- proceed if not root self.data.result = result modpol.interactions.dropdown_query( self.initiator, "Which member of org "..self.org.name.. " do you want to remove?", self.org.members, function(input) self.data.member_to_remove = input self.org:call_module( "consent", self.initiator, { prompt = "Remove "..input.. " from org "..self.org.name.."?", votes_required = #self.org.members - 1 }, function() self:complete() end) modpol.interactions.org_dashboard( self.initiator, self.org.name) end) end end function remove_member_consent:complete() modpol.interactions.message_org( self.initiator, self.org.id, "Consent reached: removing ".. self.data.member_to_remove.. " from org "..self.org.name) self.org:remove_member(self.data.member_to_remove) self.org:delete_process(self.id) if self.data.result then self.data.result() end end --- (Required) Add to module table modpol.modules.remove_member_consent = remove_member_consent