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 (

Impressum / About Us