OSDN Git Service

t#31056:add diff import
authoryasushiito <yas@pen-chan.jp>
Sat, 30 Mar 2013 07:02:55 +0000 (16:02 +0900)
committeryasushiito <yas@pen-chan.jp>
Sat, 30 Mar 2013 07:02:55 +0000 (16:02 +0900)
app/controllers/provider_statuses_controller.rb
app/models/provider_status.rb
app/views/provider_statuses/show.html.erb
config/locales/pettanr.ja.yml
config/routes.rb

index 0e865e0..241917c 100644 (file)
@@ -1,6 +1,6 @@
 class ProviderStatusesController < ApplicationController
   layout 'test' if MagicNumber['test_layout']
-  before_filter :authenticate_admin!, :only => [:index, :show, :edit, :update, :destroy, :licenses_import, :artists_import, :original_pictures_import]
+  before_filter :authenticate_admin!, :only => [:index, :show, :edit, :update, :destroy, :licenses_import, :artists_import, :original_pictures_import, :import]
   
   private
   
@@ -24,6 +24,12 @@ class ProviderStatusesController < ApplicationController
     ProviderOriginalPicture.import @provider_status.provider.id, original_pictures, pictures
   end
   
+  def port
+    exports = export_by('export', @provider_status, params[:date])
+    return nil unless exports
+    ProviderStatus.import @provider_status.provider.id, exports
+  end
+  
   public
   
   def index
@@ -120,4 +126,15 @@ class ProviderStatusesController < ApplicationController
     end
   end
   
+  def import
+    @provider_status = ProviderStatus.show(params[:id], @admin)
+    raise ActiveRecord::Forbidden if @provider_status.status == 0
+    @failures = port
+    p @failures
+    respond_to do |format|
+      format.html # show.html.erb
+      format.json { render :json => @failures.to_json() }
+    end
+  end
+  
 end
index 2ef6510..ae0cc11 100644 (file)
@@ -113,4 +113,17 @@ class ProviderStatus < ActiveRecord::Base
     self.save
   end
   
+  def self.import pid, exports
+    res = {}
+    ProviderStatus.transaction do
+      res[:licenses] = ProviderLicense.import @provider_status.provider.id, exports['licenses']
+      raise ActiveRecord::Rollback if res[:licenses].any?
+      res[:artists] = ProviderArtist.import @provider_status.provider.id, exports['artists']
+      raise ActiveRecord::Rollback if res[:artists].any?
+      res[:original_pictures] = ProviderOriginalPicture.import @provider_status.provider.id, exports['original_pictures']
+      raise ActiveRecord::Rollback if res[:original_pictures].any?
+    end
+    res
+  end
+  
 end
index 0ddba6b..3434138 100644 (file)
   </p>
   <%= link_to t('provider_statuses.show.receive_start'), edit_provider_status_path(@provider_status) %>
 <% else %>
+  <h2><%= t('provider_statuses.show.import') %></h2>
+  <p>
+    <%= form_tag( :action => :import, :id => @provider_status.id) do %>
+      date: <%= text_field_tag "date" %> YYYYMMDD
+      <%= submit_tag t('provider_statuses.show.import') -%>
+    <% end %>
+  </p>
   <p>
     <%= link_to t('provider_statuses.show.licenses_import'), licenses_import_provider_status_path(@provider_status), :method => :post %>
   </p>
index d7d53bd..9ba7b31 100644 (file)
@@ -765,6 +765,7 @@ ja:
       receive_announce: 借受するには借手となって借受申請する。
       receive_start: この貸手からの借受を開始する
       receive_stop: 借受を停止する
+      import: インポートする
       licenses_import: ライセンスをインポートする
       artists_import: 絵師をインポートする
       original_pictures_import: 素材をインポートする
index 5be543c..003ea56 100644 (file)
@@ -303,6 +303,7 @@ Pettanr::Application.routes.draw do
       post :licenses_import
       post :artists_import
       post :original_pictures_import
+      post :import
     end
   end
   resources :demanders do