+#
class License < ActiveRecord::Base
belongs_to :license_group
belongs_to :system_picture
- validates :license_group_id, :presence => true, :numericality => true, :existence => true
+ validates :license_group_id, :presence => true, :numericality => true, :existence => {:both => false}
validates :name, :presence => true, :length => {:maximum => 50}
validates :caption, :presence => true, :length => {:maximum => 30}
- validates :url, :presence => true, :length => {:maximum => 200}, :uniqueness => true, :url => true #{:allow_blank => true}
- validates :system_picture_id, :presence => true, :numericality => true, :existence => true
-
- def self.update_license cl
- l = License.find_by_url cl.url
- l = License.new unless l
- l.attributes = {
- :name => cl.name, :url => cl.url, :cc_by => cl.cc_by, :cc_sa => cl.cc_sa, :cc_nd => cl.cc_nd, :cc_nc => cl.cc_nc,
- :no_resize => cl.no_resize, :no_flip => cl.no_flip, :no_convert => cl.no_convert, :keep_aspect_ratio => cl.keep_aspect_ratio
- }
- if cl.new_record? and l.new_record? == false
- l.errors.add :base, 'dupulicate url'
+ validates :url, :presence => true, :length => {:maximum => 200}, :uniqueness => true, :url => {:message => I18n.t('errors.messages.url')} #{:allow_blank => true}
+ validates :system_picture_id, :presence => true, :numericality => true, :existence => {:both => false}
+
+ before_validation :valid_encode
+
+ def valid_encode
+ ['name', 'caption', 'url', 'settings', 'credit_pictures'].each do |a|
+ next if attributes[a] == nil
+ raise Pettanr::BadRequest unless attributes[a].valid_encoding?
end
- l
end
- def self.list lg_id, opt = {}
- opt.merge!(self.list_opt) unless opt[:include]
- opt.merge!({:conditions => ['licenses.license_group_id = ?', lg_id], :order => 'name'})
+ def supply_default
+ end
+
+ def overwrite
+ end
+
+ def self.list
+ opt = {}
+ opt.merge!(License.list_opt)
+ opt.merge!({:order => 'name'})
License.find(:all, opt)
end
{:include => {:license_group => {}}}
end
- def self.show rid, opt = {}
- r = License.find(rid, :include => self.show_include_opt(opt))
-# raise ActiveRecord::Forbidden unless c.visible?(au)
- r
+ def self.show rid
+ opt = {}
+ opt.merge!(License.show_opt)
+ res = License.find(rid, opt)
+# raise ActiveRecord::Forbidden unless res.visible?(au)
+ res
end
- def self.show_include_opt opt = {}
- res = [:license_group]
- res.push(opt[:include]) if opt[:include]
- res
+ def self.show_opt
+ {:include => {:license_group => {}}}
end
- def self.show_json_include_opt
+ def self.show_json_opt
{:include => {:license_group => {}}}
end
+ def self.list_by_name name
+ License.find :all, :conditions => ['licenses.name = ?', name], :order => 'licenses.updated_at desc'
+ end
+
+ def self.store name, attr
+ r = License.replace_system_picture attr
+ attr['credit_pictures'] = attr['credit_pictures'].to_json
+ l = License.modify_object name, attr
+ if r == false
+ l.errors.add :base, SystemPicture.model_name.human + I18n.t('errors.not_create')
+ else
+ l.save
+ end
+ l
+ end
+
+ def self.stores attrs, lg_id
+ res = 0
+ return 0 unless attrs.is_a?(Hash)
+ attrs.each do |name, attr|
+ attr["license_group_id"] = lg_id
+ l = License.store name, attr
+ res += 1 unless l.valid?
+ end
+ res
+ end
+
+ def credit_pictures_attr
+ return @credit_pictures_attr if @credit_pictures_attr
+ begin
+ @credit_pictures_attr = JSON.parse(self.credit_pictures)
+ rescue
+ end
+ @credit_pictures_attr = {} unless @credit_pictures_attr
+ @credit_pictures_attr
+ end
+
+ def self.export(dt = nil)
+ opt = {}
+ opt.merge!({:conditions => ['updated_at >= ?', dt]}) if dt
+# opt.merge!({:order => 'name'})
+ License.find(:all, opt)
+ end
+
end