8 def self.included(base)
9 base.extend(ClassMethods)
10 base.__send__ :include, InstanceMethods
20 def import_system_picture attr
22 return false if d.blank?
23 imager = PettanImager.load(Base64.decode64(d.to_s))
24 return false unless imager
25 sp = SystemPicture.store(imager)
26 return false unless sp
30 def replace_system_picture attr
31 attr.each do |name, value|
33 r = if name.to_s =~ /_id$/
34 self.import_system_picture value
36 self.replace_system_picture value
44 def modify_object(name, attr, key = 'name')
45 c = 'find_by_' + key.to_s
46 r = self.__send__ c, name
56 def import_list(attrs, &blk)
59 attrs.each do |name, item|
60 m = blk.call(name, item)
61 res.push(m) unless m.valid?
63 raise ActiveRecord::Rollback unless res.empty?
68 def import_text(text, &blk)
69 attrs = JSON.parse(text)
70 import_list attrs, &blk
73 def import_file(filename, &blk)
74 text = File.open(filename, 'r').read
75 self.import_text text, &blk
78 def import_url(url, &blk)
80 self.import_text text, &blk
83 def import_urls(urls, &blk)
88 h[:validations] = import_url(url, &blk)
90 h[:exception] = {:location => $@, :message => $!}
99 module InstanceMethods
107 include PettanImporter