From 56ab80d08e32b71a1dcd6717dc856d11523c376c Mon Sep 17 00:00:00 2001 From: Luke Miller Date: Sun, 6 Jun 2021 15:43:24 -0400 Subject: [PATCH 1/4] moved type var into process table, this means that when loaded from memory, processes will properly reconnect to their classes --- modpol/modules/consent.lua | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/modpol/modules/consent.lua b/modpol/modules/consent.lua index 001ae2f..e0d0e7a 100644 --- a/modpol/modules/consent.lua +++ b/modpol/modules/consent.lua @@ -1,14 +1,13 @@ modpol.modules = modpol.modules or {} -modpol.modules.consent = { - type = "consent", -} +modpol.modules.consent = {} -- sets consent to its own callback modpol.modules.consent.__index = modpol.modules.consent function temp_consent_process() return { + type = "consent", org_id = nil, request_id = nil, total_votes = 0, @@ -70,3 +69,6 @@ function modpol.modules.consent:update_status() end end +function modpol.modules.consent.pending_processes() + +end \ No newline at end of file From 0f41e15845b69a4eaee2bc2d81a27056da8521aa Mon Sep 17 00:00:00 2001 From: Luke Miller Date: Sun, 6 Jun 2021 16:01:02 -0400 Subject: [PATCH 2/4] simplified request params check --- modpol/orgs/requests.lua | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/modpol/orgs/requests.lua b/modpol/orgs/requests.lua index d532137..384b81a 100644 --- a/modpol/orgs/requests.lua +++ b/modpol/orgs/requests.lua @@ -108,12 +108,8 @@ function modpol.orgs:make_request(request) return false end - -- num_params should equal zero at the end if request.params matches the num of params for that type - for k, v in ipairs(request.params) do - num_params = num_params - 1 - end - - if num_params ~= 0 then + -- request.params should match the num of params for that type + if #request.params ~= num_params then modpol.ocutil.log('Error in ' .. self.name .. ':make_request -> request has invalid number of parameters') return false end From eeb734bab23186acaafe940f84be2d2b8edc9280 Mon Sep 17 00:00:00 2001 From: Luke Miller Date: Sun, 6 Jun 2021 16:37:56 -0400 Subject: [PATCH 3/4] added delete function for processes, and autodeletes on completion --- modpol/modules/consent.lua | 10 ++++++++++ modpol/orgs/requests.lua | 15 +++++++-------- 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/modpol/modules/consent.lua b/modpol/modules/consent.lua index e0d0e7a..8c57765 100644 --- a/modpol/modules/consent.lua +++ b/modpol/modules/consent.lua @@ -30,6 +30,14 @@ function modpol.modules.consent:new_process(request_id, org_id) return process end +-- ========================================= +-- function to delete a process, called when process finishes +function modpol.modules.consent:delete() + local process_org = modpol.orgs.get_org(self.org_id) + process_org.processes[self.id] = "deleted" + modpol.ocutil.log('Deleted process #' .. self.id) +end + -- ====================================================== -- function for users to vote on a pending request function modpol.modules.consent:approve(user, decision) @@ -61,9 +69,11 @@ function modpol.modules.consent:update_status() if #self.votes_yes >= votes_needed then modpol.ocutil.log('Request #' .. self.request_id .. ' passes') process_org:resolve_request(self.request_id, true) + self:delete() elseif #self.votes_no >= votes_needed then modpol.ocutil.log('Request #' .. self.request_id .. ' fails to pass') process_org:resolve_request(self.request_id, false) + self:delete() else modpol.ocutil.log('Waiting for more votes...') end diff --git a/modpol/orgs/requests.lua b/modpol/orgs/requests.lua index 384b81a..9b405ba 100644 --- a/modpol/orgs/requests.lua +++ b/modpol/orgs/requests.lua @@ -25,14 +25,18 @@ function modpol.orgs:create_process(process_type, request_id) end end + local index -- attempts to fill empty spots in list, otherwise appends to end if empty_index then self.processes[empty_index] = new_process - return empty_index + index = empty_index else table.insert(self.processes, new_process) - return #self.processes + index = #self.processes end + + new_process.id = index + return index end -- =========================== @@ -169,12 +173,7 @@ function modpol.orgs:make_request(request) request_id = empty_index else table.insert(self.requests, request) - -- finds end of list to return current request's id - local count = 0 - for k, v in ipairs(self.requests) do - count = count + 1 - end - request_id = count + request_id = #self.requests end modpol.ocutil.log("Request made by " .. request.user .. " to " .. request.type) From 20f2854969d07ec0c4a86a66afd4b52b3978a49b Mon Sep 17 00:00:00 2001 From: Luke Miller Date: Sun, 6 Jun 2021 17:52:41 -0400 Subject: [PATCH 4/4] made user index local --- modpol/orgs/base.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modpol/orgs/base.lua b/modpol/orgs/base.lua index ca915aa..1a975a6 100644 --- a/modpol/orgs/base.lua +++ b/modpol/orgs/base.lua @@ -252,7 +252,7 @@ end function modpol.orgs:remove_member(user) -- sets the array index to an empty string so that consecutive list is preserved -- empty spots will get filled in by new members - user_index = self:get_member_index(user) + local user_index = self:get_member_index(user) if user_index then self.members[user_index] = '' else @@ -265,7 +265,7 @@ end -- =========================================== -- boolean check whether user is an org function modpol.orgs:has_member(user) - user_index = self:get_member_index(user) + local user_index = self:get_member_index(user) if user_index then return true else