Просмотр исходного кода

Moved from User.update_default_preferences_by_role to User.update_default_preferences_by_permission (if somebody has renamed role names).

Martin Edenhofer 8 лет назад
Родитель
Сommit
146bd7f9d4

+ 37 - 14
app/models/user.rb

@@ -654,9 +654,42 @@ returns
 
 =begin
 
+update/sync default preferences of users in a dedecated permissions
+
+  result = User.update_default_preferences_by_permission('ticket.agent', force)
+
+returns
+
+  result = true # false
+
+=end
+
+  def self.update_default_preferences_by_permission(permission_name, force = false)
+    permission = Object.const_get('Permission').lookup(name: permission_name)
+    return if !permission
+    default = Rails.configuration.preferences_default_by_permission
+    return false if !default
+    default.deep_stringify_keys!
+    User.with_permissions(permission.name).each { |user|
+      next if !default[permission.name]
+      has_changed = false
+      default[permission.name].each { |key, value|
+        next if !force && user.preferences[key]
+        has_changed = true
+        user.preferences[key] = value
+      }
+      if has_changed
+        user.save!
+      end
+    }
+    true
+  end
+
+=begin
+
 update/sync default preferences of users in a dedecated role
 
-  result = User.update_default_preferences('Agent', force)
+  result = User.update_default_preferences_by_role('Agent', force)
 
 returns
 
@@ -664,24 +697,14 @@ returns
 
 =end
 
-  def self.update_default_preferences(role_name, force = false)
+  def self.update_default_preferences_by_role(role_name, force = false)
     role = Role.lookup(name: role_name)
+    return if !role
     default = Rails.configuration.preferences_default_by_permission
     return false if !default
     default.deep_stringify_keys!
     role.permissions.each { |permission|
-      User.with_permissions(permission.name).each { |user|
-        next if !default[permission.name]
-        has_changed = false
-        default[permission.name].each { |key, value|
-          next if !force && user.preferences[key]
-          has_changed = true
-          user.preferences[key] = value
-        }
-        if has_changed
-          user.save!
-        end
-      }
+      User.update_default_preferences_by_permission(permission.name, force)
     }
     true
   end

+ 0 - 5
db/migrate/20160208000001_update_default_preferences.rb

@@ -1,5 +0,0 @@
-class UpdateDefaultPreferences < ActiveRecord::Migration
-  def up
-    User.update_default_preferences('Agent')
-  end
-end

+ 1 - 1
db/migrate/20160920000001_user_preferences_update.rb

@@ -4,6 +4,6 @@ class UserPreferencesUpdate < ActiveRecord::Migration
     # return if it's a new setup
     return if !Setting.find_by(name: 'system_init_done')
 
-    User.update_default_preferences('Agent')
+    User.update_default_preferences_by_permission('ticket.agent')
   end
 end