liquid_feedback_frontend
view 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 source
1 Initiative = mondelefant.new_class()
2 Initiative.table = 'initiative'
4 Initiative:add_reference{
5 mode = 'm1',
6 to = "Issue",
7 this_key = 'issue_id',
8 that_key = 'id',
9 ref = 'issue',
10 }
12 Initiative:add_reference{
13 mode = '1m',
14 to = "Draft",
15 this_key = 'id',
16 that_key = 'initiative_id',
17 ref = 'drafts',
18 back_ref = 'initiative',
19 default_order = '"id"'
20 }
22 Initiative:add_reference{
23 mode = '1m',
24 to = "Suggestion",
25 this_key = 'id',
26 that_key = 'initiative_id',
27 ref = 'suggestions',
28 back_ref = 'initiative',
29 default_order = '"id"'
30 }
32 Initiative:add_reference{
33 mode = '1m',
34 to = "Initiator",
35 this_key = 'id',
36 that_key = 'initiative_id',
37 ref = 'initiators',
38 back_ref = 'initiative',
39 default_order = '"id"'
40 }
42 Initiative:add_reference{
43 mode = '1m',
44 to = "Supporter",
45 this_key = 'id',
46 that_key = 'initiative_id',
47 ref = 'supporters',
48 back_ref = 'initiative',
49 default_order = '"id"'
50 }
52 Initiative:add_reference{
53 mode = '1m',
54 to = "Opinion",
55 this_key = 'id',
56 that_key = 'initiative_id',
57 ref = 'opinions',
58 back_ref = 'initiative',
59 default_order = '"id"'
60 }
62 Initiative:add_reference{
63 mode = '1m',
64 to = "Vote",
65 this_key = 'id',
66 that_key = 'initiative_id',
67 ref = 'votes',
68 back_ref = 'initiative',
69 default_order = '"member_id"'
70 }
72 Initiative:add_reference{
73 mode = 'mm',
74 to = "Member",
75 this_key = 'id',
76 that_key = 'id',
77 connected_by_table = '"initiator"',
78 connected_by_this_key = 'initiative_id',
79 connected_by_that_key = 'member_id',
80 ref = 'initiating_members'
81 }
83 Initiative:add_reference{
84 mode = 'mm',
85 to = "Member",
86 this_key = 'id',
87 that_key = 'id',
88 connected_by_table = '"supporter"',
89 connected_by_this_key = 'initiative_id',
90 connected_by_that_key = 'member_id',
91 ref = 'supporting_members'
92 }
94 function Initiative:search(search_string)
95 return self:new_selector()
96 :add_where{ '"initiative"."name" ILIKE ?', "%" .. search_string:gsub("%%", "") .. "%" }
97 :exec()
98 end
100 function Initiative.object_get:current_draft()
101 return Draft:new_selector()
102 :add_where{ '"initiative_id" = ?', self.id }
103 :add_order_by('"id" DESC')
104 :single_object_mode()
105 :exec()
106 end
108 function Initiative.object_get:shortened_name()
109 local name = self.name
110 if #name > 100 then
111 name = name:sub(1,100) .. "..."
112 end
113 return name
114 end