From e7c930a55b9832a767bfb1a5e2a8add8f9e719f9 Mon Sep 17 00:00:00 2001 From: Dmitriy Zaporozhets Date: Fri, 14 Jun 2013 16:30:48 +0300 Subject: [PATCH] Add imported boolean to project. Prevent shell from creating repo after it was imported --- app/contexts/projects/create_context.rb | 1 + app/helpers/application_helper.rb | 2 +- app/models/project.rb | 4 ++++ app/observers/project_observer.rb | 16 ++++++++-------- db/migrate/20130614132337_add_improted_to_project.rb | 5 +++++ db/schema.rb | 3 ++- 6 files changed, 21 insertions(+), 10 deletions(-) create mode 100644 db/migrate/20130614132337_add_improted_to_project.rb diff --git a/app/contexts/projects/create_context.rb b/app/contexts/projects/create_context.rb index 2922564..d3b8dee 100644 --- a/app/contexts/projects/create_context.rb +++ b/app/contexts/projects/create_context.rb @@ -51,6 +51,7 @@ module Projects if shell.import_repository(@project.path_with_namespace, @project.import_url) # We should create satellite for imported repo @project.satellite.create unless @project.satellite.exists? + @project.imported = true true else @project.errors.add(:import_url, 'cannot clone repo') diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 663a414..a73d574 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -142,7 +142,7 @@ module ApplicationHelper end def user_color_scheme_class - COLOR_SCHEMES[current_user.try(:color_scheme_id)] + COLOR_SCHEMES[current_user.try(:color_scheme_id)] if defined?(current_user) end # Define whenever show last push event diff --git a/app/models/project.rb b/app/models/project.rb index 22a9c1f..234d5e9 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -413,6 +413,10 @@ class Project < ActiveRecord::Base !(forked_project_link.nil? || forked_project_link.forked_from_project.nil?) end + def imported? + imported + end + def rename_repo old_path_with_namespace = File.join(namespace_dir, path_was) new_path_with_namespace = File.join(namespace_dir, path) diff --git a/app/observers/project_observer.rb b/app/observers/project_observer.rb index bd88bb8..3d4d161 100644 --- a/app/observers/project_observer.rb +++ b/app/observers/project_observer.rb @@ -1,13 +1,13 @@ class ProjectObserver < BaseObserver def after_create(project) - unless project.forked? - GitlabShellWorker.perform_async( - :add_repository, - project.path_with_namespace - ) - - log_info("#{project.owner.name} created a new project \"#{project.name_with_namespace}\"") - end + return true if project.forked? || project.imported? + + GitlabShellWorker.perform_async( + :add_repository, + project.path_with_namespace + ) + + log_info("#{project.owner.name} created a new project \"#{project.name_with_namespace}\"") end def after_update(project) diff --git a/db/migrate/20130614132337_add_improted_to_project.rb b/db/migrate/20130614132337_add_improted_to_project.rb new file mode 100644 index 0000000..cc882c3 --- /dev/null +++ b/db/migrate/20130614132337_add_improted_to_project.rb @@ -0,0 +1,5 @@ +class AddImprotedToProject < ActiveRecord::Migration + def change + add_column :projects, :imported, :boolean, default: false, null: false + end +end diff --git a/db/schema.rb b/db/schema.rb index bec32c1..c3c751e 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended to check this file into your version control system. -ActiveRecord::Schema.define(:version => 20130613173246) do +ActiveRecord::Schema.define(:version => 20130614132337) do create_table "deploy_keys_projects", :force => true do |t| t.integer "deploy_key_id", :null => false @@ -172,6 +172,7 @@ ActiveRecord::Schema.define(:version => 20130613173246) do t.string "issues_tracker_id" t.boolean "snippets_enabled", :default => true, :null => false t.datetime "last_activity_at" + t.boolean "imported", :default => false, :null => false end add_index "projects", ["creator_id"], :name => "index_projects_on_owner_id" -- libgit2 0.21.2