- def self.show_include_opt opt = {}
- res = [:license, :artist]
- res.push(opt[:include]) if opt[:include]
+ def self.show_opt
+ {:include => {:license => {}, :artist => {}, :picture => {}} }
+ end
+
+ def self.show_json_opt
+ {:include => {:license => {}, :artist => {}, :picture => {}} }
+ end
+
+ def new_picture imager
+ pc = Picture.new
+ pc.supply_default
+ pc.overwrite self
+ r = pc.store imager
+ return pc if r
+ self.errors.add :base, 'picture does not create' + pc.errors.full_messages.join("\n")
+ false
+ end
+
+ def store imager
+ return false unless imager
+ res = false
+ self.overwrite self.original_picture
+ ResourcePicture.transaction do
+ pc = self.new_picture imager
+ if pc
+ self.picture_id = pc.id
+ if res = self.save
+ res = self.store_picture_with_gif(imager)
+ end
+ else
+ end
+ raise ActiveRecord::Rollback unless res
+ end
+ res
+ end
+
+ def store_picture_with_gif(imager)
+ if res = self.store_picture(imager, self.filename)
+ if self.to_gif?
+ if gifimager = imager.to_gif
+ res = self.store_picture(gifimager, self.gifname)
+ else
+ self.errors.add :base, 'picture data can not conv to gif'
+ res = false
+ end
+ end
+ else
+ self.errors.add :base, 'resource picture io does not work'
+ end