Переглянути джерело

starting to bring consent module online

Luke Miller 3 роки тому
батько
коміт
fb0bb4f049
1 змінених файлів з 43 додано та 25 видалено
  1. 43 25
      modpol/modules/consent.lua

+ 43 - 25
modpol/modules/consent.lua

@@ -1,37 +1,55 @@
-rough_idea = { -- a lot of these might want to call org functions instead of being hard coded
+modpol.modules.consent = {
     type = "consent",
-    org_id = 5, -- may be needed for defer_to, process sent to a diff org
-    request_id = 1, -- callback to request
-    total_votes = 2,
-    to_pass = 3, -- could default to majority, but could set super majority
-    eligible_voters = 5,
-    timeout = 234235325, -- timestamp when vote ends
-    votes_yes = {
-        "lukvmil"
-    },
-    votes_no = {
-        "nathan"
-    }
 }
 
-function modules.consent.cast_vote(user, decision, org_id, process_id) 
-    local org = modpol.orgs.get_org(org_id)
-    local process = org:get_process(process_id)
-    if decision == "yes" then
-        table.insert(process.votes_yes, user)
-    elseif decision == "no" then
-        table.insert(process.votes_no, user)
+-- sets consent to its own callback
+modpol.modules.consent.__index = modpol.modules.consent
+
+function temp_consent_process()
+    return {
+        org_id = nil,
+        request_id = nil,
+        total_votes = nil,
+        votes_yes = {},
+        votes_no = {}
+    }
+end
+
+-- ===============================================
+-- function to create a new consent process to resolve a pending process
+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')
+
+    return temp_consent_process
+end
+
+-- ======================================================
+-- function for users to vote on a pending request
+function modpol.modules.consent:approve(user, decision)
+    if decision then
+        table.insert(self.votes_yes, user)
+        modpol.ocutil.log('User ' .. user .. ' voted yes on request #' .. self.request_id)
     else
-        return false
-    
-    process.total_votes = process.total_votes + 1
-    call_vote_check(process) -- some call to determine if the vote has reached an end condition
+        table.insert(self.votes_no, user)
+        modpol.ocutil.log('User ' .. user .. ' voted no on request #' .. self.request_id)
+
+    self.total_votes = self.total_votes + 1
+
 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
+end
+