liquid_feedback_core
changeset 241:8d2d92e83605
Function "delegation_chain" returns unknown participation for other members during voting
author | jbe |
---|---|
date | Thu May 10 13:55:35 2012 +0200 (2012-05-10) |
parents | 1930aaf3cad5 |
children | 0c5ddf9b4b20 |
files | core.sql |
line diff
1.1 --- a/core.sql Thu May 10 03:09:58 2012 +0200 1.2 +++ b/core.sql Thu May 10 13:55:35 2012 +0200 1.3 @@ -2400,6 +2400,7 @@ 1.4 "scope_v" "delegation_scope"; 1.5 "unit_id_v" "unit"."id"%TYPE; 1.6 "area_id_v" "area"."id"%TYPE; 1.7 + "issue_row" "issue"%ROWTYPE; 1.8 "visited_member_ids" INT4[]; -- "member"."id"%TYPE[] 1.9 "loop_member_id_v" "member"."id"%TYPE; 1.10 "output_row" "delegation_chain_row"; 1.11 @@ -2431,6 +2432,8 @@ 1.12 "issue_id_p" NOTNULL 1.13 THEN 1.14 "scope_v" := 'issue'; 1.15 + SELECT INTO "issue_row" * FROM "issue" 1.16 + WHERE "id" = "issue_id_p"; 1.17 SELECT "area_id" INTO "area_id_v" 1.18 FROM "issue" WHERE "id" = "issue_id_p"; 1.19 SELECT "unit_id" INTO "unit_id_v" 1.20 @@ -2455,7 +2458,9 @@ 1.21 "visited_member_ids" := 1.22 "visited_member_ids" || "output_row"."member_id"; 1.23 END IF; 1.24 - IF "output_row"."participation" THEN 1.25 + IF "output_row"."participation" ISNULL THEN 1.26 + "output_row"."overridden" := NULL; 1.27 + ELSIF "output_row"."participation" THEN 1.28 "output_row"."overridden" := TRUE; 1.29 END IF; 1.30 "output_row"."scope_in" := "output_row"."scope_out"; 1.31 @@ -2484,11 +2489,23 @@ 1.32 ) 1.33 ORDER BY "scope" DESC; 1.34 ELSIF "scope_v" = 'issue' THEN 1.35 - "output_row"."participation" := EXISTS ( 1.36 - SELECT NULL FROM "interest" 1.37 - WHERE "issue_id" = "issue_id_p" 1.38 - AND "member_id" = "output_row"."member_id" 1.39 - ); 1.40 + IF "issue_row"."fully_frozen" ISNULL THEN 1.41 + "output_row"."participation" := EXISTS ( 1.42 + SELECT NULL FROM "interest" 1.43 + WHERE "issue_id" = "issue_id_p" 1.44 + AND "member_id" = "output_row"."member_id" 1.45 + ); 1.46 + ELSE 1.47 + IF "output_row"."member_id" = "member_id_p" THEN 1.48 + "output_row"."participation" := EXISTS ( 1.49 + SELECT NULL FROM "direct_voter" 1.50 + WHERE "issue_id" = "issue_id_p" 1.51 + AND "member_id" = "output_row"."member_id" 1.52 + ); 1.53 + ELSE 1.54 + "output_row"."participation" := NULL; 1.55 + END IF; 1.56 + END IF; 1.57 SELECT * INTO "delegation_row" FROM "delegation" 1.58 WHERE "truster_id" = "output_row"."member_id" 1.59 AND (