liquid_feedback_core
changeset 290:2301a1f2acfa
Modified function "forbid_changes_on_closed_issue_trigger" to allow voting comments to be changed after voting has finished
author | jbe |
---|---|
date | Sun Aug 19 23:37:37 2012 +0200 (2012-08-19) |
parents | f2292b94fc58 |
children | 86f231bd6906 |
files | core.sql update/core-update.v2.0.11-v2.1.0.sql |
line diff
1.1 --- a/core.sql Sun Aug 19 23:32:26 2012 +0200 1.2 +++ b/core.sql Sun Aug 19 23:37:37 2012 +0200 1.3 @@ -1576,6 +1576,15 @@ 1.4 "issue_id_v" "issue"."id"%TYPE; 1.5 "issue_row" "issue"%ROWTYPE; 1.6 BEGIN 1.7 + IF TG_RELID = 'direct_voter'::regclass AND TG_OP = 'UPDATE' THEN 1.8 + IF 1.9 + OLD."issue_id" = NEW."issue_id" AND 1.10 + OLD."member_id" = NEW."member_id" AND 1.11 + OLD."weight" = NEW."weight" 1.12 + THEN 1.13 + RETURN NULL; -- allows changing of voter comment 1.14 + END IF; 1.15 + END IF; 1.16 IF TG_OP = 'DELETE' THEN 1.17 "issue_id_v" := OLD."issue_id"; 1.18 ELSE
2.1 --- a/update/core-update.v2.0.11-v2.1.0.sql Sun Aug 19 23:32:26 2012 +0200 2.2 +++ b/update/core-update.v2.0.11-v2.1.0.sql Sun Aug 19 23:37:37 2012 +0200 2.3 @@ -161,6 +161,36 @@ 2.4 COMMENT ON FUNCTION "voter_comment_fields_only_set_when_voter_comment_is_set_trigger"() IS 'Implementation of trigger "voter_comment_fields_only_set_when_voter_comment_is_set" ON table "direct_voter"'; 2.5 COMMENT ON TRIGGER "voter_comment_fields_only_set_when_voter_comment_is_set" ON "direct_voter" IS 'If "comment" is set to NULL, then other comment related fields are also set to NULL.'; 2.6 2.7 +CREATE OR REPLACE FUNCTION "forbid_changes_on_closed_issue_trigger"() 2.8 + RETURNS TRIGGER 2.9 + LANGUAGE 'plpgsql' VOLATILE AS $$ 2.10 + DECLARE 2.11 + "issue_id_v" "issue"."id"%TYPE; 2.12 + "issue_row" "issue"%ROWTYPE; 2.13 + BEGIN 2.14 + IF TG_RELID = 'direct_voter'::regclass AND TG_OP = 'UPDATE' THEN 2.15 + IF 2.16 + OLD."issue_id" = NEW."issue_id" AND 2.17 + OLD."member_id" = NEW."member_id" AND 2.18 + OLD."weight" = NEW."weight" 2.19 + THEN 2.20 + RETURN NULL; -- allows changing of voter comment 2.21 + END IF; 2.22 + END IF; 2.23 + IF TG_OP = 'DELETE' THEN 2.24 + "issue_id_v" := OLD."issue_id"; 2.25 + ELSE 2.26 + "issue_id_v" := NEW."issue_id"; 2.27 + END IF; 2.28 + SELECT INTO "issue_row" * FROM "issue" 2.29 + WHERE "id" = "issue_id_v" FOR SHARE; 2.30 + IF "issue_row"."closed" NOTNULL THEN 2.31 + RAISE EXCEPTION 'Tried to modify data belonging to a closed issue.'; 2.32 + END IF; 2.33 + RETURN NULL; 2.34 + END; 2.35 + $$; 2.36 + 2.37 CREATE OR REPLACE FUNCTION "close_voting"("issue_id_p" "issue"."id"%TYPE) 2.38 RETURNS VOID 2.39 LANGUAGE 'plpgsql' VOLATILE AS $$