7 def self.included(base)
8 base.extend(ClassMethods)
9 base.__send__ :include, InstanceMethods
19 def replace_system_picture attr
20 d = attr["system_picture"]
21 return nil if d.blank?
22 imager = PettanImager.load(Base64.decode64(d.to_s))
23 return nil unless imager
24 sp = SystemPicture.store(imager)
25 return false unless sp
26 attr["system_picture_id"] = sp.id
27 attr.delete "system_picture"
31 def modify_object(name, attr, key = 'name')
32 c = 'find_by_' + key.to_s
33 r = self.__send__ c, name
43 def import_text(data, &blk)
44 d = JSON.parse_no_except(data)
48 d.each do |name, item|
49 m = blk.call(name, item)
50 res.push(m) unless m.valid?
52 raise ActiveRecord::Rollback unless res.empty?
57 def import_file(filename, &blk)
60 t = File.open(filename, 'r').read
64 self.import_text t, &blk
69 module InstanceMethods
77 include PettanImporter