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
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
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
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
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']
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
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