OSDN Git Service

Merge branch 'v05' of git.sourceforge.jp:/gitroot/pettanr/pettanr into v05
[pettanr/pettanr.git] / app / models / color.rb
1 class Color < ActiveRecord::Base
2   belongs_to :ground_color
3
4   validates :name, :presence => true, :length => {:maximum => 50}, :uniqueness => true
5   validates :code, :presence => true, :numericality => {:greater_than_or_equal_to => 0, :less_than => 0x1000000}
6   validates :t, :presence => true, :numericality => {:greater_than_or_equal_to => 0}
7   
8   before_validation :valid_encode
9   
10   def valid_encode
11     ['name'].each do |a|
12       next if attributes[a] == nil
13       raise Pettanr::BadRequest unless attributes[a].valid_encoding?
14     end
15   end
16   
17   def supply_default
18     self.name = 'no name' if self.name.blank?
19   end
20   
21   def overwrite 
22   end
23   
24   def visible? author
25     true
26   end
27   
28   def self.default_page_size
29     25
30   end
31   
32   def self.max_page_size
33     100
34   end
35   
36   def self.default_panel_size
37     30
38   end
39   
40   def self.page prm = nil
41     page = prm.to_i
42     page = 1 if page < 1
43     page
44   end
45   
46   def self.page_size prm = self.default_page_size
47     page_size = prm.to_i
48     page_size = self.max_page_size if page_size > self.max_page_size
49     page_size = self.default_page_size if page_size < 1
50     page_size
51   end
52   
53   def self.list page = 1, page_size = self.default_page_size
54     opt = {}
55     opt.merge!(Color.list_opt)
56     opt.merge!({:limit => page_size, :offset => (page -1) * page_size}) if page_size > 0
57     opt.merge!({:order => 'colors.t'})
58     Color.find(:all, opt)
59   end
60   
61   def self.list_opt
62     {}
63   end
64   
65   def self.list_json_opt
66     {}
67   end
68   
69   def self.show cid, au
70     opt = {}
71     opt.merge!(Color.show_opt)
72     res = Color.find(cid, opt)
73     raise ActiveRecord::Forbidden unless res.visible?(au)
74     res
75   end
76   
77   def self.show_opt
78     {}
79   end
80   
81   def self.show_json_opt
82     {}
83   end
84   
85   def self.import filename
86     Color.import_file(filename) {|name, attr| Color.store(name, attr)}
87   end
88   
89   def self.store name, attr
90     r = Color.modify_object name, attr
91     r.save
92     r
93   end
94   
95 end