From 6355ec221d966e4b21c5174598ab68fde92ea6d5 Mon Sep 17 00:00:00 2001 From: bsatoriu Date: Wed, 4 Sep 2024 05:54:06 -0700 Subject: [PATCH] Add membership updates to Org put endpoint --- api/endpoints/organizations.py | 23 ++++++++++++++++------- sql/materialized_views/org_tree.sql | 13 +++++++++++-- 2 files changed, 27 insertions(+), 9 deletions(-) diff --git a/api/endpoints/organizations.py b/api/endpoints/organizations.py index 8ff9e4b..d20498e 100644 --- a/api/endpoints/organizations.py +++ b/api/endpoints/organizations.py @@ -123,12 +123,6 @@ def post(self): db.session.add(new_org) db.session.commit() - # Update membership - db.session.execute( - db.delete(OrganizationMembership_db).filter_by(org_id=new_org.id) - ) - db.session.commit() - org_members = [] members = req_data.get("members", []) for org_member in members: @@ -186,11 +180,26 @@ def put(self, org_id): return err_response(msg="No org found with id " + org_id) org.name = req_data.get("name", org.name) - org.parent_id = req_data.get("parent_id", org.parent_id) + org.parent_id = req_data.get("parent_org_id", org.parent_id) org.default_job_limit_count = req_data.get("default_job_limit_count", org.default_job_limit_count) org.default_job_limit_hours = req_data.get("default_job_limit_hours", org.default_job_limit_hours) db.session.commit() + # Update membership + db.session.execute( + db.delete(OrganizationMembership_db).filter_by(org_id=org_id) + ) + db.session.commit() + + org_members = [] + members = req_data.get("members", []) + for org_member in members: + org_members.append(OrganizationMembership_db(member_id=org_member['member_id'], org_id=org_id, org_maintainer=org_member['maintainer'], creation_date=datetime.utcnow())) + + if len(org_members) > 0: + db.session.add_all(org_members) + db.session.commit() + org_schema = OrganizationSchema() return json.loads(org_schema.dumps(org)) diff --git a/sql/materialized_views/org_tree.sql b/sql/materialized_views/org_tree.sql index 069c57d..a90019a 100644 --- a/sql/materialized_views/org_tree.sql +++ b/sql/materialized_views/org_tree.sql @@ -1,3 +1,7 @@ +create view org_tree + (row_number, member_count, depth, id, name, parent_org_id, default_job_limit_count, default_job_limit_hours, + creation_date) +as WITH RECURSIVE node_rec AS (SELECT 1 AS row_count, 0 AS member_count, @@ -30,8 +34,13 @@ WITH RECURSIVE node_rec.depth, node_rec.id, node_rec.name, + node_rec.parent_org_id, node_rec.default_job_limit_count, - node_rec.default_job_limit_hours + node_rec.default_job_limit_hours, + node_rec.creation_date FROM node_rec WHERE node_rec.parent_org_id IS NOT NULL - ORDER BY node_rec.path, node_rec.name \ No newline at end of file + ORDER BY node_rec.path, node_rec.name; + +alter table org_tree + owner to postgres; \ No newline at end of file