OSDN Git Service

t#29312:any update
[pettanr/pettanr.git] / app / models / artist.rb
1 class Artist < ActiveRecord::Base
2   belongs_to :author
3   has_many :original_pictures
4   
5   validates :name, :presence => true, :length => {:maximum => 30}
6 #  validates :default_license_id, :presence => true, :numericality => true, :existence => true
7   
8   def supply_default
9     self.name = 'no name' if self.name.blank?
10   end
11   
12   def overwrite au
13     return false unless au
14     self.author_id = au.id
15   end
16   
17   def own? author
18     return false unless author
19     self.author_id == author.id
20   end
21   
22   def self.edit sid, au
23     res = Artist.find sid
24     raise ActiveRecord::Forbidden unless res.own?(au)
25     res
26   end
27   
28   def self.find_by_author author
29     Artist.find( :first, :conditions => ['author_id = ?', author.id])
30   end
31   
32   def self.default_page_size
33     25
34   end
35   
36   def self.max_page_size
37     100
38   end
39   
40   def self.default_panel_size
41     30
42   end
43   
44   def self.max_panel_size
45     200
46   end
47   
48   def self.page prm = nil
49     page = prm.to_i
50     page = 1 if page < 1
51     page
52   end
53   
54   def self.page_size prm = self.default_page_size
55     page_size = prm.to_i
56     page_size = self.max_page_size if page_size > self.max_page_size
57     page_size = self.default_page_size if page_size < 1
58     page_size
59   end
60   
61   def self.offset cnt, prm = nil
62     offset = prm.to_i
63     offset = cnt - 1 if offset >= cnt
64     offset = cnt - offset.abs if offset < 0
65     offset = 0 if offset < 0
66     offset
67   end
68   
69   def self.list opt = {}, page = 1, page_size = self.default_page_size
70     opt.merge!(self.list_opt) unless opt[:include]
71     opt.merge!({:order => 'updated_at desc', :limit => page_size, :offset => (page -1) * page_size})
72     Artist.find(:all, opt)
73   end
74   
75   def self.list_opt
76     {:include => :author}
77   end
78   
79   def self.list_json_opt
80     {:include => :author}
81   end
82   
83   def self.show aid, opt = {}
84     a = Artist.find(aid, :include => self.show_include_opt(opt))
85 #    raise ActiveRecord::Forbidden unless c.visible?(au)
86     a
87   end
88   
89   def self.show_include_opt opt = {}
90     res = [:author]
91     res.push(opt[:include]) if opt[:include]
92     res
93   end
94   
95   def self.show_json_include_opt
96     {:include => :author}
97   end
98   
99   def self.visible_count
100     Artist.count
101   end
102   
103 end