diff --git a/app/controllers/myshixuns_controller.rb b/app/controllers/myshixuns_controller.rb index fe64be14f..4002d54da 100644 --- a/app/controllers/myshixuns_controller.rb +++ b/app/controllers/myshixuns_controller.rb @@ -3,7 +3,20 @@ class MyshixunsController < ApplicationController layout 'base_myshixun' skip_before_filter :verify_authenticity_token, :only => [:training_task_status] before_filter :require_login, :except => [:training_task_status] - before_filter :find_myshixun, :only => [:show] + before_filter :find_myshixun, :only => [:show, :myshixun_reset] + + def myshixun_reset + ActiveRecord::Base.transaction do + shixun = @myshixun.shixun + @myshixun.destroy + myshixun_member = @myshixun + repository = @myshixun.repository + repository.destroy + git_rep = Gitlab.client.delete_project(@myshixun.gpid) + + redirect_to shixun_exec_shixun_path(shixun) + end + end # taskId 即返回的game id # 返回结果:params [:stauts] 0 表示成功,其它则失败 diff --git a/app/controllers/shixuns_controller.rb b/app/controllers/shixuns_controller.rb index c30c91cef..4a09e0d48 100644 --- a/app/controllers/shixuns_controller.rb +++ b/app/controllers/shixuns_controller.rb @@ -83,7 +83,7 @@ class ShixunsController < ApplicationController else logger.error("res['code'] is #{res['code']}, res['msg'] is #{res['code']}") @jenkin_error = true - raise("服务器异常,请联系系统管理员") + raise("当前系统繁忙,请稍后再试") end rescue respond_to do |format| @@ -162,6 +162,7 @@ class ShixunsController < ApplicationController generate_identifier m = ShixunMember.new(:user_id => User.current.id, :role => 1) @shixun.shixun_members << m + # 自动构建版本库 format.html { redirect_to shixun_path @shixun, notice: l(:notice_successful_create) } format.js else diff --git a/app/models/game.rb b/app/models/game.rb index 79f4426fe..eb59c825c 100644 --- a/app/models/game.rb +++ b/app/models/game.rb @@ -6,8 +6,8 @@ class Game < ActiveRecord::Base belongs_to :user belongs_to :challenge has_many :outputs, :dependent => :destroy - has_many :test_sets, :dependent => :destroy - has_many :challenge_samples, :dependent => :destroy + has_many :test_sets + has_many :challenge_samples # id 转换成 challenge'position def to_param diff --git a/app/models/myshixun.rb b/app/models/myshixun.rb index 1bf963530..1d062e607 100644 --- a/app/models/myshixun.rb +++ b/app/models/myshixun.rb @@ -1,8 +1,8 @@ # status 1:完成实训 class Myshixun < ActiveRecord::Base attr_accessible :description, :name, :parent_id, :user_id, :gpid, :forked_from, :visits, :is_public, :identifier - has_many :users, :through => :myshixun_members - has_many :myshixun_members + # has_many :users, :through => :myshixun_members + has_many :myshixun_members, :dependent => :destroy has_one :repository has_many :games, :dependent => :destroy, :order => "games.id ASC" belongs_to :shixun diff --git a/app/views/layouts/base_myshixun.html.erb b/app/views/layouts/base_myshixun.html.erb index 3ea92ba82..2ad9e7ebd 100644 --- a/app/views/layouts/base_myshixun.html.erb +++ b/app/views/layouts/base_myshixun.html.erb @@ -41,6 +41,7 @@