liquid_feedback_frontend
diff model/initiative.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/initiative.lua Wed Nov 18 12:00:00 2009 +0100 1.3 @@ -0,0 +1,114 @@ 1.4 +Initiative = mondelefant.new_class() 1.5 +Initiative.table = 'initiative' 1.6 + 1.7 +Initiative:add_reference{ 1.8 + mode = 'm1', 1.9 + to = "Issue", 1.10 + this_key = 'issue_id', 1.11 + that_key = 'id', 1.12 + ref = 'issue', 1.13 +} 1.14 + 1.15 +Initiative:add_reference{ 1.16 + mode = '1m', 1.17 + to = "Draft", 1.18 + this_key = 'id', 1.19 + that_key = 'initiative_id', 1.20 + ref = 'drafts', 1.21 + back_ref = 'initiative', 1.22 + default_order = '"id"' 1.23 +} 1.24 + 1.25 +Initiative:add_reference{ 1.26 + mode = '1m', 1.27 + to = "Suggestion", 1.28 + this_key = 'id', 1.29 + that_key = 'initiative_id', 1.30 + ref = 'suggestions', 1.31 + back_ref = 'initiative', 1.32 + default_order = '"id"' 1.33 +} 1.34 + 1.35 +Initiative:add_reference{ 1.36 + mode = '1m', 1.37 + to = "Initiator", 1.38 + this_key = 'id', 1.39 + that_key = 'initiative_id', 1.40 + ref = 'initiators', 1.41 + back_ref = 'initiative', 1.42 + default_order = '"id"' 1.43 +} 1.44 + 1.45 +Initiative:add_reference{ 1.46 + mode = '1m', 1.47 + to = "Supporter", 1.48 + this_key = 'id', 1.49 + that_key = 'initiative_id', 1.50 + ref = 'supporters', 1.51 + back_ref = 'initiative', 1.52 + default_order = '"id"' 1.53 +} 1.54 + 1.55 +Initiative:add_reference{ 1.56 + mode = '1m', 1.57 + to = "Opinion", 1.58 + this_key = 'id', 1.59 + that_key = 'initiative_id', 1.60 + ref = 'opinions', 1.61 + back_ref = 'initiative', 1.62 + default_order = '"id"' 1.63 +} 1.64 + 1.65 +Initiative:add_reference{ 1.66 + mode = '1m', 1.67 + to = "Vote", 1.68 + this_key = 'id', 1.69 + that_key = 'initiative_id', 1.70 + ref = 'votes', 1.71 + back_ref = 'initiative', 1.72 + default_order = '"member_id"' 1.73 +} 1.74 + 1.75 +Initiative:add_reference{ 1.76 + mode = 'mm', 1.77 + to = "Member", 1.78 + this_key = 'id', 1.79 + that_key = 'id', 1.80 + connected_by_table = '"initiator"', 1.81 + connected_by_this_key = 'initiative_id', 1.82 + connected_by_that_key = 'member_id', 1.83 + ref = 'initiating_members' 1.84 +} 1.85 + 1.86 +Initiative:add_reference{ 1.87 + mode = 'mm', 1.88 + to = "Member", 1.89 + this_key = 'id', 1.90 + that_key = 'id', 1.91 + connected_by_table = '"supporter"', 1.92 + connected_by_this_key = 'initiative_id', 1.93 + connected_by_that_key = 'member_id', 1.94 + ref = 'supporting_members' 1.95 +} 1.96 + 1.97 +function Initiative:search(search_string) 1.98 + return self:new_selector() 1.99 + :add_where{ '"initiative"."name" ILIKE ?', "%" .. search_string:gsub("%%", "") .. "%" } 1.100 + :exec() 1.101 +end 1.102 + 1.103 +function Initiative.object_get:current_draft() 1.104 + return Draft:new_selector() 1.105 + :add_where{ '"initiative_id" = ?', self.id } 1.106 + :add_order_by('"id" DESC') 1.107 + :single_object_mode() 1.108 + :exec() 1.109 +end 1.110 + 1.111 +function Initiative.object_get:shortened_name() 1.112 + local name = self.name 1.113 + if #name > 100 then 1.114 + name = name:sub(1,100) .. "..." 1.115 + end 1.116 + return name 1.117 +end