2 class OriginalLicense < 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
13 def self.default_page_size
17 def self.max_page_size
21 def self.page prm = nil
27 def self.page_size prm = self.default_page_size
29 page_size = self.max_page_size if page_size > self.max_page_size
30 page_size = self.default_page_size if page_size < 1
34 def self.list opt = {}, page = 1, page_size = self.default_page_size
35 opt.merge!(self.list_opt) unless opt[:include]
37 :order => 'name', :limit => page_size, :offset => (page -1) * page_size}
39 OriginalLicense.find(:all, opt)
43 {:include => [:license]}
46 def self.list_json_opt
47 {:include => [:license]}
50 def self.show cid, opt = {}
51 ol = OriginalLicense.find(cid, :include => self.show_include_opt(opt))
52 # raise ActiveRecord::Forbidden unless pic.own?(author)
56 def self.show_include_opt opt = {}
58 res.push(opt[:include]) if opt[:include]
62 def self.show_json_include_opt
63 {:include => [:license]}
66 def self.update_original_license data
67 if r = OriginalLicense.find_by_url(data[:url])
70 r = OriginalLicense.new data
77 OriginalLicense.transaction do
78 l = License.update_license self
80 self.license_id = l.id
82 raise ActiveRecord::Rollback unless res
84 raise ActiveRecord::Rollback
91 cl = OriginalLicense.update_original_license params
96 def self.each_license data
97 data = [data] if data.is_a?(Hash)
106 res = JSON.parse(data) if data.is_a?(String)
113 def self.import(data)
114 d = OriginalLicense.parse(data)
115 return false unless d
117 OriginalLicense.transaction do
118 OriginalLicense.each_license(d) do |lch|
119 ol = OriginalLicense.store lch
120 res.push(ol) unless ol.valid?
122 raise ActiveRecord::Rollback unless res.empty?
127 def self.import_file(filename)
130 t = File.open(filename, 'r').read
134 OriginalLicense.import t