From a65c4ec370b60a4739e0b87ba398e5e25e3b1340 Mon Sep 17 00:00:00 2001 From: spag Date: Fri, 4 Jan 2013 09:12:58 +0100 Subject: return true if login was successful but phone resync failed --- app/models/phone.rb | 1 - 1 file changed, 1 deletion(-) (limited to 'app/models') diff --git a/app/models/phone.rb b/app/models/phone.rb index a606834..a59b003 100644 --- a/app/models/phone.rb +++ b/app/models/phone.rb @@ -162,7 +162,6 @@ class Phone < ActiveRecord::Base if ! self.resync(true, sip_account_resync) errors.add(:resync, "Resync failed") - return false end return true -- cgit v1.2.3 From 01f2ab4e3d5694de81f6ebb594e0e852616ebbd9 Mon Sep 17 00:00:00 2001 From: Stefan Wintermeyer Date: Sat, 5 Jan 2013 12:42:53 +0100 Subject: Added GsParameter model as a replacement for gemeinschaft_parameters.rb --- app/models/gs_parameter.rb | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 app/models/gs_parameter.rb (limited to 'app/models') diff --git a/app/models/gs_parameter.rb b/app/models/gs_parameter.rb new file mode 100644 index 0000000..d0cc37a --- /dev/null +++ b/app/models/gs_parameter.rb @@ -0,0 +1,28 @@ +class GsParameter < ActiveRecord::Base + validates :name, + :presence => true, + :uniqueness => true + + validates :value, + :presence => true + + validates :class_type, + :presence => true, + :inclusion => { :in => ['String', 'Integer', 'Boolean', 'YAML'] } + + def generate_contant + Kernel.const_set(self.name, self.value.to_i) if self.class_type == 'Integer' + Kernel.const_set(self.name, self.value.to_s) if self.class_type == 'String' + + if self.class_type == 'Boolean' + Kernel.const_set(self.name, true) if self.value == 'true' + Kernel.const_set(self.name, false) if self.value == 'false' + end + + Kernel.const_set(self.name, YAML.load(self.value)) if self.class_type == 'YAML' + end + + def to_s + name + end +end -- cgit v1.2.3 From 6d809427f7dbff9509603cab3339c6fbda9ea992 Mon Sep 17 00:00:00 2001 From: Stefan Wintermeyer Date: Sat, 5 Jan 2013 12:50:17 +0100 Subject: Add the initializer to set the constants. --- app/models/gs_parameter.rb | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) (limited to 'app/models') diff --git a/app/models/gs_parameter.rb b/app/models/gs_parameter.rb index d0cc37a..aac10b0 100644 --- a/app/models/gs_parameter.rb +++ b/app/models/gs_parameter.rb @@ -10,19 +10,19 @@ class GsParameter < ActiveRecord::Base :presence => true, :inclusion => { :in => ['String', 'Integer', 'Boolean', 'YAML'] } - def generate_contant - Kernel.const_set(self.name, self.value.to_i) if self.class_type == 'Integer' - Kernel.const_set(self.name, self.value.to_s) if self.class_type == 'String' + def generate_constant + Kernel.const_set(self.name, self.value.to_i) if self.class_type == 'Integer' + Kernel.const_set(self.name, self.value.to_s) if self.class_type == 'String' - if self.class_type == 'Boolean' - Kernel.const_set(self.name, true) if self.value == 'true' - Kernel.const_set(self.name, false) if self.value == 'false' - end + if self.class_type == 'Boolean' + Kernel.const_set(self.name, true) if self.value == 'true' + Kernel.const_set(self.name, false) if self.value == 'false' + end - Kernel.const_set(self.name, YAML.load(self.value)) if self.class_type == 'YAML' + Kernel.const_set(self.name, YAML.load(self.value)) if self.class_type == 'YAML' end def to_s - name + name end end -- cgit v1.2.3 From e76890d5f4634d47514a592d501d9792ae2ff7bb Mon Sep 17 00:00:00 2001 From: Stefan Wintermeyer Date: Sat, 5 Jan 2013 21:00:52 +0100 Subject: Different scaffold for GsParameter. --- app/models/gs_parameter.rb | 2 ++ 1 file changed, 2 insertions(+) (limited to 'app/models') diff --git a/app/models/gs_parameter.rb b/app/models/gs_parameter.rb index aac10b0..8e30583 100644 --- a/app/models/gs_parameter.rb +++ b/app/models/gs_parameter.rb @@ -1,4 +1,6 @@ class GsParameter < ActiveRecord::Base + attr_accessible :name, :section, :value, :class_type, :description + validates :name, :presence => true, :uniqueness => true -- cgit v1.2.3 From ddb3dfa92ec0878240211cb2b7a8e125961b1360 Mon Sep 17 00:00:00 2001 From: Stefan Wintermeyer Date: Sat, 5 Jan 2013 23:01:16 +0100 Subject: Moved to GsParemeter.get and set defaults for a couple of validations. --- app/models/ability.rb | 2 +- app/models/access_authorization.rb | 4 +++- app/models/api/row.rb | 2 +- app/models/call_forward.rb | 2 +- app/models/conference.rb | 4 ++-- app/models/conference_invitee.rb | 2 +- app/models/fax_document.rb | 4 ++-- app/models/gs_cluster_sync_log_entry.rb | 4 ++-- app/models/gs_parameter.rb | 25 ++++++++++++++++--------- app/models/hunt_group.rb | 8 ++++---- app/models/phone_number.rb | 16 ++++++++-------- app/models/phone_number_range.rb | 2 +- app/models/sip_account.rb | 4 ++-- app/models/tenant.rb | 22 +++++++++++----------- app/models/user.rb | 3 ++- 15 files changed, 57 insertions(+), 47 deletions(-) (limited to 'app/models') diff --git a/app/models/ability.rb b/app/models/ability.rb index d9ec74a..f4068ca 100644 --- a/app/models/ability.rb +++ b/app/models/ability.rb @@ -70,7 +70,7 @@ class Ability # Dirty hack to disable PhoneNumberRange in the GUI # - if STRICT_INTERNAL_EXTENSION_HANDLING == false + if GsParameter.get('STRICT_INTERNAL_EXTENSION_HANDLING') == false cannot :manage, PhoneNumberRange end else diff --git a/app/models/access_authorization.rb b/app/models/access_authorization.rb index ef33115..878799a 100644 --- a/app/models/access_authorization.rb +++ b/app/models/access_authorization.rb @@ -18,7 +18,9 @@ class AccessAuthorization < ActiveRecord::Base :allow_nil => true, :allow_blank => true, :message => "must be numeric." - validates_length_of :pin, :minimum => MINIMUM_PIN_LENGTH, :maximum => MAXIMUM_PIN_LENGTH, + validates_length_of :pin, + :minimum => (GsParameter.get('MINIMUM_PIN_LENGTH').nil? ? 4 : GsParameter.get('MINIMUM_PIN_LENGTH')), + :maximum => (GsParameter.get('MAXIMUM_PIN_LENGTH').nil? ? 10 : GsParameter.get('MAXIMUM_PIN_LENGTH')), :allow_nil => true, :allow_blank => true has_many :phone_numbers, :as => :phone_numberable, :dependent => :destroy diff --git a/app/models/api/row.rb b/app/models/api/row.rb index ac35516..e82a3e2 100644 --- a/app/models/api/row.rb +++ b/app/models/api/row.rb @@ -28,7 +28,7 @@ class Api::Row < ActiveRecord::Base end def create_a_new_gemeinschaft_user - tenant = Tenant.find(DEFAULT_API_TENANT_ID) + tenant = Tenant.find(GsParameter.get('DEFAULT_API_TENANT_ID')) # Find or create the user # diff --git a/app/models/call_forward.rb b/app/models/call_forward.rb index 0018cfb..8a8d1df 100644 --- a/app/models/call_forward.rb +++ b/app/models/call_forward.rb @@ -28,7 +28,7 @@ class CallForward < ActiveRecord::Base validates_numericality_of :depth, :only_integer => true, :greater_than_or_equal_to => 1, - :less_than_or_equal_to => MAX_CALL_FORWARD_DEPTH + :less_than_or_equal_to => (GsParameter.get('MAX_CALL_FORWARD_DEPTH').nil? ? 0 : GsParameter.get('MAX_CALL_FORWARD_DEPTH')) before_validation { self.timeout = nil if self.call_forward_case_id != 3 diff --git a/app/models/conference.rb b/app/models/conference.rb index 8be9f21..16b646c 100644 --- a/app/models/conference.rb +++ b/app/models/conference.rb @@ -15,7 +15,7 @@ class Conference < ActiveRecord::Base validates_presence_of :max_members validates_numericality_of :max_members, :only_integer => true, :greater_than => 0, - :less_than => (MAXIMUM_NUMBER_OF_PEOPLE_IN_A_CONFERENCE + 1), + :less_than => ((GsParameter.get('MAXIMUM_NUMBER_OF_PEOPLE_IN_A_CONFERENCE').nil? ? 10 : GsParameter.get('MAXIMUM_NUMBER_OF_PEOPLE_IN_A_CONFERENCE')) + 1), :allow_nil => false, :allow_blank => false @@ -25,7 +25,7 @@ class Conference < ActiveRecord::Base :greater_than => 0, :allow_nil => true, :allow_blank => true - validates_length_of :pin, :minimum => MINIMUM_PIN_LENGTH, + validates_length_of :pin, :minimum => (GsParameter.get('MINIMUM_PIN_LENGTH').nil? ? 4 : GsParameter.get('MINIMUM_PIN_LENGTH')), :allow_nil => true, :allow_blank => true diff --git a/app/models/conference_invitee.rb b/app/models/conference_invitee.rb index 7de20de..d6e3bac 100644 --- a/app/models/conference_invitee.rb +++ b/app/models/conference_invitee.rb @@ -13,7 +13,7 @@ class ConferenceInvitee < ActiveRecord::Base :greater_than => 0, :allow_nil => true, :allow_blank => true - validates_length_of :pin, :minimum => MINIMUM_PIN_LENGTH, + validates_length_of :pin, :minimum => (GsParameter.get('MINIMUM_PIN_LENGTH').nil? ? 4 : GsParameter.get('MINIMUM_PIN_LENGTH')), :allow_nil => true, :allow_blank => true diff --git a/app/models/fax_document.rb b/app/models/fax_document.rb index 67bdea9..080bdaa 100644 --- a/app/models/fax_document.rb +++ b/app/models/fax_document.rb @@ -54,7 +54,7 @@ class FaxDocument < ActiveRecord::Base private def render_thumbnails - directory = "/tmp/GS-#{GEMEINSCHAFT_VERSION}/fax_thumbnails/#{self.id}" + directory = "/tmp/GS-#{GsParameter.get('GEMEINSCHAFT_VERSION')}/fax_thumbnails/#{self.id}" system('mkdir -p ' + directory) system("cd #{directory} && convert #{Rails.root.to_s}/public#{self.document.to_s}[0-100] -colorspace Gray PNG:'fax_page.png'") number_of_thumbnails = Dir["#{directory}/fax_page-*.png"].count @@ -70,7 +70,7 @@ class FaxDocument < ActiveRecord::Base def convert_pdf_to_tiff page_size_a4 = '595 842' page_size_command = "<< /Policies << /PageSize 3 >> /InputAttributes currentpagedevice /InputAttributes get dup { pop 1 index exch undef } forall dup 0 << /PageSize [ #{page_size_a4} ] >> put >> setpagedevice" - directory = "/tmp/GS-#{GEMEINSCHAFT_VERSION}/faxes/#{self.id}" + directory = "/tmp/GS-#{GsParameter.get('GEMEINSCHAFT_VERSION')}/faxes/#{self.id}" system('mkdir -p ' + directory) tiff_file_name = File.basename(self.document.to_s.downcase, ".pdf") + '.tiff' system "cd #{directory} && gs -q -r#{self.fax_resolution.resolution_value} -dNOPAUSE -dBATCH -dSAFER -sDEVICE=tiffg3 -sOutputFile=\"#{tiff_file_name}\" -c \"#{page_size_command}\" -- \"#{Rails.root.to_s}/public#{self.document.to_s}\"" diff --git a/app/models/gs_cluster_sync_log_entry.rb b/app/models/gs_cluster_sync_log_entry.rb index 063ff23..51e3b05 100644 --- a/app/models/gs_cluster_sync_log_entry.rb +++ b/app/models/gs_cluster_sync_log_entry.rb @@ -15,7 +15,7 @@ class GsClusterSyncLogEntry < ActiveRecord::Base after_create :apply_to_local_database def apply_to_local_database - if self.homebase_ip_address != HOMEBASE_IP_ADDRESS + if self.homebase_ip_address != GsParameter.get('HOMEBASE_IP_ADDRESS') if self.class_name.constantize.new.attribute_names.include?('is_native') case self.action when 'create' @@ -84,7 +84,7 @@ class GsClusterSyncLogEntry < ActiveRecord::Base end def populate_other_cluster_nodes - if self.homebase_ip_address == HOMEBASE_IP_ADDRESS && self.waiting_to_be_synced == true + if self.homebase_ip_address == GsParameter.get('HOMEBASE_IP_ADDRESS') && self.waiting_to_be_synced == true if GsNode.where(:push_updates_to => true).count > 0 GsNode.where(:push_updates_to => true).each do |gs_node| RemoteGsNode::GsClusterSyncLogEntry.site = gs_node.site diff --git a/app/models/gs_parameter.rb b/app/models/gs_parameter.rb index 8e30583..9d9e996 100644 --- a/app/models/gs_parameter.rb +++ b/app/models/gs_parameter.rb @@ -12,16 +12,23 @@ class GsParameter < ActiveRecord::Base :presence => true, :inclusion => { :in => ['String', 'Integer', 'Boolean', 'YAML'] } - def generate_constant - Kernel.const_set(self.name, self.value.to_i) if self.class_type == 'Integer' - Kernel.const_set(self.name, self.value.to_s) if self.class_type == 'String' - - if self.class_type == 'Boolean' - Kernel.const_set(self.name, true) if self.value == 'true' - Kernel.const_set(self.name, false) if self.value == 'false' + def self.get(wanted_variable) + if GsParameter.table_exists? + item = GsParameter.where(:name => wanted_variable).first + if item.nil? + return nil + else + return item.value.to_i if item.class_type == 'Integer' + return item.value.to_s if item.class_type == 'String' + if item.class_type == 'Boolean' + return true if item.value == 'true' + return false if item.value == 'false' + end + return YAML.load(item.value) if item.class_type == 'YAML' + end + else + nil end - - Kernel.const_set(self.name, YAML.load(self.value)) if self.class_type == 'YAML' end def to_s diff --git a/app/models/hunt_group.rb b/app/models/hunt_group.rb index 276ae53..184297c 100644 --- a/app/models/hunt_group.rb +++ b/app/models/hunt_group.rb @@ -8,17 +8,17 @@ class HuntGroup < ActiveRecord::Base :allow_nil => true, :allow_blank => true validates_presence_of :strategy - validates_inclusion_of :strategy, :in => HUNT_GROUP_STRATEGIES + validates_inclusion_of :strategy, :in => (GsParameter.get('HUNT_GROUP_STRATEGIES').nil? ? [] : GsParameter.get('HUNT_GROUP_STRATEGIES')) validates_presence_of :seconds_between_jumps, :if => Proc.new{ |hunt_group| hunt_group.strategy != 'ring_all' } validates_numericality_of :seconds_between_jumps, :only_integer => true, - :greater_than_or_equal_to => VALID_SECONDS_BETWEEN_JUMPS_VALUES.min, - :less_than_or_equal_to => VALID_SECONDS_BETWEEN_JUMPS_VALUES.max, + :greater_than_or_equal_to => (GsParameter.get('VALID_SECONDS_BETWEEN_JUMPS_VALUES').nil? ? 2 : GsParameter.get('VALID_SECONDS_BETWEEN_JUMPS_VALUES').min), + :less_than_or_equal_to => (GsParameter.get('VALID_SECONDS_BETWEEN_JUMPS_VALUES').nil? ? 120 : GsParameter.get('VALID_SECONDS_BETWEEN_JUMPS_VALUES').max), :if => Proc.new{ |hunt_group| hunt_group.strategy != 'ring_all' } validates_inclusion_of :seconds_between_jumps, - :in => VALID_SECONDS_BETWEEN_JUMPS_VALUES, + :in => (GsParameter.get('VALID_SECONDS_BETWEEN_JUMPS_VALUES').nil? ? [] : GsParameter.get('VALID_SECONDS_BETWEEN_JUMPS_VALUES')), :if => Proc.new{ |hunt_group| hunt_group.strategy != 'ring_all' } validates_inclusion_of :seconds_between_jumps, :in => [nil], diff --git a/app/models/phone_number.rb b/app/models/phone_number.rb index 4c0cf46..d1e950f 100644 --- a/app/models/phone_number.rb +++ b/app/models/phone_number.rb @@ -18,8 +18,8 @@ class PhoneNumber < ActiveRecord::Base before_save :save_value_of_to_s after_create :copy_existing_call_forwards_if_necessary before_validation :'parse_and_split_number!' - validate :validate_number, :if => Proc.new { |phone_number| STRICT_INTERNAL_EXTENSION_HANDLING && STRICT_DID_HANDLING } - validate :check_if_number_is_available, :if => Proc.new { |phone_number| STRICT_INTERNAL_EXTENSION_HANDLING && STRICT_DID_HANDLING } + validate :validate_number, :if => Proc.new { |phone_number| GsParameter.get('STRICT_INTERNAL_EXTENSION_HANDLING') && GsParameter.get('STRICT_DID_HANDLING') } + validate :check_if_number_is_available, :if => Proc.new { |phone_number| GsParameter.get('STRICT_INTERNAL_EXTENSION_HANDLING') && GsParameter.get('STRICT_DID_HANDLING') } acts_as_list :scope => [:phone_numberable_id, :phone_numberable_type] @@ -95,7 +95,7 @@ class PhoneNumber < ActiveRecord::Base else # Check if the number is an internal extension. if tenant - internal_extension_range = tenant.phone_number_ranges.where(:name => INTERNAL_EXTENSIONS).first + internal_extension_range = tenant.phone_number_ranges.where(:name => GsParameter.get('INTERNAL_EXTENSIONS')).first if internal_extension_range if internal_extension_range.phone_numbers.where(:number => number).length > 0 parts[:extension] = number @@ -192,8 +192,8 @@ class PhoneNumber < ActiveRecord::Base end def parse_and_split_number! - if self.phone_numberable_type == 'PhoneNumberRange' && self.phone_numberable.name == INTERNAL_EXTENSIONS - # The parent is the PhoneNumberRange INTERNAL_EXTENSIONS. Therefor it must be an extensions. + if self.phone_numberable_type == 'PhoneNumberRange' && self.phone_numberable.name == GsParameter.get('INTERNAL_EXTENSIONS') + # The parent is the PhoneNumberRange GsParameter.get('INTERNAL_EXTENSIONS'). Therefor it must be an extensions. # self.country_code = nil self.area_code = nil @@ -202,8 +202,8 @@ class PhoneNumber < ActiveRecord::Base self.extension = self.number.to_s.strip else if self.tenant && - self.tenant.phone_number_ranges.exists?(:name => INTERNAL_EXTENSIONS) && - self.tenant.phone_number_ranges.where(:name => INTERNAL_EXTENSIONS).first.phone_numbers.exists?(:number => self.number) + self.tenant.phone_number_ranges.exists?(:name => GsParameter.get('INTERNAL_EXTENSIONS')) && + self.tenant.phone_number_ranges.where(:name => GsParameter.get('INTERNAL_EXTENSIONS')).first.phone_numbers.exists?(:number => self.number) self.country_code = nil self.area_code = nil self.subscriber_number = nil @@ -263,7 +263,7 @@ class PhoneNumber < ActiveRecord::Base if self.phone_numberable_type != 'PhoneBookEntry' && self.tenant phone_number_ranges = self.tenant.phone_number_ranges.where( - :name => [INTERNAL_EXTENSIONS, DIRECT_INWARD_DIALING_NUMBERS] + :name => [GsParameter.get('INTERNAL_EXTENSIONS'), GsParameter.get('DIRECT_INWARD_DIALING_NUMBERS')] ) if !phone_number_ranges.empty? if !PhoneNumber.where(:phone_numberable_type => 'PhoneNumberRange'). diff --git a/app/models/phone_number_range.rb b/app/models/phone_number_range.rb index 2fdd9b6..b666487 100644 --- a/app/models/phone_number_range.rb +++ b/app/models/phone_number_range.rb @@ -6,7 +6,7 @@ class PhoneNumberRange < ActiveRecord::Base validates_presence_of :name validates_uniqueness_of :name, :scope => [:phone_number_rangeable_id, :phone_number_rangeable_type] - validates_inclusion_of :name, :in => [INTERNAL_EXTENSIONS, DIRECT_INWARD_DIALING_NUMBERS, SERVICE_NUMBERS] + validates_inclusion_of :name, :in => [GsParameter.get('INTERNAL_EXTENSIONS'), GsParameter.get('DIRECT_INWARD_DIALING_NUMBERS'), GsParameter.get('SERVICE_NUMBERS')] validates_presence_of :phone_number_rangeable_id validates_presence_of :phone_number_rangeable diff --git a/app/models/sip_account.rb b/app/models/sip_account.rb index 8459265..5388395 100644 --- a/app/models/sip_account.rb +++ b/app/models/sip_account.rb @@ -71,7 +71,7 @@ class SipAccount < ActiveRecord::Base after_update :log_out_phone_if_not_local def to_s - truncate((self.caller_name || "SipAccount ID #{self.id}"), :length => TO_S_MAX_CALLER_NAME_LENGTH) + " (#{truncate(self.auth_name, :length => TO_S_MAX_LENGTH_OF_AUTH_NAME)}@...#{self.host.split(/\./)[2,3].to_a.join('.') if self.host })" + truncate((self.caller_name || "SipAccount ID #{self.id}"), :length => GsParameter.get('TO_S_MAX_CALLER_NAME_LENGTH')) + " (#{truncate(self.auth_name, :length => GsParameter.get('TO_S_MAX_LENGTH_OF_AUTH_NAME'))}@...#{self.host.split(/\./)[2,3].to_a.join('.') if self.host })" end def call_forwarding_toggle( call_forwarding_service, to_voicemail = nil ) @@ -200,7 +200,7 @@ class SipAccount < ActiveRecord::Base # log out phone if sip_account is not on this node def log_out_phone_if_not_local - if self.gs_node_id && ! GsNode.where(:ip_address => HOMEBASE_IP_ADDRESS, :id => self.gs_node_id).first + if self.gs_node_id && ! GsNode.where(:ip_address => GsParameter.get('HOMEBASE_IP_ADDRESS'), :id => self.gs_node_id).first self.phones.each do |phone| phone.user_logout; end diff --git a/app/models/tenant.rb b/app/models/tenant.rb index d9351b7..c3e2926 100644 --- a/app/models/tenant.rb +++ b/app/models/tenant.rb @@ -3,11 +3,11 @@ class Tenant < ActiveRecord::Base attr_accessible :name, :description, :sip_domain_id, :country_id, :language_id, :from_field_pin_change_email, :from_field_voicemail_email - if STRICT_INTERNAL_EXTENSION_HANDLING == true + if GsParameter.get('STRICT_INTERNAL_EXTENSION_HANDLING') == true attr_accessible :internal_extension_ranges end - if STRICT_DID_HANDLING == true + if GsParameter.get('STRICT_DID_HANDLING') == true attr_accessible :did_list end @@ -93,7 +93,7 @@ class Tenant < ActiveRecord::Base name end - if STRICT_INTERNAL_EXTENSION_HANDLING == true + if GsParameter.get('STRICT_INTERNAL_EXTENSION_HANDLING') == true def array_of_internal_extension_numbers ranges = self.internal_extension_ranges.gsub(/[^0-9\-,]/,'').gsub(/[\-]+/,'-').gsub(/[,]+/,',').split(/,/) output = [] @@ -112,7 +112,7 @@ class Tenant < ActiveRecord::Base # Generate the internal_extensions # def generate_internal_extensions - internal_extensions = self.phone_number_ranges.find_or_create_by_name(INTERNAL_EXTENSIONS, :description => 'A list of all available internal extensions.') + internal_extensions = self.phone_number_ranges.find_or_create_by_name(GsParameter.get('INTERNAL_EXTENSIONS'), :description => 'A list of all available internal extensions.') phone_number_list = Array.new @@ -122,7 +122,7 @@ class Tenant < ActiveRecord::Base elsif # Don't create extensions like 911, 110 or 112 (at least by default) # - phone_number_list = (self.array_of_internal_extension_numbers - self.country.phone_number_ranges.where(:name => SERVICE_NUMBERS).first.phone_numbers.map{|entry| entry.number}) + phone_number_list = (self.array_of_internal_extension_numbers - self.country.phone_number_ranges.where(:name => GsParameter.get('SERVICE_NUMBERS')).first.phone_numbers.map{|entry| entry.number}) end end @@ -133,7 +133,7 @@ class Tenant < ActiveRecord::Base end - if STRICT_DID_HANDLING == true + if GsParameter.get('STRICT_DID_HANDLING') == true def array_of_dids_generated_from_did_list numbers = self.did_list.downcase.gsub(/[^0-9,x\+]/,'').gsub(/[,]+/,',').split(/,/) array_of_all_external_numbers = [] @@ -152,7 +152,7 @@ class Tenant < ActiveRecord::Base # Generate the external numbers (DIDs) # def generate_dids - dids = self.phone_number_ranges.find_or_create_by_name(DIRECT_INWARD_DIALING_NUMBERS, :description => 'A list of all available DIDs.') + dids = self.phone_number_ranges.find_or_create_by_name(GsParameter.get('DIRECT_INWARD_DIALING_NUMBERS'), :description => 'A list of all available DIDs.') self.array_of_dids_generated_from_did_list.each do |number| dids.phone_numbers.find_or_create_by_name_and_number('DID', number) end @@ -167,7 +167,7 @@ class Tenant < ActiveRecord::Base @internal_extensions_and_dids ||= self.phone_number_ranges_phone_numbers. where(:phone_numberable_type => 'PhoneNumberRange'). where(:phone_numberable_id => self.phone_number_ranges. - where(:name => [INTERNAL_EXTENSIONS, DIRECT_INWARD_DIALING_NUMBERS]). + where(:name => [GsParameter.get('INTERNAL_EXTENSIONS'), GsParameter.get('DIRECT_INWARD_DIALING_NUMBERS')]). map{|pnr| pnr.id }) end @@ -175,7 +175,7 @@ class Tenant < ActiveRecord::Base @array_of_internal_extensions ||= self.phone_number_ranges_phone_numbers. where(:phone_numberable_type => 'PhoneNumberRange'). where(:phone_numberable_id => self.phone_number_ranges. - where(:name => INTERNAL_EXTENSIONS). + where(:name => GsParameter.get('INTERNAL_EXTENSIONS')). map{|pnr| pnr.id }). map{|phone_number| phone_number.number }. sort.uniq @@ -184,7 +184,7 @@ class Tenant < ActiveRecord::Base def array_of_dids @array_of_dids ||= self.phone_number_ranges_phone_numbers. where(:phone_numberable_type => 'PhoneNumberRange'). - where(:phone_numberable_id => self.phone_number_ranges.where(:name => DIRECT_INWARD_DIALING_NUMBERS).map{|pnr| pnr.id }). + where(:phone_numberable_id => self.phone_number_ranges.where(:name => GsParameter.get('DIRECT_INWARD_DIALING_NUMBERS')).map{|pnr| pnr.id }). map{|phone_number| phone_number.to_s }. sort.uniq end @@ -215,7 +215,7 @@ class Tenant < ActiveRecord::Base # Create a public phone book for this tenant def create_a_default_phone_book - if self.name != SUPER_TENANT_NAME + if self.name != GsParameter.get('SUPER_TENANT_NAME') general_phone_book = self.phone_books.find_or_create_by_name_and_description( I18n.t('phone_books.general_phone_book.name'), I18n.t('phone_books.general_phone_book.description', :resource => self.to_s) diff --git a/app/models/user.rb b/app/models/user.rb index 2d0256f..9b29dc5 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -27,7 +27,8 @@ class User < ActiveRecord::Base } validates_length_of [:new_pin, :new_pin_confirmation], - :minimum => MINIMUM_PIN_LENGTH, :maximum => MAXIMUM_PIN_LENGTH, + :minimum => (GsParameter.get('MINIMUM_PIN_LENGTH').nil? ? 4 : GsParameter.get('MINIMUM_PIN_LENGTH')), + :maximum => (GsParameter.get('MAXIMUM_PIN_LENGTH').nil? ? 10 : GsParameter.get('MAXIMUM_PIN_LENGTH')), :allow_blank => true, :allow_nil => true validates_format_of [:new_pin, :new_pin_confirmation], :with => /^[0-9]+$/, -- cgit v1.2.3 From 464a2f4907bd27b62f7b5cc5d7537b90469b03bd Mon Sep 17 00:00:00 2001 From: Stefan Wintermeyer Date: Sun, 6 Jan 2013 20:52:04 +0100 Subject: GsParameter can only be created or destroyed by migrations. --- app/models/ability.rb | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'app/models') diff --git a/app/models/ability.rb b/app/models/ability.rb index f4068ca..0fa40c8 100644 --- a/app/models/ability.rb +++ b/app/models/ability.rb @@ -73,6 +73,10 @@ class Ability if GsParameter.get('STRICT_INTERNAL_EXTENSION_HANDLING') == false cannot :manage, PhoneNumberRange end + + # GsParameter can't be created or deleted via the GUI + # + cannot [:create, :destroy], GsParameter else # Any user can do the following stuff. # -- cgit v1.2.3 From b66cf13cab7bbef0ae4244aabc023fede67e36fb Mon Sep 17 00:00:00 2001 From: Stefan Wintermeyer Date: Mon, 7 Jan 2013 12:25:52 +0100 Subject: A user.destroy triggers a phone.resync. --- app/models/user.rb | 1 + 1 file changed, 1 insertion(+) (limited to 'app/models') diff --git a/app/models/user.rb b/app/models/user.rb index 9b29dc5..b902b99 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -203,6 +203,7 @@ class User < ActiveRecord::Base else phone.destroy end + phone.resync end end -- cgit v1.2.3 From af1a7678582e2e629ed4c8c06528b9a62bf62242 Mon Sep 17 00:00:00 2001 From: spag Date: Wed, 9 Jan 2013 11:08:49 +0100 Subject: entity added to GsParameter --- app/models/gs_parameter.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'app/models') diff --git a/app/models/gs_parameter.rb b/app/models/gs_parameter.rb index 9d9e996..de09df6 100644 --- a/app/models/gs_parameter.rb +++ b/app/models/gs_parameter.rb @@ -1,9 +1,9 @@ class GsParameter < ActiveRecord::Base - attr_accessible :name, :section, :value, :class_type, :description + attr_accessible :entity, :name, :section, :value, :class_type, :description validates :name, :presence => true, - :uniqueness => true + :uniqueness => { :scope => [ :entity, :section ] } validates :value, :presence => true -- cgit v1.2.3 From c05c78f1eaa2cbfff68f15287d6bb62cdd6f3a54 Mon Sep 17 00:00:00 2001 From: spag Date: Wed, 9 Jan 2013 12:39:24 +0100 Subject: allow empty strings and nil values --- app/models/gs_parameter.rb | 3 --- 1 file changed, 3 deletions(-) (limited to 'app/models') diff --git a/app/models/gs_parameter.rb b/app/models/gs_parameter.rb index de09df6..520d07f 100644 --- a/app/models/gs_parameter.rb +++ b/app/models/gs_parameter.rb @@ -5,9 +5,6 @@ class GsParameter < ActiveRecord::Base :presence => true, :uniqueness => { :scope => [ :entity, :section ] } - validates :value, - :presence => true - validates :class_type, :presence => true, :inclusion => { :in => ['String', 'Integer', 'Boolean', 'YAML'] } -- cgit v1.2.3 From 70c436c52c76cf866b03fcab6bc43437c9490cd1 Mon Sep 17 00:00:00 2001 From: Stefan Wintermeyer Date: Thu, 10 Jan 2013 10:34:57 +0100 Subject: GsParameter :entity, :section and :name can't be changed in the GUI any more. --- app/models/gs_parameter.rb | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'app/models') diff --git a/app/models/gs_parameter.rb b/app/models/gs_parameter.rb index 520d07f..fe2a845 100644 --- a/app/models/gs_parameter.rb +++ b/app/models/gs_parameter.rb @@ -1,5 +1,6 @@ class GsParameter < ActiveRecord::Base - attr_accessible :entity, :name, :section, :value, :class_type, :description + # https://github.com/rails/strong_parameters + include ActiveModel::ForbiddenAttributesProtection validates :name, :presence => true, @@ -7,12 +8,12 @@ class GsParameter < ActiveRecord::Base validates :class_type, :presence => true, - :inclusion => { :in => ['String', 'Integer', 'Boolean', 'YAML'] } + :inclusion => { :in => ['String', 'Integer', 'Boolean', 'YAML', 'Nil'] } def self.get(wanted_variable) if GsParameter.table_exists? item = GsParameter.where(:name => wanted_variable).first - if item.nil? + if item.nil? || item.class_type == 'Nil' return nil else return item.value.to_i if item.class_type == 'Integer' -- cgit v1.2.3 From 49738b091eea2ca65d6f8c71b88747e314ec2950 Mon Sep 17 00:00:00 2001 From: Stefan Wintermeyer Date: Thu, 10 Jan 2013 22:44:10 +0100 Subject: Refactoring and adding some caches. --- app/models/automatic_call_distributor.rb | 2 +- app/models/callthrough.rb | 2 +- app/models/conference.rb | 2 +- app/models/hunt_group.rb | 2 +- app/models/phone_book.rb | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) (limited to 'app/models') diff --git a/app/models/automatic_call_distributor.rb b/app/models/automatic_call_distributor.rb index cd887d5..a34392e 100644 --- a/app/models/automatic_call_distributor.rb +++ b/app/models/automatic_call_distributor.rb @@ -1,7 +1,7 @@ class AutomaticCallDistributor < ActiveRecord::Base attr_accessible :uuid, :name, :strategy, :automatic_call_distributorable_type, :automatic_call_distributorable_id, :max_callers, :agent_timeout, :retry_timeout, :join, :leave, :gs_node_id, :announce_position, :announce_call_agents, :greeting, :goodbye, :music - belongs_to :automatic_call_distributorable, :polymorphic => true + belongs_to :automatic_call_distributorable, :polymorphic => true, :touch => true has_many :acd_agents, :dependent => :destroy has_many :phone_numbers, :as => :phone_numberable, :dependent => :destroy diff --git a/app/models/callthrough.rb b/app/models/callthrough.rb index c057fa6..ae461cf 100644 --- a/app/models/callthrough.rb +++ b/app/models/callthrough.rb @@ -5,7 +5,7 @@ class Callthrough < ActiveRecord::Base # Validations and Associations # - belongs_to :tenant + belongs_to :tenant, :touch => true validates_presence_of :tenant_id validates_presence_of :tenant diff --git a/app/models/conference.rb b/app/models/conference.rb index 16b646c..8c5a752 100644 --- a/app/models/conference.rb +++ b/app/models/conference.rb @@ -3,7 +3,7 @@ class Conference < ActiveRecord::Base :open_for_anybody, :max_members, :announce_new_member_by_name, :announce_left_member_by_name - belongs_to :conferenceable, :polymorphic => true + belongs_to :conferenceable, :polymorphic => true, :touch => true has_many :conference_invitees, :dependent => :destroy has_many :phone_numbers, :as => :phone_numberable, :dependent => :destroy diff --git a/app/models/hunt_group.rb b/app/models/hunt_group.rb index 184297c..5011bf0 100644 --- a/app/models/hunt_group.rb +++ b/app/models/hunt_group.rb @@ -1,7 +1,7 @@ class HuntGroup < ActiveRecord::Base attr_accessible :name, :strategy, :seconds_between_jumps, :phone_numbers_attributes - belongs_to :tenant + belongs_to :tenant, :touch => true has_many :call_forwards, :as => :call_forwardable, :dependent => :destroy validates_uniqueness_of :name, :scope => :tenant_id, diff --git a/app/models/phone_book.rb b/app/models/phone_book.rb index 3603eae..21d30c0 100644 --- a/app/models/phone_book.rb +++ b/app/models/phone_book.rb @@ -1,7 +1,7 @@ class PhoneBook < ActiveRecord::Base attr_accessible :name, :description, :uuid - belongs_to :phone_bookable, :polymorphic => true + belongs_to :phone_bookable, :polymorphic => true, :touch => true has_many :phone_book_entries, :dependent => :destroy validates_presence_of :name -- cgit v1.2.3 From 2e3bddd415f03aa15cd2759d7c18f64d5545ea80 Mon Sep 17 00:00:00 2001 From: Stefan Wintermeyer Date: Sat, 12 Jan 2013 10:53:20 +0100 Subject: Accept truncated MAC addresses. #80 --- app/models/phone.rb | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'app/models') diff --git a/app/models/phone.rb b/app/models/phone.rb index a59b003..4865a12 100644 --- a/app/models/phone.rb +++ b/app/models/phone.rb @@ -200,6 +200,10 @@ class Phone < ActiveRecord::Base # Sanitize MAC address. # def sanitize_mac_address + if self.mac_address.split(/:/).count == 6 && self.mac_address.length < 17 + splitted_mac_address = self.mac_address.split(/:/) + self.mac_address = splitted_mac_address.map{|part| (part.size == 1 ? "0#{part}" : part)}.join('') + end self.mac_address = self.mac_address.to_s.upcase.gsub( /[^A-F0-9]/, '' ) end -- cgit v1.2.3 From 45ab6dc23ef7d8d6ddf60ab355c2d1b3450f35c8 Mon Sep 17 00:00:00 2001 From: Stefan Wintermeyer Date: Sat, 12 Jan 2013 22:54:59 +0100 Subject: Cache fixes. --- app/models/phone.rb | 2 +- app/models/phone_model.rb | 2 +- app/models/sip_account.rb | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) (limited to 'app/models') diff --git a/app/models/phone.rb b/app/models/phone.rb index 4865a12..8b41b59 100644 --- a/app/models/phone.rb +++ b/app/models/phone.rb @@ -9,7 +9,7 @@ class Phone < ActiveRecord::Base # Associations # belongs_to :phone_model - belongs_to :phoneable, :polymorphic => true + belongs_to :phoneable, :polymorphic => true, :touch => true has_many :phone_sip_accounts, :dependent => :destroy, :uniq => true, :order => :position has_many :sip_accounts, :through => :phone_sip_accounts diff --git a/app/models/phone_model.rb b/app/models/phone_model.rb index e00e0e3..ac4d4a3 100644 --- a/app/models/phone_model.rb +++ b/app/models/phone_model.rb @@ -3,7 +3,7 @@ class PhoneModel < ActiveRecord::Base # Associations # - belongs_to :manufacturer + belongs_to :manufacturer, :touch => true has_many :phones, :dependent => :destroy diff --git a/app/models/sip_account.rb b/app/models/sip_account.rb index 5388395..d35f9b4 100644 --- a/app/models/sip_account.rb +++ b/app/models/sip_account.rb @@ -10,7 +10,7 @@ class SipAccount < ActiveRecord::Base # Associations: # - belongs_to :sip_accountable, :polymorphic => true + belongs_to :sip_accountable, :polymorphic => true, :touch => true has_many :phone_sip_accounts, :uniq => true has_many :phones, :through => :phone_sip_accounts -- cgit v1.2.3 From f4ff0f4d08d73e699edf3b18ff99ba34e64f952b Mon Sep 17 00:00:00 2001 From: Peter Kozak Date: Sun, 13 Jan 2013 16:32:51 +0000 Subject: gateway models added --- app/models/gateway.rb | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 app/models/gateway.rb (limited to 'app/models') diff --git a/app/models/gateway.rb b/app/models/gateway.rb new file mode 100644 index 0000000..6a7514c --- /dev/null +++ b/app/models/gateway.rb @@ -0,0 +1,6 @@ +class Gateway < ActiveRecord::Base + attr_accessible :name, :technology, :inbound, :outbound, :description + + has_many :gateway_settings, :dependent => :destroy + has_many :gateway_parameters, :dependent => :destroy +end -- cgit v1.2.3 From 409e32a29e183202be31935aaaf6e1f97b30702f Mon Sep 17 00:00:00 2001 From: Peter Kozak Date: Sun, 13 Jan 2013 16:33:07 +0000 Subject: gateway settings models added --- app/models/gateway_setting.rb | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 app/models/gateway_setting.rb (limited to 'app/models') diff --git a/app/models/gateway_setting.rb b/app/models/gateway_setting.rb new file mode 100644 index 0000000..c6c0b9a --- /dev/null +++ b/app/models/gateway_setting.rb @@ -0,0 +1,5 @@ +class GatewaySetting < ActiveRecord::Base + attr_accessible :gateway_id, :name, :value, :class_type, :description + + belongs_to :gateway +end -- cgit v1.2.3 From 983cce30e1f84a4674fa45977076f1a04f0f20db Mon Sep 17 00:00:00 2001 From: Peter Kozak Date: Sun, 13 Jan 2013 16:33:19 +0000 Subject: gateway parameters models added --- app/models/gateway_parameter.rb | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 app/models/gateway_parameter.rb (limited to 'app/models') diff --git a/app/models/gateway_parameter.rb b/app/models/gateway_parameter.rb new file mode 100644 index 0000000..efa52df --- /dev/null +++ b/app/models/gateway_parameter.rb @@ -0,0 +1,5 @@ +class GatewayParameter < ActiveRecord::Base + attr_accessible :gateway_id, :name, :value, :class_type, :description + + belongs_to :gateway +end -- cgit v1.2.3 From f10b264bbae53a7128b22c385201161d21a9000f Mon Sep 17 00:00:00 2001 From: spag Date: Sun, 13 Jan 2013 20:28:46 +0100 Subject: validations --- app/models/gateway.rb | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'app/models') diff --git a/app/models/gateway.rb b/app/models/gateway.rb index 6a7514c..72cf72c 100644 --- a/app/models/gateway.rb +++ b/app/models/gateway.rb @@ -1,6 +1,17 @@ class Gateway < ActiveRecord::Base + TECHNOLOGIES = ['sip'] + attr_accessible :name, :technology, :inbound, :outbound, :description has_many :gateway_settings, :dependent => :destroy has_many :gateway_parameters, :dependent => :destroy + + validates :name, + :presence => true, + :uniqueness => true + + validates :technology, + :presence => true, + :inclusion => { :in => TECHNOLOGIES } + end -- cgit v1.2.3 From 86c322181ac1aeed7fa8dde7f7c03b570359917b Mon Sep 17 00:00:00 2001 From: spag Date: Sun, 13 Jan 2013 20:33:32 +0100 Subject: validations --- app/models/gateway_setting.rb | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'app/models') diff --git a/app/models/gateway_setting.rb b/app/models/gateway_setting.rb index c6c0b9a..bc676a4 100644 --- a/app/models/gateway_setting.rb +++ b/app/models/gateway_setting.rb @@ -2,4 +2,12 @@ class GatewaySetting < ActiveRecord::Base attr_accessible :gateway_id, :name, :value, :class_type, :description belongs_to :gateway + + validates :name, + :presence => true, + :uniqueness => true + + validates :class_type, + :presence => true, + :inclusion => { :in => ['String', 'Integer', 'Boolean'] } end -- cgit v1.2.3 From 6ae1b0df2648ccc02afa8fe375693e15117736fa Mon Sep 17 00:00:00 2001 From: spag Date: Sun, 13 Jan 2013 20:33:35 +0100 Subject: validations --- app/models/gateway_parameter.rb | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'app/models') diff --git a/app/models/gateway_parameter.rb b/app/models/gateway_parameter.rb index efa52df..1875863 100644 --- a/app/models/gateway_parameter.rb +++ b/app/models/gateway_parameter.rb @@ -2,4 +2,12 @@ class GatewayParameter < ActiveRecord::Base attr_accessible :gateway_id, :name, :value, :class_type, :description belongs_to :gateway + + validates :name, + :presence => true, + :uniqueness => true + + validates :class_type, + :presence => true, + :inclusion => { :in => ['String', 'Integer', 'Boolean'] } end -- cgit v1.2.3 From bfacc7b5de2f3a5a9d09a16683a9ba1fcf184d98 Mon Sep 17 00:00:00 2001 From: Stefan Wintermeyer Date: Sun, 13 Jan 2013 22:11:11 +0100 Subject: Fixed some gateway stuff. --- app/models/gateway.rb | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'app/models') diff --git a/app/models/gateway.rb b/app/models/gateway.rb index 72cf72c..d879fe9 100644 --- a/app/models/gateway.rb +++ b/app/models/gateway.rb @@ -14,4 +14,15 @@ class Gateway < ActiveRecord::Base :presence => true, :inclusion => { :in => TECHNOLOGIES } + before_validation :downcase_technology + + def to_s + name + end + + private + def downcase_technology + technology = technology.downcase + end + end -- cgit v1.2.3 From 57097d16d2a7e86f9e03625fd2fb6796504c32a2 Mon Sep 17 00:00:00 2001 From: Stefan Wintermeyer Date: Sun, 13 Jan 2013 22:26:28 +0100 Subject: Bugfixes for gateway stuff. --- app/models/gateway_parameter.rb | 8 ++++++-- app/models/gateway_setting.rb | 6 +++++- 2 files changed, 11 insertions(+), 3 deletions(-) (limited to 'app/models') diff --git a/app/models/gateway_parameter.rb b/app/models/gateway_parameter.rb index 1875863..3dd2a95 100644 --- a/app/models/gateway_parameter.rb +++ b/app/models/gateway_parameter.rb @@ -1,13 +1,17 @@ class GatewayParameter < ActiveRecord::Base attr_accessible :gateway_id, :name, :value, :class_type, :description - belongs_to :gateway + belongs_to :gateway, :touch => true validates :name, :presence => true, - :uniqueness => true + :uniqueness => {:scope => :gateway_id} validates :class_type, :presence => true, :inclusion => { :in => ['String', 'Integer', 'Boolean'] } + + def to_s + name + end end diff --git a/app/models/gateway_setting.rb b/app/models/gateway_setting.rb index bc676a4..078901f 100644 --- a/app/models/gateway_setting.rb +++ b/app/models/gateway_setting.rb @@ -5,9 +5,13 @@ class GatewaySetting < ActiveRecord::Base validates :name, :presence => true, - :uniqueness => true + :uniqueness => {:scope => :gateway_id} validates :class_type, :presence => true, :inclusion => { :in => ['String', 'Integer', 'Boolean'] } + + def to_s + name + end end -- cgit v1.2.3 From d0d9b60686a3cc044dc53b626403f799b3d4f703 Mon Sep 17 00:00:00 2001 From: spag Date: Mon, 14 Jan 2013 00:13:17 +0100 Subject: gateway_parameter views --- app/models/gateway_parameter.rb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'app/models') diff --git a/app/models/gateway_parameter.rb b/app/models/gateway_parameter.rb index 3dd2a95..a66af75 100644 --- a/app/models/gateway_parameter.rb +++ b/app/models/gateway_parameter.rb @@ -1,4 +1,6 @@ class GatewayParameter < ActiveRecord::Base + CLASS_TYPES = ['String', 'Integer', 'Boolean'] + attr_accessible :gateway_id, :name, :value, :class_type, :description belongs_to :gateway, :touch => true @@ -9,7 +11,7 @@ class GatewayParameter < ActiveRecord::Base validates :class_type, :presence => true, - :inclusion => { :in => ['String', 'Integer', 'Boolean'] } + :inclusion => { :in => CLASS_TYPES } def to_s name -- cgit v1.2.3 From 4670a33c504f36ddb93cf8ed846c65ceb6810c82 Mon Sep 17 00:00:00 2001 From: spag Date: Mon, 14 Jan 2013 00:13:45 +0100 Subject: gateway_setting views --- app/models/gateway_setting.rb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'app/models') diff --git a/app/models/gateway_setting.rb b/app/models/gateway_setting.rb index 078901f..cf1292d 100644 --- a/app/models/gateway_setting.rb +++ b/app/models/gateway_setting.rb @@ -1,4 +1,6 @@ class GatewaySetting < ActiveRecord::Base + CLASS_TYPES = ['String', 'Integer', 'Boolean'] + attr_accessible :gateway_id, :name, :value, :class_type, :description belongs_to :gateway @@ -9,7 +11,7 @@ class GatewaySetting < ActiveRecord::Base validates :class_type, :presence => true, - :inclusion => { :in => ['String', 'Integer', 'Boolean'] } + :inclusion => { :in => CLASS_TYPES } def to_s name -- cgit v1.2.3 From da861ac74a66bf3a8a13613bab5e6c72d487edb7 Mon Sep 17 00:00:00 2001 From: Stefan Wintermeyer Date: Mon, 14 Jan 2013 08:17:17 +0100 Subject: Bugfix. #99 --- app/models/gateway.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'app/models') diff --git a/app/models/gateway.rb b/app/models/gateway.rb index d879fe9..01309e6 100644 --- a/app/models/gateway.rb +++ b/app/models/gateway.rb @@ -22,7 +22,7 @@ class Gateway < ActiveRecord::Base private def downcase_technology - technology = technology.downcase + technology = technology.downcase if !technology.blank? end end -- cgit v1.2.3 From f22d65c6fc22b8c60965c318dbeab919ec62aae6 Mon Sep 17 00:00:00 2001 From: Stefan Wintermeyer Date: Mon, 14 Jan 2013 08:18:47 +0100 Subject: Bugfix #99 --- app/models/gateway.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'app/models') diff --git a/app/models/gateway.rb b/app/models/gateway.rb index 01309e6..21dc831 100644 --- a/app/models/gateway.rb +++ b/app/models/gateway.rb @@ -22,7 +22,7 @@ class Gateway < ActiveRecord::Base private def downcase_technology - technology = technology.downcase if !technology.blank? + self.technology = self.technology.downcase if !self.technology.blank? end end -- cgit v1.2.3 From effdf42ddf751d3973b44465168078344a414982 Mon Sep 17 00:00:00 2001 From: spag Date: Mon, 14 Jan 2013 09:47:51 +0100 Subject: available gateway_settings --- app/models/gateway_setting.rb | 3 +++ 1 file changed, 3 insertions(+) (limited to 'app/models') diff --git a/app/models/gateway_setting.rb b/app/models/gateway_setting.rb index cf1292d..cb430d1 100644 --- a/app/models/gateway_setting.rb +++ b/app/models/gateway_setting.rb @@ -1,5 +1,8 @@ class GatewaySetting < ActiveRecord::Base CLASS_TYPES = ['String', 'Integer', 'Boolean'] + GATEWAY_SETTINGS = { + 'sip' => { 'domain' => 'String', 'username' => 'String', 'password' => 'String', 'register' => 'Boolean' }, + } attr_accessible :gateway_id, :name, :value, :class_type, :description -- cgit v1.2.3 From d23a161907f64421a6d49b9867859d519188281c Mon Sep 17 00:00:00 2001 From: spag Date: Mon, 14 Jan 2013 17:13:05 +0100 Subject: allow header based authentication for gateways --- app/models/gateway_setting.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'app/models') diff --git a/app/models/gateway_setting.rb b/app/models/gateway_setting.rb index cb430d1..96410f4 100644 --- a/app/models/gateway_setting.rb +++ b/app/models/gateway_setting.rb @@ -1,7 +1,7 @@ class GatewaySetting < ActiveRecord::Base CLASS_TYPES = ['String', 'Integer', 'Boolean'] GATEWAY_SETTINGS = { - 'sip' => { 'domain' => 'String', 'username' => 'String', 'password' => 'String', 'register' => 'Boolean' }, + 'sip' => { 'domain' => 'String', 'username' => 'String', 'password' => 'String', 'register' => 'Boolean', 'auth_source' => 'String', 'auth_pattern' => 'String' }, } attr_accessible :gateway_id, :name, :value, :class_type, :description -- cgit v1.2.3 From 857f3de83628c1de8d1c65ce2aea36ab7bd8e8c5 Mon Sep 17 00:00:00 2001 From: spag Date: Tue, 15 Jan 2013 12:28:21 +0100 Subject: gateway settings added --- app/models/gateway_setting.rb | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'app/models') diff --git a/app/models/gateway_setting.rb b/app/models/gateway_setting.rb index 96410f4..c01f0a8 100644 --- a/app/models/gateway_setting.rb +++ b/app/models/gateway_setting.rb @@ -1,7 +1,16 @@ class GatewaySetting < ActiveRecord::Base CLASS_TYPES = ['String', 'Integer', 'Boolean'] GATEWAY_SETTINGS = { - 'sip' => { 'domain' => 'String', 'username' => 'String', 'password' => 'String', 'register' => 'Boolean', 'auth_source' => 'String', 'auth_pattern' => 'String' }, + 'sip' => { + 'domain' => 'String', + 'username' => 'String', + 'password' => 'String', + 'contact' => 'String', + 'register' => 'Boolean', + 'auth_source' => 'String', + 'auth_pattern' => 'String', + 'number_source' => 'String', + }, } attr_accessible :gateway_id, :name, :value, :class_type, :description -- cgit v1.2.3 From 8cea5d1c88e2e13ed99a5c54a1e1b69a5d6a2d01 Mon Sep 17 00:00:00 2001 From: Stefan Wintermeyer Date: Tue, 15 Jan 2013 19:05:01 +0100 Subject: Refactoring users#view and added caching. --- app/models/phone_book_entry.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'app/models') diff --git a/app/models/phone_book_entry.rb b/app/models/phone_book_entry.rb index db2b44b..275c7b6 100644 --- a/app/models/phone_book_entry.rb +++ b/app/models/phone_book_entry.rb @@ -6,7 +6,7 @@ class PhoneBookEntry < ActiveRecord::Base attr_accessible :first_name, :middle_name, :last_name, :title, :nickname, :organization, :is_organization, :department, :job_title, :is_male, :birthday, :birth_name, :description, :homepage_personal, :homepage_organization, :twitter_account, :facebook_account, :google_plus_account, :xing_account, :linkedin_account, :mobileme_account, :image - belongs_to :phone_book + belongs_to :phone_book, :touch => true has_many :conference_invitees, :dependent => :destroy acts_as_list :scope => :phone_book -- cgit v1.2.3 From bf9c8cdfb5d2754e53b15560242cc7c43603155a Mon Sep 17 00:00:00 2001 From: Stefan Wintermeyer Date: Tue, 15 Jan 2013 21:53:22 +0100 Subject: GuiFunction can not be deleted or created on the GUI. --- app/models/ability.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'app/models') diff --git a/app/models/ability.rb b/app/models/ability.rb index 0fa40c8..cd91a8a 100644 --- a/app/models/ability.rb +++ b/app/models/ability.rb @@ -74,9 +74,10 @@ class Ability cannot :manage, PhoneNumberRange end - # GsParameter can't be created or deleted via the GUI + # GsParameter and GuiFunction can't be created or deleted via the GUI # cannot [:create, :destroy], GsParameter + cannot [:create, :destroy], GuiFunction else # Any user can do the following stuff. # -- cgit v1.2.3 From 113e3c6c6117fbeca7b9bf1f0e6dc26b0db9c407 Mon Sep 17 00:00:00 2001 From: Peter Kozak Date: Wed, 16 Jan 2013 08:33:45 -0500 Subject: call_routes added --- app/models/call_route.rb | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 app/models/call_route.rb (limited to 'app/models') diff --git a/app/models/call_route.rb b/app/models/call_route.rb new file mode 100644 index 0000000..4cf2445 --- /dev/null +++ b/app/models/call_route.rb @@ -0,0 +1,3 @@ +class CallRoute < ActiveRecord::Base + attr_accessible :table, :name, :endpoint_type, :endpoint_id, :position +end -- cgit v1.2.3 From 8c83a89c6fbfdb31cae8ea6fcf2fd50c12c076a5 Mon Sep 17 00:00:00 2001 From: Peter Kozak Date: Wed, 16 Jan 2013 08:37:56 -0500 Subject: route_elements added --- app/models/route_element.rb | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 app/models/route_element.rb (limited to 'app/models') diff --git a/app/models/route_element.rb b/app/models/route_element.rb new file mode 100644 index 0000000..e845f24 --- /dev/null +++ b/app/models/route_element.rb @@ -0,0 +1,5 @@ +class RouteElement < ActiveRecord::Base + attr_accessible :call_route_id, :var_in, :var_out, :pattern, :replacement, :action, :mandatory, :position + + belongs_to :call_route +end -- cgit v1.2.3 From 0bf4d1350f5d2a07db874977674e5ae0ff0d4256 Mon Sep 17 00:00:00 2001 From: Peter Kozak Date: Wed, 16 Jan 2013 08:38:54 -0500 Subject: route_elements belong to route --- app/models/call_route.rb | 2 ++ 1 file changed, 2 insertions(+) (limited to 'app/models') diff --git a/app/models/call_route.rb b/app/models/call_route.rb index 4cf2445..eba247c 100644 --- a/app/models/call_route.rb +++ b/app/models/call_route.rb @@ -1,3 +1,5 @@ class CallRoute < ActiveRecord::Base attr_accessible :table, :name, :endpoint_type, :endpoint_id, :position + + has_many :route_elements, :dependent => :destroy end -- cgit v1.2.3 From 0ee17f52f8ad337c1240b4c55dbd8f6c6c74dc90 Mon Sep 17 00:00:00 2001 From: Stefan Wintermeyer Date: Wed, 16 Jan 2013 16:32:59 +0100 Subject: Fixed routes and breadcrumbs. #106 --- app/models/call_route.rb | 7 +++++++ app/models/route_element.rb | 5 +++++ 2 files changed, 12 insertions(+) (limited to 'app/models') diff --git a/app/models/call_route.rb b/app/models/call_route.rb index eba247c..de0f68a 100644 --- a/app/models/call_route.rb +++ b/app/models/call_route.rb @@ -2,4 +2,11 @@ class CallRoute < ActiveRecord::Base attr_accessible :table, :name, :endpoint_type, :endpoint_id, :position has_many :route_elements, :dependent => :destroy + + validates :name, + :presence => true + + def to_s + name.to_s + end end diff --git a/app/models/route_element.rb b/app/models/route_element.rb index e845f24..11bb54a 100644 --- a/app/models/route_element.rb +++ b/app/models/route_element.rb @@ -2,4 +2,9 @@ class RouteElement < ActiveRecord::Base attr_accessible :call_route_id, :var_in, :var_out, :pattern, :replacement, :action, :mandatory, :position belongs_to :call_route + + def to_s + "#{var_in} #{var_out}" + end + end -- cgit v1.2.3 From 7cdcbdc4b851b348bb21e0f2ff437138e8b9884b Mon Sep 17 00:00:00 2001 From: Stefan Wintermeyer Date: Wed, 16 Jan 2013 21:00:41 +0100 Subject: Added page caching for the gemeinschaft_setup#new page. --- app/models/gemeinschaft_setup.rb | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'app/models') diff --git a/app/models/gemeinschaft_setup.rb b/app/models/gemeinschaft_setup.rb index b445b21..0b3eeae 100644 --- a/app/models/gemeinschaft_setup.rb +++ b/app/models/gemeinschaft_setup.rb @@ -5,4 +5,13 @@ class GemeinschaftSetup < ActiveRecord::Base accepts_nested_attributes_for :sip_domain belongs_to :country belongs_to :language + + # Remove the cache which was created by the heater rake task. + # + after_create :expire_cache + + private + def expire_cache + ActionController::Base.expire_page(Rails.application.routes.url_helpers.new_gemeinschaft_setup_path) + end end -- cgit v1.2.3 From a8a0c40dfae8844162bd472faa9badc38d30d2d5 Mon Sep 17 00:00:00 2001 From: spag Date: Wed, 16 Jan 2013 23:08:08 +0100 Subject: acts_as_list --- app/models/route_element.rb | 2 ++ 1 file changed, 2 insertions(+) (limited to 'app/models') diff --git a/app/models/route_element.rb b/app/models/route_element.rb index 11bb54a..6f6fd3f 100644 --- a/app/models/route_element.rb +++ b/app/models/route_element.rb @@ -3,6 +3,8 @@ class RouteElement < ActiveRecord::Base belongs_to :call_route + acts_as_list :scope => :call_route + def to_s "#{var_in} #{var_out}" end -- cgit v1.2.3 From f7f1785023f6fa52775c7ab2796fc247bf1ab15f Mon Sep 17 00:00:00 2001 From: spag Date: Wed, 16 Jan 2013 23:08:13 +0100 Subject: acts_as_list --- app/models/call_route.rb | 2 ++ 1 file changed, 2 insertions(+) (limited to 'app/models') diff --git a/app/models/call_route.rb b/app/models/call_route.rb index de0f68a..e423030 100644 --- a/app/models/call_route.rb +++ b/app/models/call_route.rb @@ -6,6 +6,8 @@ class CallRoute < ActiveRecord::Base validates :name, :presence => true + acts_as_list :scope => '`table` = \'#{table}\'' + def to_s name.to_s end -- cgit v1.2.3 From 1d18e9d7fc16501d7622889df9d6ef05c75adb2f Mon Sep 17 00:00:00 2001 From: spag Date: Thu, 17 Jan 2013 06:59:08 +0100 Subject: validations --- app/models/call_route.rb | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'app/models') diff --git a/app/models/call_route.rb b/app/models/call_route.rb index e423030..f6a3dd3 100644 --- a/app/models/call_route.rb +++ b/app/models/call_route.rb @@ -1,4 +1,6 @@ class CallRoute < ActiveRecord::Base + ROUTING_TABLES = ['prerouting', 'outbound', 'inbound'] + attr_accessible :table, :name, :endpoint_type, :endpoint_id, :position has_many :route_elements, :dependent => :destroy @@ -6,6 +8,10 @@ class CallRoute < ActiveRecord::Base validates :name, :presence => true + validates :table, + :presence => true, + :inclusion => { :in => ROUTING_TABLES } + acts_as_list :scope => '`table` = \'#{table}\'' def to_s -- cgit v1.2.3 From 85d8dc12c3963f78ea1db4089c6ff2fa6ec205e9 Mon Sep 17 00:00:00 2001 From: spag Date: Thu, 17 Jan 2013 07:44:01 +0100 Subject: validations --- app/models/route_element.rb | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'app/models') diff --git a/app/models/route_element.rb b/app/models/route_element.rb index 6f6fd3f..d3302ea 100644 --- a/app/models/route_element.rb +++ b/app/models/route_element.rb @@ -1,10 +1,23 @@ class RouteElement < ActiveRecord::Base + ELEMENT_ACTIONS = ['match', 'not_match', 'set_route_var', 'set_header'] + attr_accessible :call_route_id, :var_in, :var_out, :pattern, :replacement, :action, :mandatory, :position belongs_to :call_route acts_as_list :scope => :call_route + validates :var_in, + :presence => true + + validates :pattern, + :presence => true + + validates :action, + :presence => true, + :inclusion => { :in => ELEMENT_ACTIONS } + + def to_s "#{var_in} #{var_out}" end -- cgit v1.2.3 From b086515a8a82f572e204bac9cb8c139ca8a0960d Mon Sep 17 00:00:00 2001 From: spag Date: Thu, 17 Jan 2013 15:11:48 +0100 Subject: element actions --- app/models/route_element.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'app/models') diff --git a/app/models/route_element.rb b/app/models/route_element.rb index d3302ea..32f730d 100644 --- a/app/models/route_element.rb +++ b/app/models/route_element.rb @@ -1,5 +1,5 @@ class RouteElement < ActiveRecord::Base - ELEMENT_ACTIONS = ['match', 'not_match', 'set_route_var', 'set_header'] + ELEMENT_ACTIONS = ['none', 'match', 'not_match', 'set'] attr_accessible :call_route_id, :var_in, :var_out, :pattern, :replacement, :action, :mandatory, :position -- cgit v1.2.3 From 17206a20e5bcb44fa4d90f0e176f7aa0fe43bca3 Mon Sep 17 00:00:00 2001 From: spag Date: Thu, 17 Jan 2013 21:51:58 +0100 Subject: rename_column table to routing_table --- app/models/call_route.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'app/models') diff --git a/app/models/call_route.rb b/app/models/call_route.rb index f6a3dd3..0df961d 100644 --- a/app/models/call_route.rb +++ b/app/models/call_route.rb @@ -1,7 +1,7 @@ class CallRoute < ActiveRecord::Base ROUTING_TABLES = ['prerouting', 'outbound', 'inbound'] - attr_accessible :table, :name, :endpoint_type, :endpoint_id, :position + attr_accessible :routing_table, :name, :endpoint_type, :endpoint_id, :position has_many :route_elements, :dependent => :destroy @@ -12,7 +12,7 @@ class CallRoute < ActiveRecord::Base :presence => true, :inclusion => { :in => ROUTING_TABLES } - acts_as_list :scope => '`table` = \'#{table}\'' + acts_as_list :scope => '`routing_table` = \'#{routing_table}\'' def to_s name.to_s -- cgit v1.2.3 From 73c9984510d572030329d967e44c6adb00d98613 Mon Sep 17 00:00:00 2001 From: Stefan Wintermeyer Date: Fri, 18 Jan 2013 08:11:56 +0100 Subject: Clean up mess which was created by renaming :table to :routing_table. --- app/models/call_route.rb | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'app/models') diff --git a/app/models/call_route.rb b/app/models/call_route.rb index 0df961d..5d90901 100644 --- a/app/models/call_route.rb +++ b/app/models/call_route.rb @@ -1,14 +1,15 @@ class CallRoute < ActiveRecord::Base - ROUTING_TABLES = ['prerouting', 'outbound', 'inbound'] + # https://github.com/rails/strong_parameters + include ActiveModel::ForbiddenAttributesProtection - attr_accessible :routing_table, :name, :endpoint_type, :endpoint_id, :position + ROUTING_TABLES = ['prerouting', 'outbound', 'inbound'] has_many :route_elements, :dependent => :destroy validates :name, :presence => true - validates :table, + validates :routing_table, :presence => true, :inclusion => { :in => ROUTING_TABLES } -- cgit v1.2.3 From 808c04b5b1776927dc7b854bb2a69d34b287c24c Mon Sep 17 00:00:00 2001 From: spag Date: Fri, 18 Jan 2013 09:45:54 +0100 Subject: validations removed --- app/models/route_element.rb | 6 ------ 1 file changed, 6 deletions(-) (limited to 'app/models') diff --git a/app/models/route_element.rb b/app/models/route_element.rb index 32f730d..87b26ef 100644 --- a/app/models/route_element.rb +++ b/app/models/route_element.rb @@ -7,12 +7,6 @@ class RouteElement < ActiveRecord::Base acts_as_list :scope => :call_route - validates :var_in, - :presence => true - - validates :pattern, - :presence => true - validates :action, :presence => true, :inclusion => { :in => ELEMENT_ACTIONS } -- cgit v1.2.3 From 8feb9102570d23f53c3443ccd3a409d87c97828d Mon Sep 17 00:00:00 2001 From: Stefan Wintermeyer Date: Fri, 18 Jan 2013 10:57:12 +0100 Subject: Refactoring and fixing #112 --- app/models/ability.rb | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'app/models') diff --git a/app/models/ability.rb b/app/models/ability.rb index cd91a8a..b846af0 100644 --- a/app/models/ability.rb +++ b/app/models/ability.rb @@ -27,6 +27,10 @@ class Ability # cannot [:create, :destroy, :edit, :update], Tenant, :id => 1 + # Can't destroy any tenant + # + cannot :destroy, Tenant + cannot :manage, PhoneBook # Phonebooks and PhoneBookEntries -- cgit v1.2.3 From 8c2ffa8f9308235e151ae8f16393ee10b08b07c1 Mon Sep 17 00:00:00 2001 From: spag Date: Fri, 18 Jan 2013 15:14:17 +0100 Subject: moh defaults to moh --- app/models/automatic_call_distributor.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'app/models') diff --git a/app/models/automatic_call_distributor.rb b/app/models/automatic_call_distributor.rb index a34392e..5807757 100644 --- a/app/models/automatic_call_distributor.rb +++ b/app/models/automatic_call_distributor.rb @@ -26,6 +26,6 @@ class AutomaticCallDistributor < ActiveRecord::Base self.announce_call_agents ||= 'ivr/ivr-stay_on_line_call_answered_momentarily.wav' self.greeting ||= 'ivr/ivr-thank_you_for_calling.wav' self.goodbye ||= 'ivr/ivr-thank_you_for_calling.wav' - self.music ||= 'local_stream://mohl' + self.music ||= 'local_stream://moh' end end -- cgit v1.2.3 From b4abd87252db53e3d79a9601cf9c581f61827f10 Mon Sep 17 00:00:00 2001 From: Stefan Wintermeyer Date: Sat, 19 Jan 2013 09:05:50 +0100 Subject: Added call_routes to tenant#show --- app/models/route_element.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'app/models') diff --git a/app/models/route_element.rb b/app/models/route_element.rb index 87b26ef..324a26d 100644 --- a/app/models/route_element.rb +++ b/app/models/route_element.rb @@ -13,7 +13,7 @@ class RouteElement < ActiveRecord::Base def to_s - "#{var_in} #{var_out}" + "#{pattern} => #{var_in} #{var_out}" end end -- cgit v1.2.3 From c1cdcc3927a8632157017cf15801d2a508eed2ad Mon Sep 17 00:00:00 2001 From: spag Date: Sat, 19 Jan 2013 09:08:36 +0100 Subject: move methods added --- app/models/call_route.rb | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'app/models') diff --git a/app/models/call_route.rb b/app/models/call_route.rb index 5d90901..1fe61e9 100644 --- a/app/models/call_route.rb +++ b/app/models/call_route.rb @@ -18,4 +18,12 @@ class CallRoute < ActiveRecord::Base def to_s name.to_s end + + def move_up? + return self.position.to_i > CallRoute.where(:routing_table => self.routing_table ).order(:position).first.position.to_i + end + + def move_down? + return self.position.to_i < CallRoute.where(:routing_table => self.routing_table ).order(:position).last.position.to_i + end end -- cgit v1.2.3 From bcbfb154a321953fd32696065e6af1bec85f9345 Mon Sep 17 00:00:00 2001 From: spag Date: Sat, 19 Jan 2013 09:17:41 +0100 Subject: move methods added --- app/models/route_element.rb | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'app/models') diff --git a/app/models/route_element.rb b/app/models/route_element.rb index 324a26d..94f0f84 100644 --- a/app/models/route_element.rb +++ b/app/models/route_element.rb @@ -16,4 +16,11 @@ class RouteElement < ActiveRecord::Base "#{pattern} => #{var_in} #{var_out}" end + def move_up? + #return self.position.to_i > RouteElement.where(:call_route_id => self.call_route_id ).order(:position).first.position.to_i + end + + def move_down? + #return self.position.to_i < RouteElement.where(:call_route_id => self.call_route_id ).order(:position).last.position.to_i + end end -- cgit v1.2.3 From 4e67f8769a3a3199bfb5b363fe9baa231c329a2b Mon Sep 17 00:00:00 2001 From: Stefan Wintermeyer Date: Sun, 20 Jan 2013 20:57:35 +0100 Subject: Refactoring --- app/models/gateway.rb | 7 +++++++ app/models/tenant.rb | 11 ++--------- 2 files changed, 9 insertions(+), 9 deletions(-) (limited to 'app/models') diff --git a/app/models/gateway.rb b/app/models/gateway.rb index 21dc831..3e791a6 100644 --- a/app/models/gateway.rb +++ b/app/models/gateway.rb @@ -14,6 +14,7 @@ class Gateway < ActiveRecord::Base :presence => true, :inclusion => { :in => TECHNOLOGIES } + after_initialize :set_defaults before_validation :downcase_technology def to_s @@ -25,4 +26,10 @@ class Gateway < ActiveRecord::Base self.technology = self.technology.downcase if !self.technology.blank? end + def set_defaults + if TECHNOLOGIES.count == 1 + self.technology = TECHNOLOGIES.first + end + end + end diff --git a/app/models/tenant.rb b/app/models/tenant.rb index c3e2926..419ac3a 100644 --- a/app/models/tenant.rb +++ b/app/models/tenant.rb @@ -1,15 +1,8 @@ # encoding: UTF-8 class Tenant < ActiveRecord::Base - attr_accessible :name, :description, :sip_domain_id, :country_id, :language_id, :from_field_pin_change_email, :from_field_voicemail_email - - if GsParameter.get('STRICT_INTERNAL_EXTENSION_HANDLING') == true - attr_accessible :internal_extension_ranges - end - - if GsParameter.get('STRICT_DID_HANDLING') == true - attr_accessible :did_list - end + # https://github.com/rails/strong_parameters + include ActiveModel::ForbiddenAttributesProtection # Associations: # -- cgit v1.2.3 From f7c8227521a758f769d3bde892b8b7201bf841dc Mon Sep 17 00:00:00 2001 From: spag Date: Mon, 21 Jan 2013 13:02:49 +0100 Subject: factory_defaults_prerouting method added --- app/models/call_route.rb | 212 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 212 insertions(+) (limited to 'app/models') diff --git a/app/models/call_route.rb b/app/models/call_route.rb index 1fe61e9..0bf7816 100644 --- a/app/models/call_route.rb +++ b/app/models/call_route.rb @@ -26,4 +26,216 @@ class CallRoute < ActiveRecord::Base def move_down? return self.position.to_i < CallRoute.where(:routing_table => self.routing_table ).order(:position).last.position.to_i end + + def self.factory_defaults_prerouting(country_code, national_prefix = '', international_prefix = '', trunk_prefix = '', area_code = '') + CallRoute.where(:routing_table => "prerouting").destroy_all + + CallRoute.create_prerouting_entry('international call', [ + { :pattern => '^'+trunk_prefix+international_prefix+'([1-9]%d+)$', :replacement => '+%1', }, + ], 'phonenumber') + + CallRoute.create_prerouting_entry('national call', [ + { :pattern => '^'+trunk_prefix+national_prefix+'([1-9]%d+)$', :replacement => '+'+country_code+'%1', }, + ], 'phonenumber') + + if !trunk_prefix.blank? && !area_code.blank? + CallRoute.create_prerouting_entry('local call', [ + { :pattern => '^'+trunk_prefix+'([1-9]%d+)$', :replacement => '+'+country_code+area_code+'%1', }, + ], 'phonenumber') + end + + CallRoute.create_prerouting_entry('log in', [ + { :pattern => '^%*0%*$', :replacement => 'f-li', }, + { :pattern => '^%*0%*(%+?%d+)#*$', :replacement => 'f-li-%1', }, + { :pattern => '^%*0%*(%+?%d+)%*(%d+)#*$', :replacement => 'f-li-%1-%2', }, + ]) + + CallRoute.create_prerouting_entry('log out', [ + { :pattern => '^#0#$', :replacement => 'f-lo', }, + ]) + + CallRoute.create_prerouting_entry('toggle ACD membership', [ + { :pattern => '^%*5%*(%+?%d+)#$', :replacement => 'f-acdmtg-0-%1', }, + ]) + + CallRoute.create_prerouting_entry('activate CLIP', [ + { :pattern => '^%*30#$', :replacement => 'f-clipon', }, + ]) + + CallRoute.create_prerouting_entry('deactivate CLIP', [ + { :pattern => '^#30#$', :replacement => 'f-clipoff', }, + ]) + + CallRoute.create_prerouting_entry('activate CLIR', [ + { :pattern => '^#31#$', :replacement => 'f-cliron', }, + ]) + + CallRoute.create_prerouting_entry('deactivate CLIR', [ + { :pattern => '^%*31#$', :replacement => 'f-cliroff', }, + ]) + + elements = [ + { :pattern => '^#31#(%+?[1-9]%d+)$', :replacement => 'f-dcliron-%1', }, + { :pattern => '^#31#'+trunk_prefix+international_prefix+'([1-9]%d+)$', :replacement => 'f-dcliron-+%1' }, + { :pattern => '^#31#'+trunk_prefix+national_prefix+'([1-9]%d+)$', :replacement => 'f-dcliron-+'+country_code+'%1' }, + ] + + if !trunk_prefix.blank? && !area_code.blank? + elements << { :pattern => '^#31#'+trunk_prefix+'([1-9]%d+)$', :replacement => 'f-dcliron-+'+country_code+area_code+'%1' } + end + + CallRoute.create_prerouting_entry('activate CLIR for call', elements) + + elements = [ + { :pattern => '^%*31#(%+?[1-9]%d+)$', :replacement => 'f-dcliroff-%1', }, + { :pattern => '^%*31#'+trunk_prefix+international_prefix+'([1-9]%d+)$', :replacement => 'f-dcliroff-+%1' }, + { :pattern => '^%*31#'+trunk_prefix+national_prefix+'([1-9]%d+)$', :replacement => 'f-dcliroff-+'+country_code+'%1' }, + ] + + if !trunk_prefix.blank? && !area_code.blank? + elements << { :pattern => '^%*31#'+trunk_prefix+'([1-9]%d+)$', :replacement => 'f-dcliroff-+'+country_code+area_code+'%1' } + end + + CallRoute.create_prerouting_entry('deactivate CLIR for call', elements) + + CallRoute.create_prerouting_entry('activate call waiting', [ + { :pattern => '^%*43#$', :replacement => 'f-cwaon', }, + ]) + + CallRoute.create_prerouting_entry('deactivate call waiting', [ + { :pattern => '^#43#$', :replacement => 'f-cwaoff', }, + ]) + + CallRoute.create_prerouting_entry('deactivate all call forwards', [ + { :pattern => '^#002#$', :replacement => 'f-cfoff', }, + ]) + + CallRoute.create_prerouting_entry('delete all call forwards', [ + { :pattern => '^##002#$', :replacement => 'f-cfdel', }, + ]) + + elements = [ + { :pattern => '^%*21#$', :replacement => 'f-cfu', }, + { :pattern => '^%*%*?21%*(%+?[1-9]%d+)#$', :replacement => 'f-cfu-%1', }, + { :pattern => '^%*%*?21%*'+trunk_prefix+international_prefix+'([1-9]%d+)#$', :replacement => 'f-cfu-+%1', }, + { :pattern => '^%*%*?21%*'+trunk_prefix+national_prefix+'([1-9]%d+)#$', :replacement => 'f-cfu-+'+country_code+'%1', }, + ] + + if !trunk_prefix.blank? && !area_code.blank? + elements << { :pattern => '^%*%*?21%*'+trunk_prefix+'([1-9]%d+)#$', :replacement => 'f-cfu-+'+country_code+area_code+'%1' } + end + + CallRoute.create_prerouting_entry('set unconditional call forwarding', elements) + + CallRoute.create_prerouting_entry('deactivate unconditional call forwarding', [ + { :pattern => '^#21#$', :replacement => 'f-cfuoff', }, + ]) + + CallRoute.create_prerouting_entry('delete unconditional call forwarding', [ + { :pattern => '^##21#$', :replacement => 'f-cfudel', }, + ]) + + elements = [ + { :pattern => '^%*61#$', :replacement => 'f-cfn', }, + { :pattern => '^%*%*?61%*'+trunk_prefix+international_prefix+'([1-9]%d+)#$', :replacement => 'f-cfn-+%1', }, + { :pattern => '^%*%*?61%*'+trunk_prefix+national_prefix+'([1-9]%d+)#$', :replacement => 'f-cfn-+'+country_code+'%1', }, + { :pattern => '^%*%*?61%*(%+?[1-9]%d+)#$', :replacement => 'f-cfn-%1', }, + { :pattern => '^%*%*?61%*'+trunk_prefix+international_prefix+'([1-9]%d+)%*(%d+)#$', :replacement => 'f-cfn-+%1-%2', }, + { :pattern => '^%*%*?61%*'+trunk_prefix+national_prefix+'([1-9]%d+)%*(%d+)#$', :replacement => 'f-cfn-+'+country_code+'%1-%2', }, + { :pattern => '^%*%*?61%*(%+?[1-9]%d+)%*(%d+)#$', :replacement => 'f-cfn-%1-%2', }, + ] + + if !trunk_prefix.blank? && !area_code.blank? + elements << { :pattern => '^%*%*?61%*'+trunk_prefix+'([1-9]%d+)#$', :replacement => 'f-cfn-+'+country_code+area_code+'%1' } + elements << { :pattern => '^%*%*?61%*'+trunk_prefix+'([1-9]%d+)%*(%d+)#$', :replacement => 'f-cfn-+'+country_code+area_code+'%1-%2' } + end + + CallRoute.create_prerouting_entry('call forward if not answered', elements) + + CallRoute.create_prerouting_entry('deactivate call forward if not answered', [ + { :pattern => '^#61#$', :replacement => 'f-cfnoff', }, + ]) + + CallRoute.create_prerouting_entry('delete call forward if not answered', [ + { :pattern => '^##61#$', :replacement => 'f-cfndel', }, + ]) + + elements = [ + { :pattern => '^%*62#$', :replacement => 'f-cfo', }, + { :pattern => '^%*%*?62%*(%+?[1-9]%d+)#$', :replacement => 'f-cfo-%1', }, + { :pattern => '^%*%*?62%*'+trunk_prefix+international_prefix+'([1-9]%d+)#$', :replacement => 'f-cfo-+%1', }, + { :pattern => '^%*%*?62%*'+trunk_prefix+national_prefix+'([1-9]%d+)#$', :replacement => 'f-cfo-+'+country_code+'%1', }, + ] + + if !trunk_prefix.blank? && !area_code.blank? + elements << { :pattern => '^%*%*?62%*'+trunk_prefix+'([1-9]%d+)#$', :replacement => 'f-cfo-+'+country_code+area_code+'%1' } + end + + CallRoute.create_prerouting_entry('call forward if offline', elements) + + CallRoute.create_prerouting_entry('deactivate call forward if offline', [ + { :pattern => '^#62#$', :replacement => 'f-cfooff', }, + ]) + + CallRoute.create_prerouting_entry('delete call forward if offline', [ + { :pattern => '^##62#$', :replacement => 'f-cfodel', }, + ]) + + elements = [ + { :pattern => '^%*67#$', :replacement => 'f-cfb', }, + { :pattern => '^%*%*?67%*(%+?[1-9]%d+)#$', :replacement => 'f-cfb-%1', }, + { :pattern => '^%*%*?67%*'+trunk_prefix+international_prefix+'([1-9]%d+)#$', :replacement => 'f-cfb-+%1', }, + { :pattern => '^%*%*?67%*'+trunk_prefix+national_prefix+'([1-9]%d+)#$', :replacement => 'f-cfb-+'+country_code+'%1', }, + ] + + if !trunk_prefix.blank? && !area_code.blank? + elements << { :pattern => '^%*%*?67%*'+trunk_prefix+'([1-9]%d+)#$', :replacement => 'f-cfb-+'+country_code+area_code+'%1' } + end + + CallRoute.create_prerouting_entry('call forward if busy', elements) + + CallRoute.create_prerouting_entry('deactivate call forward if busy', [ + { :pattern => '^#67#$', :replacement => 'f-cfboff', }, + ]) + + CallRoute.create_prerouting_entry('delete call forward if busy', [ + { :pattern => '^##67#$', :replacement => 'f-cfbdel', }, + ]) + + + CallRoute.create_prerouting_entry('redial', [ + { :pattern => '^%*66#$', :replacement => 'f-redial', }, + ]) + + CallRoute.create_prerouting_entry('check voicemail', [ + { :pattern => '^%*98$', :replacement => 'f-vmcheck', }, + { :pattern => '^%*98#$', :replacement => 'f-vmcheck', }, + { :pattern => '^%*98%*(%+?%d+)#$', :replacement => 'f-vmcheck-%1', }, + ]) + + CallRoute.create_prerouting_entry('acivate auto logout', [ + { :pattern => '^%*1337%*1%*1#$', :replacement => 'f-loaon', }, + ]) + + CallRoute.create_prerouting_entry('deacivate auto logout', [ + { :pattern => '^%*1337%*1%*0#$', :replacement => 'f-loaoff', }, + ]) + end + + def self.create_prerouting_entry(name, elements, endpoint_type = 'dialplanfunction') + call_route = CallRoute.create(:routing_table => 'prerouting', :name => name, :endpoint_type => endpoint_type) + + if !call_route.errors.any? then + elements.each do |element| + call_route.route_elements.create( + :var_in => 'destination_number', + :var_out => 'destination_number', + :pattern => element[:pattern], + :replacement => element[:replacement], + :action => 'match', + :mandatory => false + ) + end + end + end end -- cgit v1.2.3 From 86e94e36e52ff7a3dbc7219db5b3bea5a7f56711 Mon Sep 17 00:00:00 2001 From: Stefan Wintermeyer Date: Mon, 21 Jan 2013 14:09:38 +0100 Subject: factory_defaults_prerouting --- app/models/gemeinschaft_setup.rb | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'app/models') diff --git a/app/models/gemeinschaft_setup.rb b/app/models/gemeinschaft_setup.rb index 0b3eeae..6056236 100644 --- a/app/models/gemeinschaft_setup.rb +++ b/app/models/gemeinschaft_setup.rb @@ -10,8 +10,20 @@ class GemeinschaftSetup < ActiveRecord::Base # after_create :expire_cache + before_validation :format_default_area_code + private def expire_cache ActionController::Base.expire_page(Rails.application.routes.url_helpers.new_gemeinschaft_setup_path) end + + def format_default_area_code + if self.default_area_code.blank? + self.default_area_code = nil + else + if self.country != nil && !self.country.trunk_prefix.blank? + self.default_area_code.gsub(/^#{self.country.trunk_prefix}/,'') + end + end + end end -- cgit v1.2.3 From 7159618255c6911075723f6b11ba84b85e9e40cd Mon Sep 17 00:00:00 2001 From: spag Date: Mon, 21 Jan 2013 14:49:11 +0100 Subject: naming --- app/models/call_route.rb | 64 ++++++++++++++++++++++++------------------------ 1 file changed, 32 insertions(+), 32 deletions(-) (limited to 'app/models') diff --git a/app/models/call_route.rb b/app/models/call_route.rb index 0bf7816..28120c1 100644 --- a/app/models/call_route.rb +++ b/app/models/call_route.rb @@ -27,20 +27,20 @@ class CallRoute < ActiveRecord::Base return self.position.to_i < CallRoute.where(:routing_table => self.routing_table ).order(:position).last.position.to_i end - def self.factory_defaults_prerouting(country_code, national_prefix = '', international_prefix = '', trunk_prefix = '', area_code = '') + def self.factory_defaults_prerouting(country_code, national_prefix = '', international_prefix = '', trunk_access_code = '', area_code = '') CallRoute.where(:routing_table => "prerouting").destroy_all CallRoute.create_prerouting_entry('international call', [ - { :pattern => '^'+trunk_prefix+international_prefix+'([1-9]%d+)$', :replacement => '+%1', }, + { :pattern => '^'+trunk_access_code+international_prefix+'([1-9]%d+)$', :replacement => '+%1', }, ], 'phonenumber') CallRoute.create_prerouting_entry('national call', [ - { :pattern => '^'+trunk_prefix+national_prefix+'([1-9]%d+)$', :replacement => '+'+country_code+'%1', }, + { :pattern => '^'+trunk_access_code+national_prefix+'([1-9]%d+)$', :replacement => '+'+country_code+'%1', }, ], 'phonenumber') - if !trunk_prefix.blank? && !area_code.blank? + if !trunk_access_code.blank? && !area_code.blank? CallRoute.create_prerouting_entry('local call', [ - { :pattern => '^'+trunk_prefix+'([1-9]%d+)$', :replacement => '+'+country_code+area_code+'%1', }, + { :pattern => '^'+trunk_access_code+'([1-9]%d+)$', :replacement => '+'+country_code+area_code+'%1', }, ], 'phonenumber') end @@ -76,24 +76,24 @@ class CallRoute < ActiveRecord::Base elements = [ { :pattern => '^#31#(%+?[1-9]%d+)$', :replacement => 'f-dcliron-%1', }, - { :pattern => '^#31#'+trunk_prefix+international_prefix+'([1-9]%d+)$', :replacement => 'f-dcliron-+%1' }, - { :pattern => '^#31#'+trunk_prefix+national_prefix+'([1-9]%d+)$', :replacement => 'f-dcliron-+'+country_code+'%1' }, + { :pattern => '^#31#'+trunk_access_code+international_prefix+'([1-9]%d+)$', :replacement => 'f-dcliron-+%1' }, + { :pattern => '^#31#'+trunk_access_code+national_prefix+'([1-9]%d+)$', :replacement => 'f-dcliron-+'+country_code+'%1' }, ] - if !trunk_prefix.blank? && !area_code.blank? - elements << { :pattern => '^#31#'+trunk_prefix+'([1-9]%d+)$', :replacement => 'f-dcliron-+'+country_code+area_code+'%1' } + if !trunk_access_code.blank? && !area_code.blank? + elements << { :pattern => '^#31#'+trunk_access_code+'([1-9]%d+)$', :replacement => 'f-dcliron-+'+country_code+area_code+'%1' } end CallRoute.create_prerouting_entry('activate CLIR for call', elements) elements = [ { :pattern => '^%*31#(%+?[1-9]%d+)$', :replacement => 'f-dcliroff-%1', }, - { :pattern => '^%*31#'+trunk_prefix+international_prefix+'([1-9]%d+)$', :replacement => 'f-dcliroff-+%1' }, - { :pattern => '^%*31#'+trunk_prefix+national_prefix+'([1-9]%d+)$', :replacement => 'f-dcliroff-+'+country_code+'%1' }, + { :pattern => '^%*31#'+trunk_access_code+international_prefix+'([1-9]%d+)$', :replacement => 'f-dcliroff-+%1' }, + { :pattern => '^%*31#'+trunk_access_code+national_prefix+'([1-9]%d+)$', :replacement => 'f-dcliroff-+'+country_code+'%1' }, ] - if !trunk_prefix.blank? && !area_code.blank? - elements << { :pattern => '^%*31#'+trunk_prefix+'([1-9]%d+)$', :replacement => 'f-dcliroff-+'+country_code+area_code+'%1' } + if !trunk_access_code.blank? && !area_code.blank? + elements << { :pattern => '^%*31#'+trunk_access_code+'([1-9]%d+)$', :replacement => 'f-dcliroff-+'+country_code+area_code+'%1' } end CallRoute.create_prerouting_entry('deactivate CLIR for call', elements) @@ -117,12 +117,12 @@ class CallRoute < ActiveRecord::Base elements = [ { :pattern => '^%*21#$', :replacement => 'f-cfu', }, { :pattern => '^%*%*?21%*(%+?[1-9]%d+)#$', :replacement => 'f-cfu-%1', }, - { :pattern => '^%*%*?21%*'+trunk_prefix+international_prefix+'([1-9]%d+)#$', :replacement => 'f-cfu-+%1', }, - { :pattern => '^%*%*?21%*'+trunk_prefix+national_prefix+'([1-9]%d+)#$', :replacement => 'f-cfu-+'+country_code+'%1', }, + { :pattern => '^%*%*?21%*'+trunk_access_code+international_prefix+'([1-9]%d+)#$', :replacement => 'f-cfu-+%1', }, + { :pattern => '^%*%*?21%*'+trunk_access_code+national_prefix+'([1-9]%d+)#$', :replacement => 'f-cfu-+'+country_code+'%1', }, ] - if !trunk_prefix.blank? && !area_code.blank? - elements << { :pattern => '^%*%*?21%*'+trunk_prefix+'([1-9]%d+)#$', :replacement => 'f-cfu-+'+country_code+area_code+'%1' } + if !trunk_access_code.blank? && !area_code.blank? + elements << { :pattern => '^%*%*?21%*'+trunk_access_code+'([1-9]%d+)#$', :replacement => 'f-cfu-+'+country_code+area_code+'%1' } end CallRoute.create_prerouting_entry('set unconditional call forwarding', elements) @@ -137,17 +137,17 @@ class CallRoute < ActiveRecord::Base elements = [ { :pattern => '^%*61#$', :replacement => 'f-cfn', }, - { :pattern => '^%*%*?61%*'+trunk_prefix+international_prefix+'([1-9]%d+)#$', :replacement => 'f-cfn-+%1', }, - { :pattern => '^%*%*?61%*'+trunk_prefix+national_prefix+'([1-9]%d+)#$', :replacement => 'f-cfn-+'+country_code+'%1', }, + { :pattern => '^%*%*?61%*'+trunk_access_code+international_prefix+'([1-9]%d+)#$', :replacement => 'f-cfn-+%1', }, + { :pattern => '^%*%*?61%*'+trunk_access_code+national_prefix+'([1-9]%d+)#$', :replacement => 'f-cfn-+'+country_code+'%1', }, { :pattern => '^%*%*?61%*(%+?[1-9]%d+)#$', :replacement => 'f-cfn-%1', }, - { :pattern => '^%*%*?61%*'+trunk_prefix+international_prefix+'([1-9]%d+)%*(%d+)#$', :replacement => 'f-cfn-+%1-%2', }, - { :pattern => '^%*%*?61%*'+trunk_prefix+national_prefix+'([1-9]%d+)%*(%d+)#$', :replacement => 'f-cfn-+'+country_code+'%1-%2', }, + { :pattern => '^%*%*?61%*'+trunk_access_code+international_prefix+'([1-9]%d+)%*(%d+)#$', :replacement => 'f-cfn-+%1-%2', }, + { :pattern => '^%*%*?61%*'+trunk_access_code+national_prefix+'([1-9]%d+)%*(%d+)#$', :replacement => 'f-cfn-+'+country_code+'%1-%2', }, { :pattern => '^%*%*?61%*(%+?[1-9]%d+)%*(%d+)#$', :replacement => 'f-cfn-%1-%2', }, ] - if !trunk_prefix.blank? && !area_code.blank? - elements << { :pattern => '^%*%*?61%*'+trunk_prefix+'([1-9]%d+)#$', :replacement => 'f-cfn-+'+country_code+area_code+'%1' } - elements << { :pattern => '^%*%*?61%*'+trunk_prefix+'([1-9]%d+)%*(%d+)#$', :replacement => 'f-cfn-+'+country_code+area_code+'%1-%2' } + if !trunk_access_code.blank? && !area_code.blank? + elements << { :pattern => '^%*%*?61%*'+trunk_access_code+'([1-9]%d+)#$', :replacement => 'f-cfn-+'+country_code+area_code+'%1' } + elements << { :pattern => '^%*%*?61%*'+trunk_access_code+'([1-9]%d+)%*(%d+)#$', :replacement => 'f-cfn-+'+country_code+area_code+'%1-%2' } end CallRoute.create_prerouting_entry('call forward if not answered', elements) @@ -163,12 +163,12 @@ class CallRoute < ActiveRecord::Base elements = [ { :pattern => '^%*62#$', :replacement => 'f-cfo', }, { :pattern => '^%*%*?62%*(%+?[1-9]%d+)#$', :replacement => 'f-cfo-%1', }, - { :pattern => '^%*%*?62%*'+trunk_prefix+international_prefix+'([1-9]%d+)#$', :replacement => 'f-cfo-+%1', }, - { :pattern => '^%*%*?62%*'+trunk_prefix+national_prefix+'([1-9]%d+)#$', :replacement => 'f-cfo-+'+country_code+'%1', }, + { :pattern => '^%*%*?62%*'+trunk_access_code+international_prefix+'([1-9]%d+)#$', :replacement => 'f-cfo-+%1', }, + { :pattern => '^%*%*?62%*'+trunk_access_code+national_prefix+'([1-9]%d+)#$', :replacement => 'f-cfo-+'+country_code+'%1', }, ] - if !trunk_prefix.blank? && !area_code.blank? - elements << { :pattern => '^%*%*?62%*'+trunk_prefix+'([1-9]%d+)#$', :replacement => 'f-cfo-+'+country_code+area_code+'%1' } + if !trunk_access_code.blank? && !area_code.blank? + elements << { :pattern => '^%*%*?62%*'+trunk_access_code+'([1-9]%d+)#$', :replacement => 'f-cfo-+'+country_code+area_code+'%1' } end CallRoute.create_prerouting_entry('call forward if offline', elements) @@ -184,12 +184,12 @@ class CallRoute < ActiveRecord::Base elements = [ { :pattern => '^%*67#$', :replacement => 'f-cfb', }, { :pattern => '^%*%*?67%*(%+?[1-9]%d+)#$', :replacement => 'f-cfb-%1', }, - { :pattern => '^%*%*?67%*'+trunk_prefix+international_prefix+'([1-9]%d+)#$', :replacement => 'f-cfb-+%1', }, - { :pattern => '^%*%*?67%*'+trunk_prefix+national_prefix+'([1-9]%d+)#$', :replacement => 'f-cfb-+'+country_code+'%1', }, + { :pattern => '^%*%*?67%*'+trunk_access_code+international_prefix+'([1-9]%d+)#$', :replacement => 'f-cfb-+%1', }, + { :pattern => '^%*%*?67%*'+trunk_access_code+national_prefix+'([1-9]%d+)#$', :replacement => 'f-cfb-+'+country_code+'%1', }, ] - if !trunk_prefix.blank? && !area_code.blank? - elements << { :pattern => '^%*%*?67%*'+trunk_prefix+'([1-9]%d+)#$', :replacement => 'f-cfb-+'+country_code+area_code+'%1' } + if !trunk_access_code.blank? && !area_code.blank? + elements << { :pattern => '^%*%*?67%*'+trunk_access_code+'([1-9]%d+)#$', :replacement => 'f-cfb-+'+country_code+area_code+'%1' } end CallRoute.create_prerouting_entry('call forward if busy', elements) -- cgit v1.2.3