liquid_feedback_core
diff core.sql @ 458:fae00a5c1c71
Absolute first supporter quorum (in addition to admission_rule/holdoff_time mechanism)
author | jbe |
---|---|
date | Sat Dec 12 11:53:36 2015 +0100 (2015-12-12) |
parents | ca21a3f49e4c |
children | 003b4cc8e9ef |
line diff
1.1 --- a/core.sql Fri Dec 11 23:44:02 2015 +0100 1.2 +++ b/core.sql Sat Dec 12 11:53:36 2015 +0100 1.3 @@ -366,6 +366,7 @@ 1.4 "discussion_time" INTERVAL, 1.5 "verification_time" INTERVAL, 1.6 "voting_time" INTERVAL, 1.7 + "issue_quorum" INT4 NOT NULL, 1.8 "initiative_quorum_num" INT4 NOT NULL, 1.9 "initiative_quorum_den" INT4 NOT NULL, 1.10 "defeat_strength" "defeat_strength" NOT NULL DEFAULT 'tuple', 1.11 @@ -382,6 +383,8 @@ 1.12 "indirect_majority_non_negative" INT4 NOT NULL DEFAULT 0, 1.13 "no_reverse_beat_path" BOOLEAN NOT NULL DEFAULT FALSE, 1.14 "no_multistage_majority" BOOLEAN NOT NULL DEFAULT FALSE, 1.15 + CONSTRAINT "issue_quorum_if_and_only_if_not_polling" CHECK ( 1.16 + "polling" = ("issue_quorum" ISNULL) ), 1.17 CONSTRAINT "timing" CHECK ( 1.18 ( "polling" = FALSE AND 1.19 "min_admission_time" NOTNULL AND "max_admission_time" NOTNULL AND 1.20 @@ -414,7 +417,8 @@ 1.21 COMMENT ON COLUMN "policy"."discussion_time" IS 'Duration of issue state ''discussion''; Regular time until an issue is "half_frozen" after being "accepted"'; 1.22 COMMENT ON COLUMN "policy"."verification_time" IS 'Duration of issue state ''verification''; Regular time until an issue is "fully_frozen" (e.g. entering issue state ''voting'') after being "half_frozen"'; 1.23 COMMENT ON COLUMN "policy"."voting_time" IS 'Duration of issue state ''voting''; Time after an issue is "fully_frozen" but not "closed" (duration of issue state ''voting'')'; 1.24 -COMMENT ON COLUMN "policy"."initiative_quorum_num" IS 'Numerator of satisfied supporter quorum to be reached by an initiative to be "admitted" for voting'; 1.25 +COMMENT ON COLUMN "policy"."issue_quorum" IS 'Minimum number of supporters needed for one initiative of an issue to allow the issue to pass from ''admission'' to ''discussion'' state (Note: further requirements apply, see tables "admission_rule" and "admission_rule_condition")'; 1.26 +COMMENT ON COLUMN "policy"."initiative_quorum_num" IS 'Numerator of satisfied supporter quorum to be reached by an initiative to be "admitted" for voting'; 1.27 COMMENT ON COLUMN "policy"."initiative_quorum_den" IS 'Denominator of satisfied supporter quorum to be reached by an initiative to be "admitted" for voting'; 1.28 COMMENT ON COLUMN "policy"."defeat_strength" IS 'How pairwise defeats are measured for the Schulze method; see type "defeat_strength"; ''tuple'' is the recommended setting'; 1.29 COMMENT ON COLUMN "policy"."tie_breaking" IS 'Tie-breaker for the Schulze method; see type "tie_breaking"; ''variant1'' or ''variant2'' are recommended'; 1.30 @@ -4628,16 +4632,12 @@ 1.31 FROM "policy" WHERE "id" = "issue_row"."policy_id"; 1.32 IF 1.33 ( now() >= 1.34 - "issue_row"."created" + "issue_row"."min_admission_time" ) --AND 1.35 + "issue_row"."created" + "issue_row"."min_admission_time" ) AND 1.36 -- TODO: implement new mechanism for issue admission 1.37 - -- 1.38 - --EXISTS ( 1.39 - -- SELECT NULL FROM "initiative" 1.40 - -- WHERE "issue_id" = "issue_id_p" 1.41 - -- AND "supporter_count" > 0 1.42 - -- AND "supporter_count" * "policy_row"."issue_quorum_den" 1.43 - -- >= "issue_row"."population" * "policy_row"."issue_quorum_num" 1.44 - --) 1.45 + EXISTS ( 1.46 + SELECT NULL FROM "initiative" WHERE "issue_id" = "issue_id_p" 1.47 + AND "supporter_count" >= "policy_row"."issue_quorum" 1.48 + ) 1.49 THEN 1.50 UPDATE "issue" SET 1.51 "state" = 'discussion',