Class: ImporterController

Inherits:
ApplicationController
  • Object
show all
Defined in:
app/controllers/importer_controller.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#dumperObject

Returns the value of attribute dumper.



6
7
8
# File 'app/controllers/importer_controller.rb', line 6

def dumper
  @dumper
end

#user_mapObject

Returns the value of attribute user_map.



5
6
7
# File 'app/controllers/importer_controller.rb', line 5

def user_map
  @user_map
end

Instance Method Details

#dumpObject



40
41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'app/controllers/importer_controller.rb', line 40

def dump
  , password, repo = params[:login], params[:password], params[:repo]
  dumper = Octomine::Dumper.new , password, repo
  logger.info "Dumper found #{dumper.issues.length} issues on GitHub repo #{repo}"

  github_dump = File.open(Rails.root.join('tmp/github_dump'), 'w')
  github_dump.print(YAML.dump(dumper))
  session[:github_dump] = github_dump.path
  github_dump.flush
  logger.info "#{File.size(session[:github_dump])} bytes written to #{session[:github_dump]}"

  flash[:notice] = t(:dump_complete)
  redirect_to :controller => :importer, :action => :index
end

#fresh_dumpObject



55
56
57
58
59
60
61
62
63
64
# File 'app/controllers/importer_controller.rb', line 55

def fresh_dump
  return nil unless session[:github_dump]
  unless File.exists?(session[:github_dump])
    flash[:warning] = "Dump file expired #{session[:github_dump]}"
    session[:github_dump] = nil
    return nil
  end
  return @dumper if @dumper
  @dumper = YAML.load(File.read(session[:github_dump]))
end

#importObject



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'app/controllers/importer_controller.rb', line 17

def import
  unless dump = fresh_dump
    flash[:notice] = t(:no_dump_to_import)
    redirect_to :controller => :importer, :action => :index
    return
  end

  importer = Octomine::Importer.new logger
  user_map = importer.import_users YAML.load(params[:user_map]), User.current, params[:create_missing_users]

  user_map.each do |k, v|
    logger.info "#{k}: [#{v.id}, #{v.}]"
  end

  default_tracker_id = Tracker.first.id
  closed_status_id   = IssueStatus.find_by_is_closed(true).id
  open_status_id     = IssueStatus.find_by_is_default(true).id
  importer.import_issues @project.id, default_tracker_id, user_map, dump.issues, closed_status_id, open_status_id

  flash[:notice] = t(:import_complete)
  redirect_to :controller => :importer, :action => :index
end

#indexObject



8
9
10
11
12
13
14
15
# File 'app/controllers/importer_controller.rb', line 8

def index
  if dump = fresh_dump
    @user_map = {}
    dump.users.each do ||
      @user_map[] = nil
    end
  end
end