OSDN Git Service

t#:
[pettanr/pettanr.git] / app / models / license.rb
index 668f289..e06e621 100644 (file)
@@ -1,7 +1,92 @@
-class License < ActiveRecord::Base
-  has_one :original_license
-  has_one :common_license
-  accepts_nested_attributes_for :original_license
-  accepts_nested_attributes_for :common_license
+#
+class License < Peta::Item
+  load_manifest
+  belongs_to :license_group
+  belongs_to :system_picture
+  has_many :resource_pictures
+  
+  validates :license_group_id, :presence => true, :numericality => true, :existence => {:both => false}
+  validates :name, :presence => true, :length => {:maximum => 50}
+  validates :caption, :presence => true, :length => {:maximum => 30}
+  validates :url, :presence => true, :length => {:maximum => 200}, :uniqueness => true, :url => {:message => I18n.t('errors.messages.url')} #{:allow_blank => true}
+  validates :system_picture_id, :presence => true, :numericality => true, :existence => {:both => false}
+  
+  def supply_default
+  end
+  
+  def overwrite
+  end
+  
+  def caption_with_group
+    self.license_group.caption + '/' + self.caption
+  end
+  
+  def self.list_where
+    ''
+  end
+  
+  def self.list_order
+    'licenses.name'
+  end
+  
+  def self.list_opt
+    {:license_group => {}}
+  end
+  
+  def self.list_json_opt
+    {:include => {:license_group => {}}}
+  end
+  
+  def self.show_opt
+    {:include => {:license_group => {}}}
+  end
+  
+  def self.show_json_opt
+    {:include => {:license_group => {}}}
+  end
+  
+  def self.list_by_name name
+    License.find :all, :conditions => ['licenses.name = ?', name], :order => 'licenses.updated_at desc'
+  end
+  
+  def self.store name, attr
+    r = License.replace_system_picture attr
+    attr['credit_pictures'] = attr['credit_pictures'].to_json
+    l = License.modify_object name, attr
+    if r == false
+      l.errors.add :base, SystemPicture.model_name.human + I18n.t('errors.not_create')
+    else
+      l.save
+    end
+    l
+  end
+  
+  def self.stores attrs, lg_id
+    res = 0
+    return 0 unless attrs.is_a?(Hash)
+    attrs.each do |name, attr|
+      attr["license_group_id"] = lg_id
+      l = License.store name, attr
+      res += 1 unless l.valid?
+    end
+    res
+  end
+  
+  def credit_pictures_attr
+    return @credit_pictures_attr if @credit_pictures_attr
+    begin
+      @credit_pictures_attr = JSON.parse(self.credit_pictures)
+    rescue 
+    end
+    @credit_pictures_attr = {} unless @credit_pictures_attr
+    @credit_pictures_attr
+  end
+  
+  def self.export(dt = nil)
+    opt = {}
+    opt.merge!({:conditions => ['updated_at >= ?', dt]}) if dt
+#    opt.merge!({:order => 'name'})
+    License.find(:all, opt)
+  end
   
 end