OSDN Git Service

t#31471:add panel catch
[pettanr/pettanr.git] / app / models / author.rb
1 class Author < ActiveRecord::Base
2   has_one :artist
3   belongs_to :user
4   has_many :comics
5   has_many :panels
6   belongs_to :working_panel, :class_name => "Panel"
7   
8   validates :name, :presence => true, :length => {:maximum => 30}
9   validates :working_panel_id, :numericality => {:allow_nil => true}
10   validates :user_id, :numericality => true, :existence => {:both => false}
11   
12   before_validation :valid_encode
13   
14   def valid_encode
15     ['name'].each do |a|
16       next if attributes[a] == nil
17       raise Pettanr::BadRequest unless attributes[a].valid_encoding?
18     end
19   end
20   
21   def supply_default
22     self.name = 'no name' if self.name.blank?
23   end
24   
25   def overwrite uid
26     self.user_id = uid
27   end
28   
29   def own? roles
30     roles = [roles] unless roles.respond_to?(:each)
31     au = Author.get_author_from_roles roles
32     return false unless au
33     self.id == au.id
34   end
35   
36   def visible? roles
37     if MagicNumber['run_mode'] == 0
38       return false unless guest_role_check(roles)
39     else
40       return false unless reader_role_check(roles)
41     end
42     return true
43   end
44   
45   def artist?
46     Artist.find_by_author(self) != nil
47   end
48   
49   def working?
50     self.working_panel_id and self.working_panel
51   end
52   
53   def step2 n
54     self.name = n
55     self.save
56   end
57   
58   def self.default_page_size
59     25
60   end
61   
62   def self.max_page_size
63     100
64   end
65   
66   def self.page prm = nil
67     page = prm.to_i
68     page = 1 if page < 1
69     page
70   end
71   
72   def self.page_size prm = self.default_page_size
73     page_size = prm.to_i
74     page_size = self.max_page_size if page_size > self.max_page_size
75     page_size = self.default_page_size if page_size < 1
76     page_size
77   end
78   
79   def self.list page = 1, page_size = self.default_page_size
80     opt = {}
81     opt.merge!(Author.list_opt)
82     opt.merge!({:limit => page_size, :offset => (page -1) * page_size}) if page_size > 0
83     opt.merge!({:order => 'created_at desc'})
84     Author.find(:all, opt)
85   end
86   
87   def self.list_opt
88     {:include => {:artist => {}} }
89   end
90   
91   def self.list_json_opt
92     {:include => {:artist => {}} }
93   end
94   
95   def self.show aid, roles
96     opt = {}
97     opt.merge!(Author.show_opt)
98     res = Author.find(aid, opt)
99     raise ActiveRecord::Forbidden unless res.visible?(roles)
100     res
101   end
102   
103   def self.show_opt
104     {:include => {:artist => {}} }
105   end
106   
107   def self.show_json_opt
108     {:include => {:artist => {}} }
109   end
110   
111   def self.edit aid, au
112     opt = {}
113     opt.merge!(Author.show_opt)
114     res = Author.find aid, opt
115     raise ActiveRecord::Forbidden unless res.own?(au)
116     res
117   end
118   
119   def self.default_comic_page_size
120     25
121   end
122   
123   def self.comic_max_page_size
124     100
125   end
126   
127   def self.comic_page_size prm = self.default_comic_page_size
128     page_size = prm.to_i
129     page_size = self.comic_max_page_size if page_size > self.comic_max_page_size
130     page_size = self.default_comic_page_size if page_size < 1
131     page_size
132   end
133   
134   def self.default_story_page_size
135     25
136   end
137   
138   def self.story_max_page_size
139     100
140   end
141   
142   def self.story_page_size prm = self.default_story_page_size
143     page_size = prm.to_i
144     page_size = self.story_max_page_size if page_size > self.story_max_page_size
145     page_size = self.default_story_page_size if page_size < 1
146     page_size
147   end
148   
149   def self.default_panel_page_size
150     25
151   end
152   
153   def self.panel_max_page_size
154     100
155   end
156   
157   def self.panel_page_size prm = self.default_panel_page_size
158     page_size = prm.to_i
159     page_size = self.panel_max_page_size if page_size > self.panel_max_page_size
160     page_size = self.default_panel_page_size if page_size < 1
161     page_size
162   end
163   
164   def self.default_panel_picture_page_size
165     25
166   end
167   
168   def self.panel_picture_max_page_size
169     100
170   end
171   
172   def self.panel_picture_page_size prm = self.default_panel_picture_page_size
173     page_size = prm.to_i
174     page_size = self.panel_picture_max_page_size if page_size > self.panel_picture_max_page_size
175     page_size = self.default_panel_picture_page_size if page_size < 1
176     page_size
177   end
178   
179   def self.default_ground_picture_page_size
180     25
181   end
182   
183   def self.ground_picture_max_page_size
184     100
185   end
186   
187   def self.ground_picture_page_size prm = self.default_ground_picture_page_size
188     page_size = prm.to_i
189     page_size = self.ground_picture_max_page_size if page_size > self.ground_picture_max_page_size
190     page_size = self.default_ground_picture_page_size if page_size < 1
191     page_size
192   end
193   
194   def self.default_ground_color_page_size
195     25
196   end
197   
198   def self.ground_color_max_page_size
199     100
200   end
201   
202   def self.ground_color_page_size prm = self.default_ground_color_page_size
203     page_size = prm.to_i
204     page_size = self.ground_color_max_page_size if page_size > self.ground_color_max_page_size
205     page_size = self.default_ground_color_page_size if page_size < 1
206     page_size
207   end
208   
209   def self.default_panel_color_page_size
210     25
211   end
212   
213   def self.panel_color_max_page_size
214     100
215   end
216   
217   def self.panel_color_page_size prm = self.default_panel_color_page_size
218     page_size = prm.to_i
219     page_size = self.panel_color_max_page_size if page_size > self.panel_color_max_page_size
220     page_size = self.default_panel_color_page_size if page_size < 1
221     page_size
222   end
223   
224   def self.default_resource_picture_page_size
225     100
226   end
227   
228   def self.resource_picture_max_page_size
229     100
230   end
231   
232   def self.resource_picture_page_size prm = self.default_resource_picture_page_size
233     page_size = prm.to_i
234     page_size = self.resource_picture_max_page_size if page_size > self.resource_picture_max_page_size
235     page_size = self.default_resource_picture_page_size if page_size < 1
236     page_size
237   end
238   
239   def self.visible_count
240     Author.count
241   end
242   
243 end