OSDN Git Service

3226b2d6953f403983d13e398aa3b6a766a97f15
[pettanr/pettanr.git] / app / models / license.rb
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}
6   
7   def self.update_license cl
8     l = License.find_by_url cl.url
9     l = License.new unless l
10     l.attributes = {
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
13     }
14     if cl.new_record? and l.new_record? == false
15       l.errors.add :base, 'dupulicate url'
16     end
17     l
18   end
19   
20   def self.default_page_size
21     25
22   end
23   
24   def self.max_page_size
25     100
26   end
27   
28   def self.page prm = nil
29     page = prm.to_i
30     page = 1 if page < 1
31     page
32   end
33   
34   def self.page_size prm = self.default_page_size
35     page_size = prm.to_i
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
38     page_size
39   end
40   
41   def self.offset cnt, prm = nil
42     offset = prm.to_i
43     offset = cnt - 1 if offset >= cnt
44     offset = cnt - offset.abs if offset < 0
45     offset = 0 if offset < 0
46     offset
47   end
48   
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)
53   end
54   
55   def self.list_opt
56     {:include => {:common_license => {}, :original_license => {}}}
57   end
58   
59   def self.list_json_opt
60     {:include => {:common_license => {}, :original_license => {}}}
61   end
62   
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)
66     r
67   end
68   
69   def self.show_include_opt opt = {}
70     res = [:common_license, :original_license]
71     res.push(opt[:include]) if opt[:include]
72     res
73   end
74   
75   def self.show_json_include_opt
76     {:include => {:common_license => {}, :original_license => {}}}
77   end
78   
79 end