OSDN Git Service

fix extend for profiler
[pettanr/pettanr.git] / app / models / license.rb
1 #
2 class License < Peta::Item
3   load_manifest
4   belongs_to :license_group
5   belongs_to :system_picture
6   has_many :resource_pictures
7   
8   validates :license_group_id, :presence => true, :numericality => true, :existence => {:both => false}
9   validates :license_group_classname, :presence => true, :length => {:maximum => 50}
10   validates :name, :presence => true, :length => {:maximum => 50}
11   validates :caption, :presence => true, :length => {:maximum => 30}
12   validates :url, :presence => true, :length => {:maximum => 200}, :uniqueness => {:scope => :name}, :url => {:message => I18n.t('errors.messages.url')} #{:allow_blank => true}
13   validates :system_picture_id, :presence => true, :numericality => true, :existence => {:both => false}
14   
15   def supply_default
16   end
17   
18   def overwrite
19   end
20   
21   def caption_with_group
22     self.license_group.caption + '/' + self.caption
23   end
24   
25   def self.list_where
26     ''
27   end
28   
29   def self.list_order
30     'licenses.name'
31   end
32   
33   def self.list_opt
34     {:license_group => {}}
35   end
36   
37   def self.list_json_opt
38     {:include => {:license_group => {}}}
39   end
40   
41   def self.show_opt
42     {:include => {:license_group => {}}}
43   end
44   
45   def self.show_json_opt
46     {:include => {:license_group => {}}}
47   end
48   
49   def self.list_by_name name
50     License.find :all, :conditions => ['licenses.name = ?', name], :order => 'licenses.updated_at desc'
51   end
52   
53   def self.store name, attr
54     r = License.replace_system_picture attr
55     attr['credit_picture_settings'] = attr['credit_picture_settings'].to_json
56     attr['license_group_settings'] = attr['license_group_settings'].to_json
57     l = License.modify_object name, attr
58     if r == false
59       l.errors.add :base, SystemPicture.model_name.human + I18n.t('errors.not_create')
60     else
61       l.save
62     end
63     l
64   end
65   
66   def self.stores attrs, lg_id
67     res = 0
68     return 0 unless attrs.is_a?(Hash)
69     attrs.each do |name, attr|
70       attr["license_group_id"] = lg_id
71       l = License.store name, attr
72       res += 1 unless l.valid?
73     end
74     res
75   end
76   
77   def credit_pictures_attr
78     return @credit_pictures_attr if @credit_pictures_attr
79     begin
80       @credit_pictures_attr = JSON.parse(self.credit_pictures)
81     rescue 
82     end
83     @credit_pictures_attr = {} unless @credit_pictures_attr
84     @credit_pictures_attr
85   end
86   
87   def self.export(dt = nil)
88     opt = {}
89     opt.merge!({:conditions => ['updated_at >= ?', dt]}) if dt
90 #    opt.merge!({:order => 'name'})
91     License.find(:all, opt)
92   end
93   
94 end