liquid_feedback_frontend
diff model/issue.lua @ 1045:701a5cf6b067
Imported LiquidFeedback Frontend 3.0 branch
author | bsw |
---|---|
date | Thu Jul 10 01:19:48 2014 +0200 (2014-07-10) |
parents | 4ea14823ffad |
children | ebb3c5fa158d |
line diff
1.1 --- a/model/issue.lua Thu Jul 10 01:02:43 2014 +0200 1.2 +++ b/model/issue.lua Thu Jul 10 01:19:48 2014 +0200 1.3 @@ -142,23 +142,29 @@ 1.4 if #ids == 0 then 1.5 return sub_selector:empty_list_mode() 1.6 end 1.7 - sub_selector:from("issue") 1.8 - sub_selector:add_field("issue.id", "issue_id") 1.9 - sub_selector:add_field{ '(delegation_info(?, null, null, issue.id, ?)).*', options.member_id, options.trustee_id } 1.10 - sub_selector:add_where{ 'issue.id IN ($)', ids } 1.11 + sub_selector:from ( "issue" ) 1.12 + sub_selector:add_field ( "issue.id", "issue_id" ) 1.13 + sub_selector:add_field { '(delegation_info(?, null, null, issue.id, ?)).*', options.member_id, options.trustee_id } 1.14 + sub_selector:add_where { 'issue.id IN ($)', ids } 1.15 1.16 local selector = Issue:get_db_conn():new_selector() 1.17 - selector:add_from("issue") 1.18 - selector:join(sub_selector, "delegation_info", "delegation_info.issue_id = issue.id") 1.19 - selector:left_join("member", "first_trustee", "first_trustee.id = delegation_info.first_trustee_id") 1.20 - selector:left_join("member", "other_trustee", "other_trustee.id = delegation_info.other_trustee_id") 1.21 - selector:add_field("delegation_info.*") 1.22 - selector:add_field("first_trustee.name", "first_trustee_name") 1.23 - selector:add_field("other_trustee.name", "other_trustee_name") 1.24 - selector:left_join("direct_voter", nil, { "direct_voter.issue_id = issue.id AND direct_voter.member_id = ?", options.member_id }) 1.25 - selector:add_field("direct_voter.member_id NOTNULL", "direct_voted") 1.26 - selector:left_join("non_voter", nil, { "non_voter.issue_id = issue.id AND non_voter.member_id = ?", options.member_id }) 1.27 - selector:add_field("non_voter.member_id NOTNULL", "non_voter") 1.28 + selector:add_from ( "issue" ) 1.29 + selector:join(sub_selector, "delegation_info", "delegation_info.issue_id = issue.id" ) 1.30 + selector:left_join ( "member", "first_trustee", "first_trustee.id = delegation_info.first_trustee_id" ) 1.31 + selector:left_join ( "member", "other_trustee", "other_trustee.id = delegation_info.other_trustee_id" ) 1.32 + selector:add_field ( "delegation_info.*" ) 1.33 + selector:add_field ( "first_trustee.name", "first_trustee_name" ) 1.34 + selector:add_field ( "other_trustee.name", "other_trustee_name" ) 1.35 + selector:left_join ( "direct_voter", nil, { "direct_voter.issue_id = issue.id AND direct_voter.member_id = ?", options.member_id }) 1.36 + selector:add_field ( "direct_voter.member_id NOTNULL", "direct_voted") 1.37 + selector:left_join ( "non_voter", nil, { "non_voter.issue_id = issue.id AND non_voter.member_id = ?", options.member_id }) 1.38 + selector:add_field ( "non_voter.member_id NOTNULL", "non_voter" ) 1.39 + selector:left_join ( "direct_interest_snapshot", nil, { [[ 1.40 + direct_interest_snapshot.issue_id = issue.id AND 1.41 + direct_interest_snapshot.event = issue.latest_snapshot_event AND 1.42 + direct_interest_snapshot.member_id = ? 1.43 + ]], options.member_id }) 1.44 + selector:add_field ( "direct_interest_snapshot.weight", "weight" ) 1.45 return selector 1.46 end 1.47 } 1.48 @@ -189,19 +195,19 @@ 1.49 1.50 function Issue:get_state_name_for_state(value) 1.51 local state_name_table = { 1.52 - admission = _"New", 1.53 + admission = _"Admission", 1.54 discussion = _"Discussion", 1.55 - verification = _"Frozen", 1.56 + verification = _"Verification", 1.57 voting = _"Voting", 1.58 - canceled_revoked_before_accepted = _"Canceled (before accepted due to revocation)", 1.59 - canceled_issue_not_accepted = _"Canceled (issue not accepted)", 1.60 - canceled_after_revocation_during_discussion = _"Canceled (during discussion due to revocation)", 1.61 - canceled_after_revocation_during_verification = _"Canceled (during verification due to revocation)", 1.62 + canceled_revoked_before_accepted = _"Revoked (during admission)", 1.63 + canceled_issue_not_accepted = _"Failed 1st quorum", 1.64 + canceled_after_revocation_during_discussion = _"Revoked (during discussion)", 1.65 + canceled_after_revocation_during_verification = _"Revoked (during verification)", 1.66 canceled_by_admin = _"Canceled by administrative intervention", 1.67 calculation = _"Calculation", 1.68 - canceled_no_initiative_admitted = _"Canceled (no initiative admitted)", 1.69 - finished_without_winner = _"Finished (without winner)", 1.70 - finished_with_winner = _"Finished (with winner)", 1.71 + canceled_no_initiative_admitted = _"All initiatives failed 2nd quorum", 1.72 + finished_without_winner = _"Disapproved", 1.73 + finished_with_winner = _"Finished with winner", 1.74 } 1.75 return state_name_table[value] or value or '' 1.76 end 1.77 @@ -275,3 +281,17 @@ 1.78 function Issue.object_get:etherpad_url() 1.79 return config.etherpad.base_url .. "p/" .. config.etherpad.group_id .. "$Issue" .. self.id 1.80 end 1.81 + 1.82 +function Issue.object_get:name() 1.83 + return self.policy.name .. " #" .. self.id 1.84 +end 1.85 + 1.86 +function Issue.object_get:state_time_text() 1.87 + if self.closed then 1.88 + return _("#{closed_ago} ago", { closed_ago = self.closed_ago }) 1.89 + elseif string.sub(self.state_time_left, 1, 2) ~= "-" then 1.90 + return _("ends soon", { state_time_left = self.state_time_left }) 1.91 + else 1.92 + return _("ends in #{state_time_left}", { state_time_left = self.state_time_left }) 1.93 + end 1.94 +end