2 class CommonLicense < ActiveRecord::Base
5 validates :name, :presence => true, :length => {:maximum => 50}
6 validates :url, :presence => true, :length => {:maximum => 200}, :uniqueness => true
7 validates :license_id, :presence => true, :numericality => true, :existence => true
9 def self.default_page_size
13 def self.max_page_size
17 def self.page prm = nil
23 def self.page_size prm = self.default_page_size
25 page_size = self.max_page_size if page_size > self.max_page_size
26 page_size = self.default_page_size if page_size < 1
30 def self.list opt = {}, page = 1, page_size = self.default_page_size
31 opt.merge!(self.list_opt) unless opt[:include]
33 :order => 'name', :limit => page_size, :offset => (page -1) * page_size}
35 CommonLicense.find(:all, opt)
39 {:include => [:license]}
42 def self.list_json_opt
43 {:include => [:license]}
46 def self.show cid, opt = {}
47 cl = CommonLicense.find(cid, :include => self.show_include_opt(opt))
48 # raise ActiveRecord::Forbidden unless pic.own?(author)
52 def self.show_include_opt opt = {}
54 res.push(opt[:include]) if opt[:include]
58 def self.show_json_include_opt
59 {:include => [:license]}
62 def self.update_common_license data
63 if r = CommonLicense.find_by_url(data[:url])
66 r = CommonLicense.new data
73 CommonLicense.transaction do
74 l = License.update_license self
76 self.license_id = l.id
78 raise ActiveRecord::Rollback unless res
80 raise ActiveRecord::Rollback
87 cl = CommonLicense.update_common_license params
92 def self.each_license data
93 data = [data] if data.is_a?(Hash)
102 res = JSON.parse(data) if data.is_a?(String)
109 def self.import(data)
110 d = CommonLicense.parse(data)
111 return false unless d
113 CommonLicense.transaction do
114 CommonLicense.each_license(d) do |lch|
115 cl = CommonLicense.store lch
116 res.push(cl) unless cl.valid?
118 raise ActiveRecord::Rollback unless res.empty?
123 def self.import_file(filename)
126 t = File.open(filename, 'r').read
130 CommonLicense.import t
133 def import_error_message(c = '\n')
134 self.errors.each do |atr, messages|