liquid_feedback_frontend

view model/initiative.lua @ 276:f460555c9896

Code cleanup
author bsw
date Sun Feb 12 20:03:26 2012 +0100 (2012-02-12)
parents 88ac7798b562
children 7c6bcbd33603
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" DESC'
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 }
31 Initiative:add_reference{
32 mode = '1m',
33 to = "Initiator",
34 this_key = 'id',
35 that_key = 'initiative_id',
36 ref = 'initiators',
37 back_ref = 'initiative'
38 }
40 Initiative:add_reference{
41 mode = '1m',
42 to = "Supporter",
43 this_key = 'id',
44 that_key = 'initiative_id',
45 ref = 'supporters',
46 back_ref = 'initiative',
47 default_order = '"id"'
48 }
50 Initiative:add_reference{
51 mode = '1m',
52 to = "Opinion",
53 this_key = 'id',
54 that_key = 'initiative_id',
55 ref = 'opinions',
56 back_ref = 'initiative',
57 default_order = '"id"'
58 }
60 Initiative:add_reference{
61 mode = '1m',
62 to = "Vote",
63 this_key = 'id',
64 that_key = 'initiative_id',
65 ref = 'votes',
66 back_ref = 'initiative',
67 default_order = '"member_id"'
68 }
70 Initiative:add_reference{
71 mode = 'm1',
72 to = "Initiative",
73 this_key = 'suggested_initiative_id',
74 that_key = 'id',
75 ref = 'suggested_initiative',
76 }
78 Initiative:add_reference{
79 mode = 'mm',
80 to = "Member",
81 this_key = 'id',
82 that_key = 'id',
83 connected_by_table = '"initiator"',
84 connected_by_this_key = 'initiative_id',
85 connected_by_that_key = 'member_id',
86 ref = 'initiating_members'
87 }
89 Initiative:add_reference{
90 mode = 'mm',
91 to = "Member",
92 this_key = 'id',
93 that_key = 'id',
94 connected_by_table = '"supporter"',
95 connected_by_this_key = 'initiative_id',
96 connected_by_that_key = 'member_id',
97 ref = 'supporting_members'
98 }
100 Initiative:add_reference{
101 mode = 'mm',
102 to = "Member",
103 this_key = 'id',
104 that_key = 'id',
105 connected_by_table = 'direct_supporter_snapshot',
106 connected_by_this_key = 'initiative_id',
107 connected_by_that_key = 'member_id',
108 ref = 'supporting_members_snapshot'
109 }
112 function Initiative:get_search_selector(search_string)
113 return self:new_selector()
114 :join("draft", nil, "draft.initiative_id = initiative.id")
115 :add_field( {'"highlight"("initiative"."name", ?)', search_string }, "name_highlighted")
116 :add_where{ '"initiative"."text_search_data" @@ "text_search_query"(?) OR "draft"."text_search_data" @@ "text_search_query"(?)', search_string, search_string }
117 :add_group_by('"initiative"."id"')
118 :add_group_by('"initiative"."issue_id"')
119 :add_group_by('"initiative"."name"')
120 :add_group_by('"initiative"."discussion_url"')
121 :add_group_by('"initiative"."created"')
122 :add_group_by('"initiative"."revoked"')
123 :add_group_by('"initiative"."admitted"')
124 :add_group_by('"initiative"."supporter_count"')
125 :add_group_by('"initiative"."informed_supporter_count"')
126 :add_group_by('"initiative"."satisfied_supporter_count"')
127 :add_group_by('"initiative"."satisfied_informed_supporter_count"')
128 :add_group_by('"initiative"."positive_votes"')
129 :add_group_by('"initiative"."negative_votes"')
130 :add_group_by('"initiative"."rank"')
131 :add_group_by('"initiative"."suggested_initiative_id"')
132 :add_group_by('"initiative"."text_search_data"')
133 :add_group_by('"issue"."population"')
134 :add_group_by("_initiator.member_id")
135 :add_group_by("_supporter.member_id")
136 end
138 --function Member:get_search_selector(search_string)
139 -- return self:new_selector()
140 -- :add_where("active")
141 --end
144 function Initiative.object_get:current_draft()
145 return Draft:new_selector()
146 :add_where{ '"initiative_id" = ?', self.id }
147 :add_order_by('"id" DESC')
148 :single_object_mode()
149 :exec()
150 end
152 function Initiative.object_get:shortened_name()
153 local name = self.name
154 if #name > 100 then
155 name = name:sub(1,100) .. "..."
156 end
157 return name
158 end
160 function Initiative.object_get:initiator_names()
161 local members = Member:new_selector()
162 :join("initiator", nil, "initiator.member_id = member.id")
163 :add_where{ "initiator.initiative_id = ?", self.id }
164 :add_where{ "initiator.accepted" }
165 :exec()
167 local member_names = {}
168 for i, member in ipairs(members) do
169 member_names[#member_names+1] = member.name
170 end
171 return member_names
172 end

Impressum / About Us