X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=app%2Fmodels%2Fprovider_original_picture.rb;h=de173fbf34f9f40e533f2d98d6dbb0e13ba59950;hb=84a5b0cfc30cd42930ee80551ba389b223643dc3;hp=86e6df2a92978a5a0b3dea7825e7b6a0befc5f53;hpb=ef20761eca0d162588ab0c2f84dc9006fde6e6e5;p=pettanr%2Fpettanr.git diff --git a/app/models/provider_original_picture.rb b/app/models/provider_original_picture.rb index 86e6df2a..de173fbf 100644 --- a/app/models/provider_original_picture.rb +++ b/app/models/provider_original_picture.rb @@ -53,6 +53,12 @@ class ProviderOriginalPicture < ActiveRecord::Base end end + def self.replace_picture pid, attr + pc = Picture.head attr['original_picture_id'].to_i + return false unless pc + attr['picture_id'] = pc.id + end + def self.replace_original_picture pid, attr pop = ProviderOriginalPicture.get_one pid, attr['original_picture_id'].to_i if pop.original_picture @@ -63,15 +69,29 @@ class ProviderOriginalPicture < ActiveRecord::Base end end + def self.unpublish_resource_picture provider_original_picture, providers_original_picture_attr + res = true + resource_picture = if provider_original_picture.original_picture and provider_original_picture.original_picture.resource_picture + provider_original_picture.original_picture.resource_picture + else + nil + end + if providers_original_picture_attr['stopped_at'] and resource_picture + res = resource_picture.unpublish + end + res + end + def self.import_original_picture pid, providers_original_picture_attr return providers_original_picture_attr unless ProviderOriginalPicture.replace_artist(pid, providers_original_picture_attr) provider_original_picture = ProviderOriginalPicture.get_one(pid, providers_original_picture_attr['id']) popid = providers_original_picture_attr['id'] providers_original_picture_attr.delete 'id' - resource_picture = providers_original_picture_attr['resource_picture'] +# resource_picture = providers_original_picture_attr['resource_picture'] providers_original_picture_attr.delete 'resource_picture' + return providers_original_picture_attr unless ProviderOriginalPicture.unpublish_resource_picture provider_original_picture, providers_original_picture_attr demander_original_picture = provider_original_picture.modify_original_picture providers_original_picture_attr - providers_original_picture_attr['resource_picture'] = resource_picture +# providers_original_picture_attr['resource_picture'] = resource_picture return providers_original_picture_attr unless demander_original_picture.valid? provider_original_picture.attributes = {:provider_id => pid, :providers_original_picture_id => popid, :demanders_original_picture_id => demander_original_picture.id} return providers_original_picture_attr unless provider_original_picture.save @@ -81,9 +101,9 @@ class ProviderOriginalPicture < ActiveRecord::Base def self.import_original_pictures pid, providers_original_pictures res = [] providers_original_pictures.each do |providers_original_picture_attr| - org_attr = providers_original_picture_attr.dup - if r = ProviderOriginalPicture.import_original_picture(pid, providers_original_picture_attr) - res << org_attr + tmp_attr = providers_original_picture_attr.dup + if r = ProviderOriginalPicture.import_original_picture(pid, tmp_attr) + res << providers_original_picture_attr end end res @@ -107,9 +127,9 @@ class ProviderOriginalPicture < ActiveRecord::Base def self.import_pictures pid, providers_pictures res = [] providers_pictures.each do |providers_picture_attr| - org_attr = providers_picture_attr.dup - if r = ProviderOriginalPicture.import_picture(pid, providers_picture_attr) - res << org_attr + tmp_attr = providers_picture_attr.dup + if r = ProviderOriginalPicture.import_picture(pid, tmp_attr) + res << providers_picture_attr end end res @@ -119,6 +139,7 @@ class ProviderOriginalPicture < ActiveRecord::Base return providers_resource_picture_attr unless ProviderOriginalPicture.replace_original_picture(pid, providers_resource_picture_attr) return providers_resource_picture_attr unless ProviderOriginalPicture.replace_artist(pid, providers_resource_picture_attr) return providers_resource_picture_attr unless ProviderOriginalPicture.replace_license(pid, providers_resource_picture_attr) + return providers_resource_picture_attr unless ProviderOriginalPicture.replace_picture(pid, providers_resource_picture_attr) prpid = providers_resource_picture_attr['id'] providers_resource_picture_attr.delete 'id' picture_data = Base64.decode64 providers_resource_picture_attr['picture_data'] @@ -126,8 +147,8 @@ class ProviderOriginalPicture < ActiveRecord::Base imager = PettanImager.load(picture_data) return providers_resource_picture_attr unless imager resource_picture = ProviderOriginalPicture.modify_resource_picture providers_resource_picture_attr - return providers_resource_picture_attr unless resource_picture.store_picture_with_gif(imager) return providers_resource_picture_attr unless resource_picture.save + return providers_resource_picture_attr unless resource_picture.store_picture_with_gif(imager) nil end @@ -135,26 +156,34 @@ class ProviderOriginalPicture < ActiveRecord::Base res = [] providers_original_pictures.each do |providers_original_picture_attr| providers_resource_picture_attr = providers_original_picture_attr['resource_picture'] - org_attr = providers_resource_picture_attr.dup - if r = ProviderOriginalPicture.import_resource_picture(pid, providers_resource_picture_attr) - res << org_attr + next nil unless providers_resource_picture_attr + tmp_attr = providers_resource_picture_attr.dup + if r = ProviderOriginalPicture.import_resource_picture(pid, tmp_attr) + res << providers_resource_picture_attr end end res end def self.import pid, original_pictures, pictures - res = {:original_pictures => [], :pictures => [], :resource_pictures => []} + res = nil ProviderOriginalPicture.transaction do r = ProviderOriginalPicture.import_original_pictures(pid, original_pictures) - res[:original_pictures] = r - raise ActiveRecord::Rollback if r.any? + if r.any? + res = OriginalPictureImportResult.new r + raise ActiveRecord::Rollback + end r = ProviderOriginalPicture.import_pictures(pid, pictures) - res[:pictures] = r - raise ActiveRecord::Rollback if r.any? + if r.any? + res = PictureImportResult.new r + raise ActiveRecord::Rollback + end r = ProviderOriginalPicture.import_resource_pictures(pid, original_pictures) - res[:resource_pictures] = r - raise ActiveRecord::Rollback if r.any? + if r.any? + res = ResourcePictureImportResult.new r + raise ActiveRecord::Rollback + end + res = OriginalPictureImportResult.new [] end res end