liquid_feedback_core

diff core.sql @ 322:fd58f487e1d0

Calculate "harmonc_weight" after all other calculations in an issue (as calculation depends on the "admitted" flag now)
author jbe
date Fri Feb 08 19:20:17 2013 +0100 (2013-02-08)
parents 48a5036d5eb1
children 4c7a864829b0
line diff
     1.1 --- a/core.sql	Fri Feb 08 18:36:22 2013 +0100
     1.2 +++ b/core.sql	Fri Feb 08 19:20:17 2013 +0100
     1.3 @@ -3773,9 +3773,7 @@
     1.4              )
     1.5              WHERE "suggestion"."id" = "suggestion_id_v";
     1.6          END LOOP;
     1.7 -        PERFORM "set_harmonic_suggestion_weights"("initiative_id_v");
     1.8        END LOOP;
     1.9 -      PERFORM "set_harmonic_initiative_weights"("issue_id_p");
    1.10        RETURN;
    1.11      END;
    1.12    $$;
    1.13 @@ -3896,6 +3894,9 @@
    1.14      BEGIN
    1.15        PERFORM "create_snapshot"("issue_id_p");
    1.16        PERFORM "freeze_after_snapshot"("issue_id_p");
    1.17 +      PERFORM "set_harmonic_initiative_weights"("issue_id_p");
    1.18 +      PERFORM "set_harmonic_suggestion_weights"("id")
    1.19 +        FROM "initiative" WHERE "issue_id" = "issue_id_p";
    1.20        RETURN;
    1.21      END;
    1.22    $$;
    1.23 @@ -4420,8 +4421,9 @@
    1.24    RETURNS VOID
    1.25    LANGUAGE 'plpgsql' VOLATILE AS $$
    1.26      DECLARE
    1.27 -      "issue_row"         "issue"%ROWTYPE;
    1.28 -      "policy_row"        "policy"%ROWTYPE;
    1.29 +      "issue_row"      "issue"%ROWTYPE;
    1.30 +      "policy_row"     "policy"%ROWTYPE;
    1.31 +      "new_snapshot_v" BOOLEAN;
    1.32      BEGIN
    1.33        PERFORM "lock_issue"("issue_id_p");
    1.34        SELECT * INTO "issue_row" FROM "issue" WHERE "id" = "issue_id_p";
    1.35 @@ -4432,7 +4434,10 @@
    1.36          -- create a snapshot, unless issue is already fully frozen:
    1.37          IF "issue_row"."fully_frozen" ISNULL THEN
    1.38            PERFORM "create_snapshot"("issue_id_p");
    1.39 +          "new_snapshot_v" := TRUE;
    1.40            SELECT * INTO "issue_row" FROM "issue" WHERE "id" = "issue_id_p";
    1.41 +        ELSE
    1.42 +          "new_snapshot_v" := FALSE;
    1.43          END IF;
    1.44          -- eventually close or accept issues, which have not been accepted:
    1.45          IF "issue_row"."accepted" ISNULL THEN
    1.46 @@ -4540,6 +4545,12 @@
    1.47            -- calculate ranks will not consume much time and can be done now
    1.48            PERFORM "calculate_ranks"("issue_id_p");
    1.49          END IF;
    1.50 +        -- if a new shapshot has been created, then recalculate harmonic weights:
    1.51 +        IF "new_snapshot_v" THEN
    1.52 +          PERFORM "set_harmonic_initiative_weights"("issue_id_p");
    1.53 +          PERFORM "set_harmonic_suggestion_weights"("id")
    1.54 +            FROM "initiative" WHERE "issue_id" = "issue_id_p";
    1.55 +        END IF;
    1.56        END IF;
    1.57        RETURN;
    1.58      END;

Impressum / About Us