liquid_feedback_frontend
diff model/issue.lua @ 0:3bfb2fcf7ab9
Version alpha1
author | bsw/jbe |
---|---|
date | Wed Nov 18 12:00:00 2009 +0100 (2009-11-18) |
parents | |
children | 5c601807d397 |
line diff
1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/model/issue.lua Wed Nov 18 12:00:00 2009 +0100 1.3 @@ -0,0 +1,109 @@ 1.4 +Issue = mondelefant.new_class() 1.5 +Issue.table = 'issue' 1.6 + 1.7 +Issue:add_reference{ 1.8 + mode = 'm1', 1.9 + to = "Area", 1.10 + this_key = 'area_id', 1.11 + that_key = 'id', 1.12 + ref = 'area', 1.13 +} 1.14 + 1.15 +Issue:add_reference{ 1.16 + mode = 'm1', 1.17 + to = "Policy", 1.18 + this_key = 'policy_id', 1.19 + that_key = 'id', 1.20 + ref = 'policy', 1.21 +} 1.22 + 1.23 +Issue:add_reference{ 1.24 + mode = '1m', 1.25 + to = "Initiative", 1.26 + this_key = 'id', 1.27 + that_key = 'issue_id', 1.28 + ref = 'initiatives', 1.29 + back_ref = 'issue' 1.30 +} 1.31 + 1.32 +Issue:add_reference{ 1.33 + mode = '1m', 1.34 + to = "Interest", 1.35 + this_key = 'id', 1.36 + that_key = 'issue_id', 1.37 + ref = 'interests', 1.38 + back_ref = 'issue', 1.39 + default_order = '"id"' 1.40 +} 1.41 + 1.42 +Issue:add_reference{ 1.43 + mode = '1m', 1.44 + to = "Supporter", 1.45 + this_key = 'id', 1.46 + that_key = 'issue_id', 1.47 + ref = 'supporters', 1.48 + back_ref = 'issue', 1.49 + default_order = '"id"' 1.50 +} 1.51 + 1.52 +Issue:add_reference{ 1.53 + mode = '1m', 1.54 + to = "DirectVoter", 1.55 + this_key = 'id', 1.56 + that_key = 'issue_id', 1.57 + ref = 'direct_voters', 1.58 + back_ref = 'issue', 1.59 + default_order = '"member_id"' 1.60 +} 1.61 + 1.62 +Issue:add_reference{ 1.63 + mode = '1m', 1.64 + to = "Vote", 1.65 + this_key = 'id', 1.66 + that_key = 'issue_id', 1.67 + ref = 'votes', 1.68 + back_ref = 'issue', 1.69 + default_order = '"member_id", "initiative_id"' 1.70 +} 1.71 + 1.72 +Issue:add_reference{ 1.73 + mode = 'mm', 1.74 + to = "Member", 1.75 + this_key = 'id', 1.76 + that_key = 'id', 1.77 + connected_by_table = 'interest', 1.78 + connected_by_this_key = 'issue_id', 1.79 + connected_by_that_key = 'member_id', 1.80 + ref = 'members' 1.81 +} 1.82 + 1.83 +function Issue:get_state_name_for_state(value) 1.84 + local state_name_table = {} 1.85 + return state_name_table[value] or value 1.86 +end 1.87 + 1.88 +function Issue:search(search_string) 1.89 + return self:new_selector() 1.90 + :join('"initiative"', nil, '"initiative"."issue_id" = "issue"."id"') 1.91 + :add_where{ '"initiative"."name" ILIKE ?', "%" .. search_string:gsub("%%", "") .. "%" } 1.92 + :set_distinct() 1.93 + :exec() 1.94 +end 1.95 + 1.96 +function Issue.object_get:state() 1.97 + if self.accepted then 1.98 + if self.frozen then 1.99 + return "frozen" 1.100 + elseif self.closed then 1.101 + return "closed" 1.102 + else 1.103 + return "accepted" 1.104 + end 1.105 + else 1.106 + if self.closed then 1.107 + return "closed" 1.108 + else 1.109 + return "new" 1.110 + end 1.111 + end 1.112 +end 1.113 \ No newline at end of file