sys_config_factory.rb 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. module Import
  2. module OTRS
  3. module SysConfigFactory
  4. extend self
  5. def import(settings, *_args)
  6. settings.each do |setting|
  7. next if direct_copy?(setting)
  8. next if number_generator?(setting)
  9. next if postmaster_default?(setting)
  10. end
  11. end
  12. def postmaster_default_lookup(key)
  13. @postmaster_defaults ||= {}
  14. @postmaster_defaults[key]
  15. end
  16. private
  17. def direct_settings
  18. %w[HttpType SystemID Organization TicketHook]
  19. end
  20. def direct_copy?(setting)
  21. cleaned_name = cleanup_name(setting['Key'])
  22. return false if !direct_settings.include?(cleaned_name)
  23. internal_name = cleaned_name.underscore
  24. Setting.set(internal_name, setting['Value'])
  25. true
  26. end
  27. def cleanup_name(key)
  28. key.tr('::', '')
  29. end
  30. def number_generator?(setting)
  31. return false if setting['Key'] != 'Ticket::NumberGenerator'
  32. case setting['Value']
  33. when 'Kernel::System::Ticket::Number::DateChecksum'
  34. Setting.set('ticket_number', 'Ticket::Number::Date')
  35. Setting.set('ticket_number_date', { checksum: true })
  36. when 'Kernel::System::Ticket::Number::Date'
  37. Setting.set('ticket_number', 'Ticket::Number::Date')
  38. Setting.set('ticket_number_date', { checksum: false })
  39. end
  40. true
  41. end
  42. def postmaster_default?(setting)
  43. relevant_configs = %w[PostmasterDefaultPriority PostmasterDefaultState PostmasterFollowUpState]
  44. return false if !relevant_configs.include?(setting['Key'])
  45. map = {
  46. 'PostmasterDefaultPriority' => :priority_default_create,
  47. 'PostmasterDefaultState' => :state_default_create,
  48. 'PostmasterFollowUpState' => :state_default_follow_up,
  49. }
  50. @postmaster_defaults ||= {}
  51. @postmaster_defaults[ map[setting['Key']] ] = setting['Value']
  52. true
  53. end
  54. end
  55. end
  56. end