OSDN Git Service

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