1 class License < ActiveRecord::Base
2 has_one :original_license
3 has_one :common_license
4 validates :name, :presence => true, :length => {:maximum => 50}
5 validates :url, :presence => true, :length => {:maximum => 200}, :uniqueness => true, :url => {:allow_blank => true}
7 def self.update_license cl
8 l = License.find_by_url cl.url
9 l = License.new unless l
11 :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,
12 :no_resize => cl.no_resize, :no_flip => cl.no_flip, :no_convert => cl.no_convert, :keep_aspect_ratio => cl.keep_aspect_ratio
14 if cl.new_record? and l.new_record? == false
15 l.errors.add :base, 'dupulicate url'
20 def self.default_page_size
24 def self.max_page_size
28 def self.page prm = nil
34 def self.page_size prm = self.default_page_size
36 page_size = self.max_page_size if page_size > self.max_page_size
37 page_size = self.default_page_size if page_size < 1
41 def self.offset cnt, prm = nil
43 offset = cnt - 1 if offset >= cnt
44 offset = cnt - offset.abs if offset < 0
45 offset = 0 if offset < 0
49 def self.list opt = {}, page = 1, page_size = self.default_page_size
50 opt.merge!(self.list_opt) unless opt[:include]
51 opt.merge!({:order => 'name', :limit => page_size, :offset => (page -1) * page_size})
52 License.find(:all, opt)
56 {:include => {:common_license => {}, :original_license => {}}}
59 def self.list_json_opt
60 {:include => {:common_license => {}, :original_license => {}}}
63 def self.show rid, opt = {}
64 r = License.find(rid, :include => self.show_include_opt(opt))
65 # raise ActiveRecord::Forbidden unless c.visible?(au)
69 def self.show_include_opt opt = {}
70 res = [:common_license, :original_license]
71 res.push(opt[:include]) if opt[:include]
75 def self.show_json_include_opt
76 {:include => {:common_license => {}, :original_license => {}}}