]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-4979 While changing owner of a dashboard and unsharing it, current user is...
authorJulien Lancelot <julien.lancelot@sonarsource.com>
Thu, 10 Apr 2014 08:50:34 +0000 (10:50 +0200)
committerJulien Lancelot <julien.lancelot@sonarsource.com>
Thu, 10 Apr 2014 08:50:42 +0000 (10:50 +0200)
sonar-core/src/main/java/org/sonar/core/persistence/DatabaseVersion.java
sonar-core/src/main/resources/org/sonar/core/persistence/rows-h2.sql
sonar-server/src/main/webapp/WEB-INF/app/controllers/dashboards_controller.rb
sonar-server/src/main/webapp/WEB-INF/db/migrate/526_remove_active_dashboards_linked_on_unshared_dashboards.rb [new file with mode: 0644]

index c09affd1af39cc0fba5aa50e398fb0e686a138f2..d815836f613ffe3d5f47324288debf0061bd10e2 100644 (file)
@@ -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
index 5c2d3bd0be500925caee5510e5dacfca2517ab23..0c06c24b650d79511c3978afdaccda26859e8467 100644 (file)
@@ -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;
index 6cdcbd952c515f0290004a33e134335ed429e483..d5f42cf60271d9d099fe1f7ec7889e700c8f8f8d 100644 (file)
@@ -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 (file)
index 0000000..804c2d1
--- /dev/null
@@ -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