X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=app%2Fmodels%2Fprovider_status.rb;h=f49a98edc0475d04e6280afa02d66245ab90eb67;hb=cc2dbf353c285c78423a8a29d7adf233e1651c6e;hp=bad08fd458a29285ebf54e5a7dec7ca8b2742b12;hpb=e62ceceb458efdcaa09368eb385f8f963f04fba9;p=pettanr%2Fpettanr.git diff --git a/app/models/provider_status.rb b/app/models/provider_status.rb index bad08fd4..f49a98ed 100644 --- a/app/models/provider_status.rb +++ b/app/models/provider_status.rb @@ -9,6 +9,7 @@ class ProviderStatus < ActiveRecord::Base before_save do |r| r.token = r.token.gsub(/\s/, '') if r.token + r.token = nil if r.token.blank? end def supply_default @@ -76,6 +77,14 @@ class ProviderStatus < ActiveRecord::Base ProviderStatus.find(:all, opt) end + def self.approve_list page = 1, page_size = self.default_page_size + opt = {} + opt.merge!(ProviderStatus.list_opt) + opt.merge!({:limit => page_size, :offset => (page -1) * page_size}) if page_size > 0 + opt.merge!({:conditions => ['provider_statuses.token is not null'], :order => 'providers.name'}) + ProviderStatus.find(:all, opt) + end + def self.list_opt {:include => {:provider => {}} } end @@ -114,12 +123,19 @@ class ProviderStatus < ActiveRecord::Base end def ymd_to_time ymd_str - return nil if ymd_str.blank? date = nil - begin - date = Time.parse(ymd_str[0..3] + '/' + ymd_str[4..5] + '/' + ymd_str[6..7]) - rescue - date = nil + if ymd_str.blank? + date = if self.received_at + self.received_at + else + nil + end + else + begin + date = Time.parse(ymd_str[0..3] + '/' + ymd_str[4..5] + '/' + ymd_str[6..7]) + rescue + date = nil + end end date end @@ -150,41 +166,56 @@ class ProviderStatus < ActiveRecord::Base def licenses_import date licenses = self.export_by('licenses_export', date) - return nil unless licenses - ProviderLicense.import self.provider.id, licenses + if licenses + ProviderLicense.import self.provider.id, licenses + else + LicenseImportResult.new nil + end end def artists_import date artists = self.export_by('artists_export', date) - return nil unless artists - ProviderArtist.import self.provider.id, artists + if artists + ProviderArtist.import self.provider.id, artists + else + ArtistImportResult.new nil + end end def original_pictures_import date original_pictures = self.export_by('original_pictures_export', date) - return nil unless original_pictures pictures = self.export_by('pictures_export', date) - return nil unless pictures - ProviderOriginalPicture.import self.provider.id, original_pictures, pictures - end - - def port - exports = export_by('export', @provider_status, params[:date]) - return nil unless exports - ProviderStatus.import @provider_status.provider.id, exports + if original_pictures and pictures + ProviderOriginalPicture.import self.provider.id, original_pictures, pictures + else + OriginalPictureImportResult.new nil + end end - def self.import pid, exports - res = {} + def import date + import_result = nil ProviderStatus.transaction do - res[:licenses] = ProviderLicense.import pid, exports['licenses'] - raise ActiveRecord::Rollback if res[:licenses].any? - res[:artists] = ProviderArtist.import pid, exports['artists'] - raise ActiveRecord::Rollback if res[:artists].any? - res[:original_pictures] = ProviderOriginalPicture.import pid, exports['original_pictures'], exports['pictures'] - raise ActiveRecord::Rollback if res[:original_pictures][:original_pictures].any? or res[:original_pictures][:resource_pictures].any? or res[:original_pictures][:pictures].any? + import_result = self.licenses_import date + raise ActiveRecord::Rollback unless import_result.success? + import_result = self.artists_import date + raise ActiveRecord::Rollback unless import_result.success? + import_result = self.original_pictures_import date + raise ActiveRecord::Rollback unless import_result.success? + self.received_at = Time.now + self.save end - res + import_result end + def self.import_all date = nil + failures = {} + ProviderStatus.approve_list.each do |provider_status| + import_result = provider_status.import date + next if import_result.success? + failures[provider_status.provider.name] = import_result + end + failures.each do |name, import_result| + puts name + end + end end