From a7ba7605d3a4ea6eae963903e345e5d53b0768b8 Mon Sep 17 00:00:00 2001 From: Luke Miller Date: Thu, 6 May 2021 01:05:57 -0400 Subject: [PATCH] proccesses are working now! --- modpol/api.lua | 5 ++++- modpol/modpol.lua | 8 ++++---- modpol/modules/consent.lua | 26 ++++++++++++++------------ modpol/orgs/requests.lua | 16 +++++++++++----- modpol/tests/org_req_test.lua | 6 +++--- 5 files changed, 36 insertions(+), 25 deletions(-) diff --git a/modpol/api.lua b/modpol/api.lua index 41b34d6..cae289f 100644 --- a/modpol/api.lua +++ b/modpol/api.lua @@ -13,4 +13,7 @@ dofile (localdir .. "/orgs/requests.lua") dofile (localdir .. "/interactions/interactions.lua") -- messaging functions -dofile (localdir .. "/processes/processes.lua") \ No newline at end of file +dofile (localdir .. "/processes/processes.lua") + +--modules +dofile (localdir .. "/modules/consent.lua") \ No newline at end of file diff --git a/modpol/modpol.lua b/modpol/modpol.lua index 6c35d62..21ce509 100644 --- a/modpol/modpol.lua +++ b/modpol/modpol.lua @@ -77,10 +77,10 @@ if (modpol.orgs.array) then for id, org in ipairs(modpol.orgs.array) do if type(org) == 'table' then setmetatable(org, modpol.orgs) - end - -- sets process metatable on load - for id, process in ipairs(org.processes) do - setmetatable(process, org.modules[process.type]) + -- sets process metatable on load + for id, process in ipairs(org.processes) do + setmetatable(process, org.modules[process.type]) + end end end end diff --git a/modpol/modules/consent.lua b/modpol/modules/consent.lua index 9a6b060..1704050 100644 --- a/modpol/modules/consent.lua +++ b/modpol/modules/consent.lua @@ -1,3 +1,5 @@ +modpol.modules = modpol.modules or {} + modpol.modules.consent = { type = "consent", } @@ -9,7 +11,7 @@ function temp_consent_process() return { org_id = nil, request_id = nil, - total_votes = nil, + total_votes = 0, votes_yes = {}, votes_no = {} } @@ -17,16 +19,15 @@ end -- =============================================== -- function to create a new consent process to resolve a pending process -function modpol.modules.consent.new_process(request_id, org_id) +function modpol.modules.consent:new_process(request_id, org_id) local process = temp_consent_process() process.request_id = request_id process.org_id = org_id setmetatable(process, modpol.modules.consent) + modpol.ocutil.log('Created new process for request id #' .. request_id) - modpol.ocutil.log('Created new process for request id') - - return temp_consent_process + return process end -- ====================================================== @@ -38,6 +39,7 @@ function modpol.modules.consent:approve(user, decision) else table.insert(self.votes_no, user) modpol.ocutil.log('User ' .. user .. ' voted no on request #' .. self.request_id) + end self.total_votes = self.total_votes + 1 @@ -45,11 +47,11 @@ end -- =================================================== -- determines whether process has finished and resolves request if it has (unfinished) -function modules.consent.call_vote_check(process) - if votes_yes > to_pass then - call_success() - elseif votes_no > to_pass then - call_failure() - end -end +-- function modpol.modules.consent.call_vote_check(process) +-- if votes_yes > to_pass then +-- call_success() +-- elseif votes_no > to_pass then +-- call_failure() +-- end +-- end diff --git a/modpol/orgs/requests.lua b/modpol/orgs/requests.lua index 39c07ab..1ff255a 100644 --- a/modpol/orgs/requests.lua +++ b/modpol/orgs/requests.lua @@ -7,11 +7,15 @@ modpol.orgs.request_params = { -- ================================ -- creates a new process linked to a request id -function modpol.orgs:create_process(request_id) - local new_process = { - object = "I am a process", - request_id = request_id - } +function modpol.orgs:create_process(process_type, request_id) + if not modpol.modules[process_type] then + modpol.ocutil.log('Process type "' .. process_type .. '" does not exist') + return + end + + -- retrieving requested module + local module = modpol.modules[process_type] + local new_process = module:new_process(request_id, self.id) -- linear search for empty process slots (lazy deletion) for k, v in ipairs(self.processes) do @@ -24,8 +28,10 @@ function modpol.orgs:create_process(request_id) -- attempts to fill empty spots in list, otherwise appends to end if empty_index then self.processes[empty_index] = new_process + return empty_index else table.insert(self.processes, new_process) + return #self.processes end end diff --git a/modpol/tests/org_req_test.lua b/modpol/tests/org_req_test.lua index 17875b3..6696db6 100644 --- a/modpol/tests/org_req_test.lua +++ b/modpol/tests/org_req_test.lua @@ -12,8 +12,8 @@ new_request = { params = {"lukvmil"} } -request_id = test_org:make_request(new_request) request_id = test_org:make_request(new_request) -print(test_org:list_request()) -test_org:create_process(request_id) \ No newline at end of file +process_id = test_org:create_process("consent", request_id) +process = test_org.processes[process_id] +process:approve("luke", true) \ No newline at end of file