Browse Source

Improved error handling.

Martin Edenhofer 7 years ago
parent
commit
0986e89335

+ 1 - 0
app/controllers/search_controller.rb

@@ -62,6 +62,7 @@ class SearchController < ApplicationController
         items.each { |item|
           require item[:type].to_filename
           record = Kernel.const_get(item[:type]).lookup(id: item[:id])
+          next if !record
           assets = record.assets(assets)
           result.push item
         }

+ 5 - 5
app/controllers/sessions_controller.rb

@@ -282,12 +282,12 @@ class SessionsController < ApplicationController
     assets = {}
     sessions_clean = []
     SessionHelper.list.each { |session|
-      next if !session.data['user_id']
+      next if session.data['user_id'].blank?
       sessions_clean.push session
-      if session.data['user_id']
-        user = User.lookup(id: session.data['user_id'])
-        assets = user.assets(assets)
-      end
+      next if session.data['user_id']
+      user = User.lookup(id: session.data['user_id'])
+      next if !user
+      assets = user.assets(assets)
     }
     render json: {
       sessions: sessions_clean,

+ 1 - 1
app/models/observer/ticket/article_changes.rb

@@ -41,7 +41,7 @@ class Observer::Ticket::ArticleChanges < ActiveRecord::Observer
       record.ticket.touch
       return
     end
-    record.ticket.save
+    record.ticket.save!
   end
 
   # get article count

+ 1 - 1
app/models/transaction/karma.rb

@@ -54,7 +54,7 @@ class Transaction::Karma
 
     if @item[:type] == 'reminder_reached'
       return if ticket.owner_id == 1
-      return if ticket.pending_time > Time.zone.now - 2.days
+      return if ticket.pending_time && ticket.pending_time > Time.zone.now - 2.days
       Karma::ActivityLog.add('ticket reminder overdue (+2 days)', ticket.owner, 'Ticket', ticket.id)
       return
     end

+ 5 - 1
app/models/user.rb

@@ -43,7 +43,7 @@ class User < ApplicationModel
   before_update   :check_preferences_default, :validate_roles, :reset_login_failed
   after_create    :avatar_for_email_check
   after_update    :avatar_for_email_check
-  after_destroy   :avatar_destroy
+  after_destroy   :avatar_destroy, :user_device_destroy
 
   has_and_belongs_to_many :roles,           after_add: [:cache_update, :check_notifications], after_remove: :cache_update, before_add: :validate_agent_limit, before_remove: :last_admin_check, class_name: 'Role'
   has_and_belongs_to_many :organizations,   after_add: :cache_update, after_remove: :cache_update, class_name: 'Organization'
@@ -1014,6 +1014,10 @@ raise 'Minimum one user need to have admin permissions'
     Avatar.remove('User', id)
   end
 
+  def user_device_destroy
+    UserDevice.remove(id)
+  end
+
   def ensure_password
     return true if password_empty?
     return true if PasswordHash.crypted?(password)

+ 11 - 0
app/models/user_device.rb

@@ -210,4 +210,15 @@ send user notification about new device or new location for device
     )
   end
 
+=begin
+
+delete device devices of user
+
+  user_devices = UserDevice.remove(user.id)
+
+=end
+
+  def self.remove(user_id)
+    UserDevice.where(user_id: user_id).destroy_all
+  end
 end

+ 1 - 1
test/integration/report_test.rb

@@ -7,7 +7,7 @@ class ReportTest < ActiveSupport::TestCase
   setup do
 
     # set config
-    if !ENV['ES_URL']
+    if ENV['ES_URL'].blank?
       raise "ERROR: Need ES_URL - hint ES_URL='http://127.0.0.1:9200'"
     end
     Setting.set('es_url', ENV['ES_URL'])