-class License < ActiveRecord::Base
- has_one :original_license
- has_one :common_license
- validates :name, :presence => true, :length => {:maximum => 50}
- validates :url, :presence => true, :length => {:maximum => 200}, :uniqueness => true
+#
+class License < Peta::SystemResource
+ load_manifest
+ belongs_to :license_group
+ belongs_to :system_picture
+ has_many :resource_pictures
- 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
- }
- l
- end
+ validates :license_group_id, :presence => true, :numericality => true, :existence => {:both => false}
+ validates :license_group_module_name, :presence => true, :length => {:maximum => 50}
+ validates :name, :presence => true, :length => {:maximum => 50}
+ validates :caption, :presence => true, :length => {:maximum => 30}
+ validates :url, :presence => true, :length => {:maximum => 200}, :uniqueness => {:scope => :name}, :url => {:message => I18n.t('errors.messages.url')} #{:allow_blank => true}
+ validates :system_picture_id, :presence => true, :numericality => true, :existence => {:both => false}
+ validates :license_group_settings, :boost => {:boost_name => :license_group}
+ validates :credit_picture_settings, :boost => {:boost_name => :credit_picture}
- def self.default_page_size
- 25
+ scope :find_index, -> do
+ self.all
end
- def self.max_page_size
- 100
+ scope :find_by_license_group, -> (license_group_id) do
+ where(license_group_id: license_group_id)
end
- def self.page prm = nil
- page = prm.to_i
- page = 1 if page < 1
- page
+ scope :find_by_system_picture, -> (system_picture_id) do
+ where(system_picture_id: system_picture_id)
end
- def self.page_size prm = self.default_page_size
- page_size = prm.to_i
- page_size = self.max_page_size if page_size > self.max_page_size
- page_size = self.default_page_size if page_size < 1
- page_size
+ def overwrite
end
- def self.offset cnt, prm = nil
- offset = prm.to_i
- offset = cnt - 1 if offset >= cnt
- offset = cnt - offset.abs if offset < 0
- offset = 0 if offset < 0
- offset
+ def caption_with_group
+ self.license_group.caption + '/' + self.caption
end
- def self.list opt = {}, page = 1, page_size = self.default_page_size
- opt.merge!(self.list_opt) unless opt[:include]
- opt.merge!({:order => 'name', :limit => page_size, :offset => (page -1) * page_size})
- License.find(:all, opt)
+ def self.index_list_where list
+ ''
end
- def self.list_opt
- {:include => {:common_license => {}, :original_license => {}}}
+ def self.show_opt
+ {:include => {:license_group => {}}}
end
- def self.list_json_opt
- {:include => {:common_license => {}, :original_license => {}}}
+ def self.list_by_name name
+ License.where(name: name).order(updated_at: :desc)
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.store name, attr
+ r = License.replace_system_picture attr
+ attr['credit_picture_settings'] = attr['credit_picture_settings'].to_json
+ attr['license_group_settings'] = attr['license_group_settings'].to_json
+ l = License.modify_object name, attr
+ l.boosts 'post'
+ if r == false
+ l.errors.add :base, SystemPicture.model_name.human + I18n.t('errors.not_create')
+ else
+ l.save
+ end
+ l
end
- def self.show_include_opt opt = {}
- res = [:common_license, :original_license]
- res.push(opt[:include]) if opt[:include]
+ 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 self.show_json_include_opt
- {:include => {:common_license => {}, :original_license => {}}}
+ def self.export(dt = nil)
+ licenses = License.all
+ licenses = licenses.where(['licenses.updated_at >= ?', dt]) if dt
+ licenses.order(:id)
end
end