OSDN Git Service

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