From 1d34081459ce36edc6c8a1f325923f5772d85aa6 Mon Sep 17 00:00:00 2001 From: cgonzalez Date: Mon, 18 Oct 2021 12:12:45 +0100 Subject: [PATCH 1/4] Update analysis schema when a user is promoted to organization owner --- app/models/carto/user_table.rb | 8 ++++---- app/models/user/db_service.rb | 20 ++++++++++++++++++++ 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/app/models/carto/user_table.rb b/app/models/carto/user_table.rb index 9e385d2f2f..5802bfee99 100644 --- a/app/models/carto/user_table.rb +++ b/app/models/carto/user_table.rb @@ -163,6 +163,10 @@ module Carto is_owner?(other_user) ? name : fully_qualified_name end + def fully_qualified_name + "\"#{user.database_schema}\".#{name}" + end + def private? privacy == PRIVACY_PRIVATE end @@ -258,10 +262,6 @@ module Carto self.privacy ||= default_privacy_value end - def fully_qualified_name - "\"#{user.database_schema}\".#{name}" - end - def visualization_readable_by?(user) user && permission && permission.user_has_read_permission?(user) end diff --git a/app/models/user/db_service.rb b/app/models/user/db_service.rb index 633220b10d..59e0bc7aca 100644 --- a/app/models/user/db_service.rb +++ b/app/models/user/db_service.rb @@ -277,6 +277,25 @@ module CartoDB end end + def update_analyses_schema + @user.carto_user.tables.each do |table| + table.dependent_visualizations.each do |visualization| + visualization.analyses.each do |analysis| + analysis.update_table_name( + "#{SCHEMA_PUBLIC}.#{table.name}", + table.fully_qualified_name + ) + end + end + end + rescue StandardError => e + CartoDB.report_exception( + e, + 'Error updating schema of user analyses while moving to own schema', + user: @user.username + ) + end + def create_importer_schema create_schema('cdb_importer') end @@ -1193,6 +1212,7 @@ module CartoDB create_public_db_user set_database_search_path + update_analyses_schema end rescue StandardError => e # Undo metadata changes if process fails From ab6e22127175af567671b334883a55d18dd9963d Mon Sep 17 00:00:00 2001 From: cgonzalez Date: Mon, 18 Oct 2021 12:47:40 +0100 Subject: [PATCH 2/4] Update NEWS.md --- NEWS.md | 1 + 1 file changed, 1 insertion(+) diff --git a/NEWS.md b/NEWS.md index 425aa8d406..fb1c618ddf 100644 --- a/NEWS.md +++ b/NEWS.md @@ -59,6 +59,7 @@ Development - Allow importing datasets with exhausted map quota [#16320](https://github.com/CartoDB/cartodb/pull/16320) - Fix empty ArcGIS imports [#16322](https://github.com/CartoDB/cartodb/pull/16322) - Fix data overwrite when a user is promoted to admin [#16351](https://github.com/CartoDB/cartodb/pull/16351) +- Update analysis schema when a user is promoted to organization owner [#16358](https://github.com/CartoDB/cartodb/pull/16358) - Add setting to disable diagnosis page [#16324](https://github.com/CartoDB/cartodb/pull/16324) - Fix wrong layer schema when creating a map from a shared dataset [#16323](https://github.com/CartoDB/cartodb/pull/16323) - Fix auto guessing when a csv field is wrong [#16326](https://github.com/CartoDB/cartodb/pull/16326) From 27f2b2d8e06d69f00def55b4c2edd4318c262371 Mon Sep 17 00:00:00 2001 From: cgonzalez Date: Thu, 21 Oct 2021 12:55:21 +0100 Subject: [PATCH 3/4] Fix CR issues --- app/models/user/db_service.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/models/user/db_service.rb b/app/models/user/db_service.rb index 59e0bc7aca..cbbd3a51fc 100644 --- a/app/models/user/db_service.rb +++ b/app/models/user/db_service.rb @@ -289,9 +289,9 @@ module CartoDB end end rescue StandardError => e - CartoDB.report_exception( - e, - 'Error updating schema of user analyses while moving to own schema', + Rails.logger.error( + exception: e, + message: 'Error updating schema of user analyses while moving to own schema', user: @user.username ) end From e8f2592570577b307ec6e34b0164dc43b6afcf13 Mon Sep 17 00:00:00 2001 From: cgonzalez Date: Mon, 25 Oct 2021 12:34:24 +0100 Subject: [PATCH 4/4] Fixing promoting process --- app/models/carto/user_table.rb | 8 ++++---- app/models/user/db_service.rb | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/app/models/carto/user_table.rb b/app/models/carto/user_table.rb index 5802bfee99..9e385d2f2f 100644 --- a/app/models/carto/user_table.rb +++ b/app/models/carto/user_table.rb @@ -163,10 +163,6 @@ module Carto is_owner?(other_user) ? name : fully_qualified_name end - def fully_qualified_name - "\"#{user.database_schema}\".#{name}" - end - def private? privacy == PRIVACY_PRIVATE end @@ -262,6 +258,10 @@ module Carto self.privacy ||= default_privacy_value end + def fully_qualified_name + "\"#{user.database_schema}\".#{name}" + end + def visualization_readable_by?(user) user && permission && permission.user_has_read_permission?(user) end diff --git a/app/models/user/db_service.rb b/app/models/user/db_service.rb index cbbd3a51fc..70dcaed0b5 100644 --- a/app/models/user/db_service.rb +++ b/app/models/user/db_service.rb @@ -283,7 +283,7 @@ module CartoDB visualization.analyses.each do |analysis| analysis.update_table_name( "#{SCHEMA_PUBLIC}.#{table.name}", - table.fully_qualified_name + "\"#{@user.database_schema}\".#{table.name}" ) end end