liquid_feedback_frontend
diff model/issue.lua @ 547:57a261a81c5a
Added preloading to issue list
author | bsw |
---|---|
date | Tue May 29 20:43:27 2012 +0200 (2012-05-29) |
parents | 5ca9de94cb13 |
children | 8af806af86a0 |
line diff
1.1 --- a/model/issue.lua Sun May 27 23:08:33 2012 +0200 1.2 +++ b/model/issue.lua Tue May 29 20:43:27 2012 +0200 1.3 @@ -113,10 +113,10 @@ 1.4 to = mondelefant.class_prototype, 1.5 this_key = "id", 1.6 that_key = "issue_id", 1.7 - ref = "delegation_info", 1.8 + ref = "member_info", 1.9 back_ref = "issue", 1.10 selector_generator = function(list, options) 1.11 - assert(options.member_id, "member_id mandatory for delegation_info") 1.12 + assert(options.member_id, "member_id mandatory for member_info") 1.13 local ids = { sep = ", " } 1.14 for i, object in ipairs(list) do 1.15 local id = object.id 1.16 @@ -134,34 +134,26 @@ 1.17 sub_selector:add_where{ 'issue.id IN ($)', ids } 1.18 1.19 local selector = Issue:get_db_conn():new_selector() 1.20 - selector:add_from(sub_selector, "delegation_info") 1.21 + selector:add_from("issue") 1.22 + selector:join(sub_selector, "delegation_info", "delegation_info.issue_id = issue.id") 1.23 selector:left_join("member", "first_trustee", "first_trustee.id = delegation_info.first_trustee_id") 1.24 selector:left_join("member", "other_trustee", "other_trustee.id = delegation_info.other_trustee_id") 1.25 selector:add_field("delegation_info.*") 1.26 selector:add_field("first_trustee.name", "first_trustee_name") 1.27 selector:add_field("other_trustee.name", "other_trustee_name") 1.28 + selector:left_join("direct_voter", nil, { "direct_voter.issue_id = issue.id AND direct_voter.member_id = ?", options.member_id }) 1.29 + selector:add_field("direct_voter.member_id NOTNULL", "direct_voted") 1.30 return selector 1.31 end 1.32 } 1.33 1.34 -function Issue.list:load_delegation_info_once_for_member_id(member_id, trustee_id) 1.35 - if self._delegation_info_loaded_for_member_id ~= member_id then 1.36 - self:load("delegation_info", { member_id = member_id, trustee_id = trustee_id }) 1.37 - for i, issue in ipairs(self) do 1.38 - issue._delegation_info_loaded_for_member_id = member_id 1.39 - end 1.40 - self._delegation_info_loaded_for_member_id = member_id 1.41 - end 1.42 +function Issue.list:load_everything_for_member_id(member_id) 1.43 + local areas = self:load("area") 1.44 + areas:load("unit") 1.45 + self:load("policy") 1.46 + self:load("member_info", { member_id = member_id }) 1.47 end 1.48 1.49 -function Issue.object:load_delegation_info_once_for_member_id(member_id, trustee_id) 1.50 - if self._delegation_info_loaded_for_member_id ~= member_id then 1.51 - self:load("delegation_info", { member_id = member_id, trustee_id = trustee_id }) 1.52 - self._delegation_info_loaded_for_member_id = member_id 1.53 - end 1.54 -end 1.55 - 1.56 - 1.57 function Issue:get_state_name_for_state(value) 1.58 local state_name_table = { 1.59 new = _"New",