OSDN Git Service

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