From: Julien Lancelot Date: Thu, 10 Apr 2014 08:50:34 +0000 (+0200) Subject: SONAR-4979 While changing owner of a dashboard and unsharing it, current user is... X-Git-Tag: 4.3~71 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=870b9a0be9b0b0d8415ea3ac2c2f576eb011c6fd;p=sonarqube.git SONAR-4979 While changing owner of a dashboard and unsharing it, current user is still following it --- diff --git a/sonar-core/src/main/java/org/sonar/core/persistence/DatabaseVersion.java b/sonar-core/src/main/java/org/sonar/core/persistence/DatabaseVersion.java index c09affd1af3..d815836f613 100644 --- a/sonar-core/src/main/java/org/sonar/core/persistence/DatabaseVersion.java +++ b/sonar-core/src/main/java/org/sonar/core/persistence/DatabaseVersion.java @@ -33,7 +33,7 @@ import java.util.List; */ public class DatabaseVersion implements BatchComponent, ServerComponent { - public static final int LAST_VERSION = 525; + public static final int LAST_VERSION = 526; public static enum Status { UP_TO_DATE, REQUIRES_UPGRADE, REQUIRES_DOWNGRADE, FRESH_INSTALL diff --git a/sonar-core/src/main/resources/org/sonar/core/persistence/rows-h2.sql b/sonar-core/src/main/resources/org/sonar/core/persistence/rows-h2.sql index 5c2d3bd0be5..0c06c24b650 100644 --- a/sonar-core/src/main/resources/org/sonar/core/persistence/rows-h2.sql +++ b/sonar-core/src/main/resources/org/sonar/core/persistence/rows-h2.sql @@ -224,6 +224,7 @@ INSERT INTO SCHEMA_MIGRATIONS(VERSION) VALUES ('522'); INSERT INTO SCHEMA_MIGRATIONS(VERSION) VALUES ('523'); INSERT INTO SCHEMA_MIGRATIONS(VERSION) VALUES ('524'); INSERT INTO SCHEMA_MIGRATIONS(VERSION) VALUES ('525'); +INSERT INTO SCHEMA_MIGRATIONS(VERSION) VALUES ('526'); INSERT INTO USERS(ID, LOGIN, NAME, EMAIL, CRYPTED_PASSWORD, SALT, CREATED_AT, UPDATED_AT, REMEMBER_TOKEN, REMEMBER_TOKEN_EXPIRES_AT) VALUES (1, 'admin', 'Administrator', '', 'a373a0e667abb2604c1fd571eb4ad47fe8cc0878', '48bc4b0d93179b5103fd3885ea9119498e9d161b', '2011-09-26 22:27:48.0', '2011-09-26 22:27:48.0', null, null); ALTER TABLE USERS ALTER COLUMN ID RESTART WITH 2; diff --git a/sonar-server/src/main/webapp/WEB-INF/app/controllers/dashboards_controller.rb b/sonar-server/src/main/webapp/WEB-INF/app/controllers/dashboards_controller.rb index 6cdcbd952c5..d5f42cf6027 100644 --- a/sonar-server/src/main/webapp/WEB-INF/app/controllers/dashboards_controller.rb +++ b/sonar-server/src/main/webapp/WEB-INF/app/controllers/dashboards_controller.rb @@ -88,6 +88,13 @@ class DashboardsController < ApplicationController if @dashboard.editable_by?(current_user) load_dashboard_from_params(@dashboard) if @dashboard.save + + # SONAR-4979 If the dashboard is no more shared, current user has to unfollow it if he was following it + # unless @dashboard.shared + # active = current_user.active_dashboards.to_a.find { |a| (a.user_id == dashboard_owner.id) && (a.dashboard_id == @dashboard.id)} + # active.destroy if active + # end + render :text => CGI.escapeHTML(params[:resource]), :status => 200 else @dashboard.user = dashboard_owner @@ -162,6 +169,7 @@ class DashboardsController < ApplicationController redirect_to :action => 'index', :resource => params[:resource] end + private def position(offset) diff --git a/sonar-server/src/main/webapp/WEB-INF/db/migrate/526_remove_active_dashboards_linked_on_unshared_dashboards.rb b/sonar-server/src/main/webapp/WEB-INF/db/migrate/526_remove_active_dashboards_linked_on_unshared_dashboards.rb new file mode 100644 index 00000000000..804c2d1c0dd --- /dev/null +++ b/sonar-server/src/main/webapp/WEB-INF/db/migrate/526_remove_active_dashboards_linked_on_unshared_dashboards.rb @@ -0,0 +1,37 @@ +# +# SonarQube, open source software quality management tool. +# Copyright (C) 2008-2014 SonarSource +# mailto:contact AT sonarsource DOT com +# +# SonarQube is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 3 of the License, or (at your option) any later version. +# +# SonarQube is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# + +# +# SonarQube 4.3 +# SONAR-4979 +# +class RemoveActiveDashboardsLinkedOnUnsharedDashboards < ActiveRecord::Migration + + class ActiveDashboard < ActiveRecord::Base + end + + def self.up + ActiveDashboard.reset_column_information + + # Delete every active_dashboards linked on unshared dashboard not owned by the user + ActiveDashboard.delete_all(['dashboard_id in (SELECT d.id FROM dashboards d INNER JOIN active_dashboards ad on ad.dashboard_id=d.id WHERE ad.user_id<>d.user_id AND d.shared=?)', false]) + end + +end