OSDN Git Service

temp
[pettanr/pettanr.git] / app / models / provider_original_picture.rb
index 0710d47..de173fb 100644 (file)
@@ -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
@@ -133,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']
@@ -140,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
   
@@ -159,17 +166,24 @@ class ProviderOriginalPicture < ActiveRecord::Base
   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