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",

Impressum / About Us