From aa06a99982a0df339b0335a106631d9d75975eda Mon Sep 17 00:00:00 2001 From: Tom Willemse Date: Sun, 18 Aug 2013 16:55:56 +0200 Subject: [PATCH] Fix priorities for tasks When setting and changing priorities no attention was paid to the `story_id', which means that no two tasks could have the same priority, even when belonging to other stories. This creates a weird situation where the tasks of a certain story would become unmanageable because there are gaps between the priorities. This could make it seem like priority changing was impossible. --- data.lisp | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/data.lisp b/data.lisp index a9edc27..03b9dcb 100644 --- a/data.lisp +++ b/data.lisp @@ -85,7 +85,9 @@ 'task :description description :priority (+ 1 (query (:select (:coalesce (:max 'priority) 0) - :from 'task) :single)) + :from 'task + :where (:= 'story-id story-id)) + :single)) :reporter reporter :story-id (parse-integer story-id) :assignee ""))) (save-dao obj))) @@ -102,8 +104,18 @@ :single)) (next-priority (funcall (ecase dir (:up #'-) (:down #'+)) current-priority 1)) - (max-priority (query (:select (:max 'priority) :from type) - :single))) + (max-priority + (case type + ('story (query (:select (:max 'priority) :from type) + :single)) + ('task + (query (:select + (:max 'priority) :from type + :where (:= 'story-id + (:select 'story-id + :from 'task + :where (:= 'id id)))) + :single))))) (execute (:update type :set 'priority current-priority :where (:= 'priority next-priority))) (execute (:update type :set