Class: JobsController

Inherits:
ApplicationController show all
Includes:
ExportHelper
Defined in:
frontend/app/controllers/jobs_controller.rb

Instance Method Summary (collapse)

Methods included from ExportHelper

#xml_response

Methods inherited from ApplicationController

can_access?, permission_mappings, set_access_control

Instance Method Details

- (Object) cancel



70
71
72
73
74
# File 'frontend/app/controllers/jobs_controller.rb', line 70

def cancel
  Job.cancel(params[:id])

  redirect_to :action => :show
end

- (Object) create



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'frontend/app/controllers/jobs_controller.rb', line 21

def create

  job_data = case params['job']['job_type']
             when 'find_and_replace_job'
               params['find_and_replace_job'].reject{|k,v| k === '_resolved'}
             when 'print_to_pdf_job'
               params['print_to_pdf_job'].reject{|k,v| k === '_resolved'}
             when 'report_job' 
               params['report_job']
             when 'import_job'
               params['import_job']
             end


  job_data["repo_id"] ||= session[:repo_id]
  begin
    job = Job.new(params['job']['job_type'], job_data, Hash[Array(params['files']).reject(&:blank?).map {|file|
                                [file.original_filename, file.tempfile]}], 
                                params['job']['job_params']
                 )

  rescue JSONModel::ValidationException => e

    @exceptions = e.invalid_object._exceptions
    @job = e.invalid_object
    @job_types = job_types
    @import_types = import_types

    if params[:iframePOST] # IE saviour. Render the form in a textarea for the AjaxPost plugin to pick out.
      return render_aspace_partial :partial => "jobs/form_for_iframepost", :status => 400
    else
      return render_aspace_partial :partial => "jobs/form", :status => 400
    end
  end

  if params[:iframePOST] # IE saviour. Render the form in a textarea for the AjaxPost plugin to pick out.
    render :text => "<textarea data-type='json'>#{job.upload.to_json}</textarea>"
  else
    render :json => job.upload
  end
end

- (Object) download_file



102
103
104
105
106
107
108
109
110
111
112
# File 'frontend/app/controllers/jobs_controller.rb', line 102

def download_file
  @job = JSONModel(:job).find(params[:job_id], "resolve[]" => "repository")
  
  if @job.job.has_key?("format") && !@job.job["format"].blank? 
      format = @job.job["format"]
  else
      format = "pdf"
  end 
  url = "/repositories/#{JSONModel::repository}/jobs/#{params[:job_id]}/output_files/#{params[:id]}"
  stream_file(url, {:format => format, :filename => "job_#{params[:job_id].to_s}_file_#{params[:id].to_s}" } ) 
end

- (Object) index



9
10
11
12
# File 'frontend/app/controllers/jobs_controller.rb', line 9

def index
  @active_jobs = Job.active
  @search_data = Job.archived(selected_page)
end

- (Object) log



77
78
79
80
81
82
83
# File 'frontend/app/controllers/jobs_controller.rb', line 77

def log
  self.response_body = Enumerator.new do |y|
    Job.log(params[:id], params[:offset] || 0) do |response|
      y << response.body
    end
  end
end

- (Object) new



14
15
16
17
18
19
# File 'frontend/app/controllers/jobs_controller.rb', line 14

def new
  @job = JSONModel(:job).new._always_valid!
  @job_types = job_types
  @import_types = import_types
  @report_data = JSONModel::HTTP::get_json("/reports")
end

- (Object) records



115
116
117
118
# File 'frontend/app/controllers/jobs_controller.rb', line 115

def records
  @search_data = Job.records(params[:id], params[:page] || 1)
  render_aspace_partial :partial => "jobs/job_records"
end

- (Object) show



64
65
66
67
# File 'frontend/app/controllers/jobs_controller.rb', line 64

def show
  @job = JSONModel(:job).find(params[:id], "resolve[]" => "repository")
  @files = JSONModel::HTTP::get_json("#{@job['uri']}/output_files") 
end

- (Object) status



86
87
88
89
90
91
92
93
94
95
96
97
98
99
# File 'frontend/app/controllers/jobs_controller.rb', line 86

def status
  job = JSONModel(:job).find(params[:id])

  json = {
      :status => job.status
  }

  if job.status === "queued"
    json[:queue_position] = job.queue_position
    json[:queue_position_message] = job.queue_position === 0 ? I18n.t("job._frontend.messages.queue_position_next") : I18n.t("job._frontend.messages.queue_position", :position => (job.queue_position+1).ordinalize)
  end

  render :json => json
end