# HG changeset patch # User bsw # Date 1449235168 -3600 # Node ID 8288027edb5407e328ba6e8634876243143992e3 # Parent ad207be24c7a81e9a278016e29f89dfcbb973a71 Added support for min_admission_time and max_admission_time diff -r ad207be24c7a -r 8288027edb54 app/main/admin/_action/policy_update.lua --- a/app/main/admin/_action/policy_update.lua Tue Dec 01 18:33:06 2015 +0100 +++ b/app/main/admin/_action/policy_update.lua Fri Dec 04 14:19:28 2015 +0100 @@ -3,7 +3,7 @@ param.update( policy, "index", "name", "description", "active", - "admission_time", "discussion_time", "verification_time", "voting_time", + "min_admission_time", "max_admission_time", "discussion_time", "verification_time", "voting_time", "issue_quorum_num", "issue_quorum_den", "initiative_quorum_num", "initiative_quorum_den", "direct_majority_num", "direct_majority_den", "direct_majority_strict", "direct_majority_positive", "direct_majority_non_negative", @@ -11,7 +11,8 @@ "no_reverse_beat_path", "no_multistage_majority", "polling" ) -if policy.admission_time == "" then policy.admission_time = nil end +if policy.min_admission_time == "" then policy.min_admission_time = nil end +if policy.max_admission_time == "" then policy.max_admission_time = nil end if policy.discussion_time == "" then policy.discussion_time = nil end if policy.verification_time == "" then policy.verification_time = nil end if policy.voting_time == "" then policy.voting_time = nil end diff -r ad207be24c7a -r 8288027edb54 app/main/admin/policy_show.lua --- a/app/main/admin/policy_show.lua Tue Dec 01 18:33:06 2015 +0100 +++ b/app/main/admin/policy_show.lua Fri Dec 04 14:19:28 2015 +0100 @@ -32,7 +32,8 @@ ui.field.text{ label = _"Hint", readonly = true, value = _"Interval format:" .. " 3 mons 2 weeks 1 day 10:30:15" } - ui.field.text{ label = _"Admission time", name = "admission_time", value = hint and "30 days" or nil } + ui.field.text{ label = _"Minimum admission time", name = "min_admission_time", value = hint and "0" or nil } + ui.field.text{ label = _"Maximum admission time", name = "min_admission_time", value = hint and "30 days" or nil } ui.field.text{ label = _"Discussion time", name = "discussion_time", value = hint and "30 days" or nil } ui.field.text{ label = _"Verification time", name = "verification_time", value = hint and "15 days" or nil } ui.field.text{ label = _"Voting time", name = "voting_time", value = hint and "15 days" or nil } diff -r ad207be24c7a -r 8288027edb54 app/main/area/show.lua --- a/app/main/area/show.lua Tue Dec 01 18:33:06 2015 +0100 +++ b/app/main/area/show.lua Fri Dec 04 14:19:28 2015 +0100 @@ -31,7 +31,7 @@ local function getOpenIssuesSelector() return area:get_reference_selector("issues") - :add_order_by("coalesce(issue.fully_frozen + issue.voting_time, issue.half_frozen + issue.verification_time, issue.accepted + issue.discussion_time, issue.created + issue.admission_time) - now()") + :add_order_by("coalesce(issue.fully_frozen + issue.voting_time, issue.half_frozen + issue.verification_time, issue.accepted + issue.discussion_time, issue.created + issue.max_admission_time) - now()") end local admission_selector = getOpenIssuesSelector() diff -r ad207be24c7a -r 8288027edb54 app/main/index/_index_member.lua --- a/app/main/index/_index_member.lua Tue Dec 01 18:33:06 2015 +0100 +++ b/app/main/index/_index_member.lua Fri Dec 04 14:19:28 2015 +0100 @@ -31,7 +31,7 @@ for_state = "open", issues_selector = Issue:new_selector() :add_where("issue.closed ISNULL") - :add_order_by("coalesce(issue.fully_frozen + issue.voting_time, issue.half_frozen + issue.verification_time, issue.accepted + issue.discussion_time, issue.created + issue.admission_time) - now()") + :add_order_by("coalesce(issue.fully_frozen + issue.voting_time, issue.half_frozen + issue.verification_time, issue.accepted + issue.discussion_time, issue.created + issue.max_admission_time) - now()") } } diff -r ad207be24c7a -r 8288027edb54 app/main/index/index.lua --- a/app/main/index/index.lua Tue Dec 01 18:33:06 2015 +0100 +++ b/app/main/index/index.lua Fri Dec 04 14:19:28 2015 +0100 @@ -5,7 +5,7 @@ issue.fully_frozen + issue.voting_time, issue.half_frozen + issue.verification_time, issue.accepted + issue.discussion_time, - issue.created + issue.admission_time + issue.created + issue.max_admission_time ) - now() ]]) end diff -r ad207be24c7a -r 8288027edb54 app/main/issue/_filters.lua --- a/app/main/issue/_filters.lua Tue Dec 01 18:33:06 2015 +0100 +++ b/app/main/issue/_filters.lua Fri Dec 04 14:19:28 2015 +0100 @@ -97,7 +97,7 @@ selector:left_join ( "issue_order_in_admission_state", "filter_issue_order", "filter_issue_order.id = issue.id" ) selector:add_order_by ( "issue.closed DESC NULLS FIRST" ) selector:add_order_by ( "issue.accepted ISNULL" ) - selector:add_order_by ( "CASE WHEN issue.accepted ISNULL THEN NULL ELSE justify_interval(coalesce(issue.fully_frozen + issue.voting_time, issue.half_frozen + issue.verification_time, issue.accepted + issue.discussion_time, issue.created + issue.admission_time) - now()) END" ) + selector:add_order_by ( "CASE WHEN issue.accepted ISNULL THEN NULL ELSE justify_interval(coalesce(issue.fully_frozen + issue.voting_time, issue.half_frozen + issue.verification_time, issue.accepted + issue.discussion_time, issue.created + issue.max_admission_time) - now()) END" ) selector:add_order_by ( "CASE WHEN issue.accepted ISNULL THEN " .. admission_order_field .. " ELSE NULL END" ) selector:add_order_by ( "id" ) end diff -r ad207be24c7a -r 8288027edb54 app/main/issue/show.lua --- a/app/main/issue/show.lua Tue Dec 01 18:33:06 2015 +0100 +++ b/app/main/issue/show.lua Fri Dec 04 14:19:28 2015 +0100 @@ -82,7 +82,8 @@ if policy.polling then ui.field.text{ label = _"Admission time", value = _"Implicitly admitted" } else - ui.field.text{ label = _"Admission time", value = format.interval_text(issue.admission_time_text) } + ui.field.text{ label = _"Minimum admission time", value = format.interval_text(issue.min_admission_time_text) } + ui.field.text{ label = _"Maximum admission time", value = format.interval_text(issue.max_admission_time_text) } ui.field.text{ label = _"Issue quorum", value = format.percentage(policy.issue_quorum_num / policy.issue_quorum_den) diff -r ad207be24c7a -r 8288027edb54 app/main/policy/_list.lua --- a/app/main/policy/_list.lua Tue Dec 01 18:33:06 2015 +0100 +++ b/app/main/policy/_list.lua Fri Dec 04 14:19:28 2015 +0100 @@ -55,7 +55,8 @@ if policy.polling then ui.field.text{ label = _"New" .. ":", value = _"without" } else - ui.field.text{ label = _"New" .. ":", value = "≤ " .. format.interval_text(policy.admission_time) } + ui.field.text{ label = _"New" .. ":", value = "≤ min " .. format.interval_text(policy.max_admission_time) } + ui.field.text{ label = _"New" .. ":", value = "≤ max " .. format.interval_text(policy.max_admission_time) } end ui.field.text{ label = _"Discussion" .. ":", value = format.interval_text(policy.discussion_time) or _"variable" } ui.field.text{ label = _"Frozen" .. ":", value = format.interval_text(policy.verification_time) or _"variable" } diff -r ad207be24c7a -r 8288027edb54 app/main/policy/show.lua --- a/app/main/policy/show.lua Tue Dec 01 18:33:06 2015 +0100 +++ b/app/main/policy/show.lua Fri Dec 04 14:19:28 2015 +0100 @@ -9,7 +9,8 @@ if policy.polling then ui.field.text{ label = _"New" .. ":", value = _"without" } else - ui.field.text{ label = _"New" .. ":", value = "≤ " .. policy.admission_time } + ui.field.text{ label = _"New" .. ":", value = "≤ min " .. policy.min_admission_time } + ui.field.text{ label = _"New" .. ":", value = "≤ max " .. policy.max_admission_time } end ui.field.text{ label = _"Discussion" .. ":", value = policy.discussion_time or _"variable" } ui.field.text{ label = _"Frozen" .. ":", value = policy.verification_time or _"variable" } diff -r ad207be24c7a -r 8288027edb54 app/main/unit/show.lua --- a/app/main/unit/show.lua Tue Dec 01 18:33:06 2015 +0100 +++ b/app/main/unit/show.lua Fri Dec 04 14:19:28 2015 +0100 @@ -30,7 +30,7 @@ :join("area", nil, "area.id = issue.area_id") :add_where{ "area.unit_id = ?", unit.id } :add_where("issue.closed ISNULL") - :add_order_by("coalesce(issue.fully_frozen + issue.voting_time, issue.half_frozen + issue.verification_time, issue.accepted + issue.discussion_time, issue.created + issue.admission_time) - now()") + :add_order_by("coalesce(issue.fully_frozen + issue.voting_time, issue.half_frozen + issue.verification_time, issue.accepted + issue.discussion_time, issue.created + issue.max_admission_time) - now()") local closed_issues_selector = Issue:new_selector() :join("area", nil, "area.id = issue.area_id") diff -r ad207be24c7a -r 8288027edb54 model/initiative.lua --- a/model/initiative.lua Tue Dec 01 18:33:06 2015 +0100 +++ b/model/initiative.lua Fri Dec 04 14:19:28 2015 +0100 @@ -244,7 +244,7 @@ function Initiative:getBestInAdmission( args ) local selector = Initiative:getSpecialSelector( args ) selector:add_where( "issue.state = 'admission'" ) - selector:add_order_by( "issue.created + issue.admission_time DESC, id DESC" ) + selector:add_order_by( "issue.created + issue.max_admission_time DESC, id DESC" ) return selector:exec() end diff -r ad207be24c7a -r 8288027edb54 model/issue.lua --- a/model/issue.lua Tue Dec 01 18:33:06 2015 +0100 +++ b/model/issue.lua Fri Dec 04 14:19:28 2015 +0100 @@ -5,11 +5,12 @@ function Issue:new_selector() local selector = new_selector(self) - selector:add_field("justify_interval(admission_time)::text", "admission_time_text") + selector:add_field("justify_interval(min_admission_time)::text", "min_admission_time_text") + selector:add_field("justify_interval(max_admission_time)::text", "max_admission_time_text") selector:add_field("justify_interval(discussion_time)::text", "discussion_time_text") selector:add_field("justify_interval(verification_time)::text", "verification_time_text") selector:add_field("justify_interval(voting_time)::text", "voting_time_text") - selector:add_field("justify_interval(coalesce(issue.fully_frozen + issue.voting_time, issue.half_frozen + issue.verification_time, issue.accepted + issue.discussion_time, issue.created + issue.admission_time) - now())", "state_time_left") + selector:add_field("justify_interval(coalesce(issue.fully_frozen + issue.voting_time, issue.half_frozen + issue.verification_time, issue.accepted + issue.discussion_time, issue.created + issue.max_admission_time) - now())", "state_time_left") selector:add_field("justify_interval(now() - issue.closed)", "closed_ago") return selector end diff -r ad207be24c7a -r 8288027edb54 model/policy.lua --- a/model/policy.lua Tue Dec 01 18:33:06 2015 +0100 +++ b/model/policy.lua Fri Dec 04 14:19:28 2015 +0100 @@ -14,7 +14,8 @@ function Policy:new_selector() local selector = new_selector(self) - selector:add_field("justify_interval(admission_time)::text", "admission_time_text") + selector:add_field("justify_interval(min_admission_time)::text", "min_admission_time_text") + selector:add_field("justify_interval(max_admission_time)::text", "max_admission_time_text") selector:add_field("justify_interval(discussion_time)::text", "discussion_time_text") selector:add_field("justify_interval(verification_time)::text", "verification_time_text") selector:add_field("justify_interval(voting_time)::text", "voting_time_text")