From 509d2781f7412d89518adaef34cde32975abd3f5 Mon Sep 17 00:00:00 2001 From: Nathan Schneider Date: Thu, 27 Jan 2022 13:32:12 -0700 Subject: [PATCH] Created no-consent add_child_org module and a bugfix --- modpol_core/api.lua | 1 + modpol_core/modules/add_child_org.lua | 66 +++++++++++++++++++++++++++ modpol_core/orgs/base.lua | 2 +- 3 files changed, 68 insertions(+), 1 deletion(-) create mode 100644 modpol_core/modules/add_child_org.lua diff --git a/modpol_core/api.lua b/modpol_core/api.lua index 05755ca..6d85949 100644 --- a/modpol_core/api.lua +++ b/modpol_core/api.lua @@ -13,6 +13,7 @@ dofile (localdir .. "/interactions/interactions.lua") --modules --TODO make this automatic and directory-based dofile (localdir .. "/modules/add_child_org_consent.lua") +dofile (localdir .. "/modules/add_child_org.lua") dofile (localdir .. "/modules/change_modules.lua") dofile (localdir .. "/modules/consent.lua") dofile (localdir .. "/modules/create_token.lua") diff --git a/modpol_core/modules/add_child_org.lua b/modpol_core/modules/add_child_org.lua new file mode 100644 index 0000000..42d6c5b --- /dev/null +++ b/modpol_core/modules/add_child_org.lua @@ -0,0 +1,66 @@ +--- Adds a child org. +-- @module add_child_org + +local add_child_org = { + name = "Add child org", + slug = "add_child_org", + desc = "Create a child org in the current one" +} +add_child_org.data = { + child_name = "", + result = nil +} +add_child_org.config = { +} + +--- Initiate consent for new child org +-- @function add_child_org:initiate(result) +-- @param result Callback if this module is embedded in other modules +function add_child_org:initiate(result) + modpol.interactions.text_query( + self.initiator,"Child org name: ", + function(input) + if input == "" then + modpol.interactions.message( + self.initiator, + "No name entered for child org") + modpol.interactions.org_dashboard( + self.initiator, self.org.name) + self.org:delete_process(self.id) + return + elseif modpol.orgs.get_org(input) then + modpol.interactions.message( + self.initiator, + "Org name already in use") + modpol.interactions.org_dashboard( + self.initiator, self.org.name) + self.org:delete_process(self.id) + if result then result() end + return + end + self.data.child_name = input + modpol.interactions.message( + self.initiator, + "Proposed child org: " .. input) + -- create the org + self:create_child_org() + modpol.interactions.org_dashboard( + self.initiator, self.org.name) + end + ) +end + +--- Create a new child orgg +-- @function add_child_org:create_child_org +function add_child_org:create_child_org() + self.org:add_org(self.data.child_name, self.initiator) + modpol.interactions.message_org( + self.initiator, + self.org.name, + "Created child org " + ..self.data.child_name) + if self.data.result then self.data.result() end + self.org:delete_process(self.id) +end + +modpol.modules.add_child_org = add_child_org diff --git a/modpol_core/orgs/base.lua b/modpol_core/orgs/base.lua index 6b37e3f..1f31cd2 100644 --- a/modpol_core/orgs/base.lua +++ b/modpol_core/orgs/base.lua @@ -215,7 +215,7 @@ function modpol.orgs:delete() if #self.children > 0 then for i, child_id in pairs(self.children) do local child = modpol.orgs.get_org(child_id) - modpol.ocutil.log(child_id, child) + modpol.ocutil.log("Deleting child org...") child:delete() end end