User name display

If there is a display name, it will be used in all views (task lists,
task details, comments).

Made a view for task lists, because it was cleaner and because they're
all more or less the same anyway.
This commit is contained in:
Emmanuel BENOîT 2012-02-06 08:55:33 +01:00
parent b37265d0eb
commit ad4071b4e8
3 changed files with 73 additions and 80 deletions

View file

@ -76,3 +76,36 @@ EXCEPTION
RETURN 2;
END;
$update_task$ LANGUAGE plpgsql;
--
-- Task list view
--
-- This view contains all fields used to display task lists.
--
DROP VIEW IF EXISTS tasks_list;
CREATE VIEW tasks_list
AS SELECT t.task_id AS id, t.item_id AS item, t.task_title AS title,
t.task_description AS description, t.task_added AS added_at,
u1.user_view_name AS added_by,
ct.completed_task_time AS completed_at,
u2.user_view_name AS completed_by ,
t.task_priority AS priority ,
bd.bad_deps AS missing_dependencies
FROM tasks t
INNER JOIN users_view u1 ON u1.user_id = t.user_id
LEFT OUTER JOIN completed_tasks ct ON ct.task_id = t.task_id
LEFT OUTER JOIN users_view u2 ON u2.user_id = ct.user_id
LEFT OUTER JOIN (
SELECT td.task_id , COUNT(*) AS bad_deps
FROM task_dependencies td
LEFT OUTER JOIN completed_tasks dct
ON dct.task_id = td.task_id_depends
WHERE dct.task_id IS NULL
GROUP BY td.task_id
) AS bd ON bd.task_id = t.task_id;
GRANT SELECT ON tasks_list TO :webapp_user;

View file

@ -23,3 +23,21 @@ $users_add$;
REVOKE EXECUTE ON FUNCTION users_add( TEXT , TEXT , INT , TEXT , TEXT ) FROM PUBLIC;
GRANT EXECUTE ON FUNCTION users_add( TEXT , TEXT , INT , TEXT , TEXT) TO :webapp_user;
--
-- View that lists users and adds the string to use when displaying
--
DROP VIEW IF EXISTS users_view;
CREATE VIEW users_view
AS SELECT * , ( CASE
WHEN user_display_name IS NULL THEN
user_email
ELSE
user_display_name
END ) AS user_view_name
FROM users;
GRANT SELECT ON users_view TO :webapp_user;