liquid_feedback_core
changeset 21:406090b1ed8e
New snapshot event 'half_freeze' and renamed 'start_of_voting' to 'full_freeze'
author | jbe |
---|---|
date | Sat Feb 06 03:29:05 2010 +0100 (2010-02-06) |
parents | 3625d841da90 |
children | 063baac35f79 |
files | core.sql |
line diff
1.1 --- a/core.sql Sat Feb 06 03:27:32 2010 +0100 1.2 +++ b/core.sql Sat Feb 06 03:29:05 2010 +0100 1.3 @@ -302,9 +302,9 @@ 1.4 COMMENT ON COLUMN "allowed_policy"."default_policy" IS 'One policy per area can be set as default.'; 1.5 1.6 1.7 -CREATE TYPE "snapshot_event" AS ENUM ('periodic', 'end_of_admission', 'start_of_voting'); 1.8 - 1.9 -COMMENT ON TYPE "snapshot_event" IS 'Reason for snapshots: ''periodic'' = due to periodic recalculation, ''end_of_admission'' = saved state at end of admission period, ''start_of_voting'' = saved state at end of verification period'; 1.10 +CREATE TYPE "snapshot_event" AS ENUM ('periodic', 'end_of_admission', 'half_freeze', 'full_freeze'); 1.11 + 1.12 +COMMENT ON TYPE "snapshot_event" IS 'Reason for snapshots: ''periodic'' = due to periodic recalculation, ''end_of_admission'' = saved state at end of admission period, ''half_freeze'' = saved state at end of discussion period, ''full_freeze'' = saved state at end of verification period'; 1.13 1.14 1.15 CREATE TABLE "issue" ( 1.16 @@ -2314,19 +2314,23 @@ 1.17 "event_p" "snapshot_event" ) 1.18 RETURNS VOID 1.19 LANGUAGE 'plpgsql' VOLATILE AS $$ 1.20 + DECLARE 1.21 + "event_v" "issue"."latest_snapshot_event"%TYPE; 1.22 BEGIN 1.23 + SELECT "latest_snapshot_event" INTO "event_v" FROM "issue" 1.24 + WHERE "id" = "issue_id_p" FOR UPDATE; 1.25 UPDATE "issue" SET "latest_snapshot_event" = "event_p" 1.26 WHERE "id" = "issue_id_p"; 1.27 UPDATE "direct_population_snapshot" SET "event" = "event_p" 1.28 - WHERE "issue_id" = "issue_id_p" AND "event" = 'periodic'; 1.29 + WHERE "issue_id" = "issue_id_p" AND "event" = "event_v"; 1.30 UPDATE "delegating_population_snapshot" SET "event" = "event_p" 1.31 - WHERE "issue_id" = "issue_id_p" AND "event" = 'periodic'; 1.32 + WHERE "issue_id" = "issue_id_p" AND "event" = "event_v"; 1.33 UPDATE "direct_interest_snapshot" SET "event" = "event_p" 1.34 - WHERE "issue_id" = "issue_id_p" AND "event" = 'periodic'; 1.35 + WHERE "issue_id" = "issue_id_p" AND "event" = "event_v"; 1.36 UPDATE "delegating_interest_snapshot" SET "event" = "event_p" 1.37 - WHERE "issue_id" = "issue_id_p" AND "event" = 'periodic'; 1.38 + WHERE "issue_id" = "issue_id_p" AND "event" = "event_v"; 1.39 UPDATE "direct_supporter_snapshot" SET "event" = "event_p" 1.40 - WHERE "issue_id" = "issue_id_p" AND "event" = 'periodic'; 1.41 + WHERE "issue_id" = "issue_id_p" AND "event" = "event_v"; 1.42 RETURN; 1.43 END; 1.44 $$; 1.45 @@ -2354,7 +2358,7 @@ 1.46 SELECT * INTO "issue_row" FROM "issue" WHERE "id" = "issue_id_p"; 1.47 SELECT * INTO "policy_row" 1.48 FROM "policy" WHERE "id" = "issue_row"."policy_id"; 1.49 - PERFORM "set_snapshot_event"("issue_id_p", 'start_of_voting'); 1.50 + PERFORM "set_snapshot_event"("issue_id_p", 'full_freeze'); 1.51 UPDATE "issue" SET 1.52 "accepted" = coalesce("accepted", now()), 1.53 "half_frozen" = coalesce("half_frozen", now()), 1.54 @@ -2936,6 +2940,7 @@ 1.55 now() >= "issue_row"."accepted" + "policy_row"."discussion_time" 1.56 ) 1.57 THEN 1.58 + PERFORM "set_snapshot_event"("issue_id_p", 'half_freeze'); 1.59 "issue_row"."half_frozen" = now(); -- NOTE: "issue_row" used later 1.60 UPDATE "issue" SET "half_frozen" = "issue_row"."half_frozen" 1.61 WHERE "id" = "issue_row"."id";