X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=app%2Fcontrollers%2Fapplication_controller.rb;h=0016b3d4ebef0ecc47cb2c88249533e638f772fc;hb=30e0eb45652d2f78a327be7e49534de11ecea74a;hp=d802fbf8f99f9ed88b933afd47691d7985e001a8;hpb=ebc737a8fca36b965e53899182f4ab7ccbd74b0d;p=pettanr%2Fpettanr.git diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index d802fbf8..0016b3d4 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -1,15 +1,17 @@ class ApplicationController < ActionController::Base protect_from_forgery - layout :devise_layout if MagicNumber['test_layout'] + layout :devise_layout before_filter :bf def devise_layout if devise_controller? case resource_name when :admin - 'test' + 'guest' when :user - 'test' + 'guest' + when :demand_user + 'guest' end else 'application' @@ -27,30 +29,53 @@ class ApplicationController < ActionController::Base redirect_to :controller => '/system', :action => 'start' end else - if user_signed_in? - @user = current_user - @author = @user.author - @artist = if @author and @author.artist? - @author.artist - else - nil - end + user = if user_signed_in? + current_user + else + nil + end + author = if user + user.author + else + nil + end + artist = if user + user.artist + else + nil end - @admin = if admin_signed_in? + admin = if admin_signed_in? current_admin else nil end - @demand_user = if demand_user_signed_in? + demand_user = if demand_user_signed_in? current_demand_user else nil end + @operators = Operator.new [user, author, artist, admin, demand_user] end end + def authenticate_reader + authenticate_user! unless @operators.reader? + end + + def authenticate_user + authenticate_user! unless @operators.user? + end + + def authenticate_resource_reader + authenticate_user! unless @operators.resource_reader? + end + + def authenticate_admin + authenticate_admin! unless @operators.admin? + end + def authenticate_author - if @author + if @operators.author true else respond_to do |format| @@ -63,9 +88,9 @@ class ApplicationController < ActionController::Base false end end - + def authenticate_artist - if @author.artist? + if @operators.artist true else respond_to do |format| @@ -79,6 +104,142 @@ class ApplicationController < ActionController::Base end end + def self.controller + Manifest.manifest.controllers[self.model.item_name] + end + + def self.profiler_manager + Manifest.manifest.profiler_managers[self.model.item_name] + end + + def set_model + @my_controller = Manifest.manifest.controllers[params[:controller].to_s] + @my_action = @my_controller.actions[params[:action].to_s] + @my_model = Manifest.manifest.models[@my_action.item_name] + @my_model_class = @my_model.classify + end + + def set_list + set_model + @list = Locmare::ListGroup.list @my_action.item_name, @my_action.list_name + end + + def filer_list + set_list + list_result = @list.open(@operators, + {:id => params[:id], :page => params[:page], :page_size => params[:page_size]} + ) + @items = list_result.items + respond_to do |format| + format.html { + @filer = Locmare::Filer.new @list.item_name, list_result.items, list_result, :default, @operators + render @filer.template_name, :locals => { + :filer => @filer + } + } + format.json { render json: @items.to_json(@my_model_class.list_json_opt) } + format.atom + format.rss + end + end + + def set_play + set_model + @list = Locmare::ListGroup.list @my_action.item_name, @my_action.list_name + end + + def set_show + set_model + @item = @my_model_class.show(params[:id], @operators) + end + + def show_prof_format format + format.prof { + self.formats = [:html] + @profiler = Locmare::Profiler.new @my_model.model_name, @item, @operators + render @profiler.template_name, :locals => { + :profiler => @profiler + } + } + end + + def show_json_format format + format.json { render json: @item.to_json(@my_model_class.show_json_opt) } + end + + def set_new + set_model + @item = @my_model_class.new + @item.boosts 'post' + @item.supply_default + end + + def set_edit + set_model + @item = @my_model_class.edit(params[:id], @operators) + @item.boosts 'post' + end + + def render_form + respond_to do |format| + format.html { + @form = Locmare::Bucket.factory @item.item_name, @item, true, true, @operators + render @form.template_name, :locals => { + :form => @form + } + } + format.json { render json: @item.to_json(@my_model_class.show_json_opt) } + end + end + + def form_new + set_new + render_form + end + + def form_edit + set_edit + render_form + end + + def list_count + set_list + j = {:count => @list.count(@operators, {:id => params[:id]})} + respond_to do |format| + format.json { render json: j.to_json } + end + end + + def format_filer format + format.html { + @paginate = @@model.list_paginate(@page, @page_size) + render :template => 'system/filer', :locals => { + :items => @items, :model => @@model, + :operators => @operators, :pager => @paginate + } + } + end + + def format_prof format + format.prof { + @profiler = self.class.profiler_manager.open(@item, @operators) + render :template => 'system/prof', :locals => { + :profiler => @profiler + } + } + end + + def assist_items item_name, list_name + list = Locmare::ListGroup.list item_name, list_name + list_result = list.open(@operators, {:id => @item.id, :page => 1, :page_size => 5}) + list_result.items + end + + def assist_filer item_name, items + filer_manager = Pettanr::Application::manifest.filer_managers[item_name] + filer_manager.open(item_name, items, @operators, nil) + end + def set_image(file) if file.respond_to?(:read) file.read @@ -98,34 +259,76 @@ class ApplicationController < ActionController::Base date end - def export_url demander_url, token, date + def export_url demander_url, action, token, date u = demander_url + (demander_url[-1] == '/' ? '' : '/') - u = URI.join(u, 'licenses_export.json?auth_token=' + token) - u = URI.join(u, '&date=' + date) unless date.blank? + prm = '?auth_token=' + token + prm = prm + '&date=' + date.strftime("%Y%m%d") unless date.blank? + u = URI.join(u, action + '.json' + prm) u.to_s end def export_from_provider url - json = RestClient.get url - JSON.parse json + res = nil + begin + json = RestClient.get url + res = JSON.parse json + rescue + end + res + end + + def export_by action, provider_status, ymd + t = ymd_to_time ymd + url = export_url provider_status.provider.demander_url, action, provider_status.token, t + export_from_provider(url) end -=begin - rescue_from ActiveRecord::RecordNotFound, :with => :render_404 - - private - def render_404(exception = nil) - if exception + rescue_from Pettanr::NotWork, :with => :render_not_work + def render_not_work(exception = nil) + if exception + logger.info "Rendering , :: #{exception.message}" + end + respond_to do |format| + format.html { + render :file => "#{Rails.root}/public/not_work.html", :layout => false + } + format.json { + render :text => "400 Not work", :status => 400 + } + end + end + + if Rails.env == 'production' + rescue_from ActiveRecord::RecordNotFound, :with => :render_404 + rescue_from ActiveRecord::Forbidden, :with => :render_403 + + private + def render_404(exception = nil) + if exception logger.info "Rendering 404: #{exception.message}" + end + respond_to do |format| + format.html { + render :file => "#{Rails.root}/public/404.html", :status => 404, :layout => false + } + format.json { + render :text => "404 Not found", :status => 404 + } + end + end + + def render_403(exception = nil) + if exception + logger.info "Rendering 403: #{exception.message}" + end + respond_to do |format| + format.html { + render :file => "#{Rails.root}/public/403.html", :status => 404, :layout => false + } + format.json { + render :text => "403 Forbidden", :status => 403 + } + end end - respond_to do |format| - format.html { - render :file => "#{Rails.root}/public/404.html", :status => 404, :layout => false -} - format.json { - render :text => "404 found", :status => 404 -} - end end -=end end