2 class License < Peta::SystemResource
4 belongs_to :license_group
5 belongs_to :system_picture
6 has_many :resource_pictures
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}
15 def caption_with_group
16 self.license_group.caption + '/' + self.caption
28 {:include => {:license_group => {}}}
31 def self.show_json_opt
32 {:include => {:license_group => {}}}
35 def self.list_by_name name
36 License.find :all, :conditions => ['licenses.name = ?', name], :order => 'licenses.updated_at desc'
39 def self.store name, attr
40 r = License.replace_system_picture attr
41 attr['credit_picture_settings'] = attr['credit_picture_settings'].to_json
42 attr['license_group_settings'] = attr['license_group_settings'].to_json
43 l = License.modify_object name, attr
45 l.errors.add :base, SystemPicture.model_name.human + I18n.t('errors.not_create')
52 def self.stores attrs, lg_id
54 return 0 unless attrs.is_a?(Hash)
55 attrs.each do |name, attr|
56 attr["license_group_id"] = lg_id
57 l = License.store name, attr
58 res += 1 unless l.valid?
71 {:license_group => {}}
74 def self.list_json_opt
75 {:include => {:license_group => {}}}
78 def credit_pictures_attr
79 return @credit_pictures_attr if @credit_pictures_attr
81 @credit_pictures_attr = JSON.parse(self.credit_pictures)
84 @credit_pictures_attr = {} unless @credit_pictures_attr
89 def self.export(dt = nil)
91 opt.merge!({:conditions => ['updated_at >= ?', dt]}) if dt
92 # opt.merge!({:order => 'name'})
93 License.find(:all, opt)