1 class Provider < ActiveRecord::Base
2 belongs_to :provider_status
4 validates :name, :presence => true, :length => {:maximum => 50}, :uniqueness => true
5 validates :caption, :presence => true, :length => {:maximum => 30}
6 validates :url, :presence => true, :length => {:maximum => 200}, :url => {:message => I18n.t('errors.messages.url')}
7 validates :description, :presence => true
8 validates :demander_url, :presence => true, :length => {:maximum => 200}, :url => {:message => I18n.t('errors.messages.url')}
9 validates :provider_status_id, :presence => true, :numericality => true, :existence => {:both => false}
12 self.provider_status_id = nil
19 return false unless ad
24 return false unless ad
29 self.provider_status.status
32 def self.default_page_size
36 def self.max_page_size
40 def self.default_panel_size
44 def self.page prm = nil
50 def self.page_size prm = self.default_page_size
52 page_size = self.max_page_size if page_size > self.max_page_size
53 page_size = self.default_page_size if page_size < 1
57 def self.list page = 1, page_size = self.default_page_size
59 opt.merge!(Provider.list_opt)
60 opt.merge!({:limit => page_size, :offset => (page -1) * page_size}) if page_size > 0
61 opt.merge!({:order => 'providers.name'})
62 Provider.find(:all, opt)
65 def self.available_list page = 1, page_size = self.default_page_size
67 opt.merge!(Provider.list_opt)
68 opt.merge!({:limit => page_size, :offset => (page -1) * page_size}) if page_size > 0
69 opt.merge!({:conditions => ['provider_statuses.token is null'], :order => 'providers.name'})
70 Provider.find(:all, opt)
74 {:include => {:provider_status => {}} }
77 def self.list_json_opt
78 {:include => {:provider_status => {}} }
83 opt.merge!(Provider.show_opt)
84 res = Provider.find(pid, opt)
85 raise ActiveRecord::Forbidden unless res.visible?(ad)
91 opt.merge!(Provider.show_opt)
92 res = Provider.find(pid, opt)
93 raise ActiveRecord::Forbidden unless res.own?(ad)
98 {:include => {:provider_status => {}} }
101 def self.show_json_opt
102 {:include => {:provider_status => {}} }
105 def self.store name, attr
106 r = Provider.modify_object name, attr
107 Provider.transaction do
109 ps = ProviderStatus.new
112 r.provider_status_id = ps.id
114 r.provider_status_id = nil
117 raise ActiveRecord::Rollback unless r.save
123 Provider.import_urls(urls) {|name, attr| Provider.store(name, attr)}
126 def export_url action
127 u = self.demander_url + (self.demander_url[-1] == '/' ? '' : '/')
128 u = URI.join(u, action + '.json')