BigW Consortium Gitlab
Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
G
gitlab-ce
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
Forest Godfrey
gitlab-ce
Commits
9ecebaae
Commit
9ecebaae
authored
Jun 14, 2016
by
James Lopez
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
adding notifications stuff and more refactoring for exporting projects
parent
fe370b1c
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
84 additions
and
29 deletions
+84
-29
gitlab_projects_controller.rb
app/controllers/import/gitlab_projects_controller.rb
+1
-1
projects_controller.rb
app/controllers/projects_controller.rb
+1
-1
projects.rb
app/mailers/emails/projects.rb
+13
-0
notification_service.rb
app/services/notification_service.rb
+8
-0
create_service.rb
app/services/projects/create_service.rb
+0
-2
export_service.rb
app/services/projects/import_export/export_service.rb
+13
-2
project_was_exported_email.html.haml
app/views/notify/project_was_exported_email.html.haml
+8
-0
project_was_exported_email.text.erb
app/views/notify/project_was_exported_email.text.erb
+6
-0
project_was_not_exported_email.html.haml
app/views/notify/project_was_not_exported_email.html.haml
+7
-0
project_was_not_exported_email.text.erb
app/views/notify/project_was_not_exported_email.text.erb
+5
-0
project_export_worker.rb
app/workers/project_export_worker.rb
+1
-0
project_creator.rb
lib/gitlab/gitlab_import/project_creator.rb
+12
-9
project_creator.rb
lib/gitlab/import_export/project_creator.rb
+9
-14
No files found.
app/controllers/import/gitlab_projects_controller.rb
View file @
9ecebaae
...
...
@@ -12,7 +12,7 @@ class Import::GitlabProjectsController < Import::BaseController
return
redirect_back_or_default
(
options:
{
alert:
"You need to upload a GitLab project export archive."
})
end
@project
=
Gitlab
::
GitlabIm
port
::
ProjectCreator
.
new
(
Namespace
.
find
(
project_params
[
:namespace_id
]),
@project
=
Gitlab
::
ImportEx
port
::
ProjectCreator
.
new
(
Namespace
.
find
(
project_params
[
:namespace_id
]),
current_user
,
File
.
expand_path
(
params
[
:file
].
path
),
project_params
[
:path
]).
execute
...
...
app/controllers/projects_controller.rb
View file @
9ecebaae
...
...
@@ -190,7 +190,7 @@ class ProjectsController < Projects::ApplicationController
redirect_to
(
edit_project_path
(
@project
),
notice:
"Project export s
uccessfully s
tarted."
notice:
"Project export started."
)
end
...
...
app/mailers/emails/projects.rb
View file @
9ecebaae
...
...
@@ -50,6 +50,19 @@ module Emails
subject:
subject
(
"Invitation declined"
))
end
def
project_was_exported_email
(
current_user
,
project
)
@project
=
project
mail
(
to:
current_user
.
notification_email
,
subject:
subject
(
"Project was exported"
))
end
def
project_was_not_exported_email
(
current_user
,
project
,
errors
)
@project
=
project
@errors
=
errors
mail
(
to:
current_user
.
notification_email
,
subject:
subject
(
"Project export error"
))
end
def
project_was_moved_email
(
project_id
,
user_id
,
old_path_with_namespace
)
@current_user
=
@user
=
User
.
find
user_id
@project
=
Project
.
find
project_id
...
...
app/services/notification_service.rb
View file @
9ecebaae
...
...
@@ -246,6 +246,14 @@ class NotificationService
end
end
def
project_exported
(
project
,
current_user
)
mailer
.
project_was_exported_email
(
current_user
,
project
).
deliver_later
end
def
project_not_exported
(
project
,
current_user
,
errors
)
mailer
.
project_was_not_exported_email
(
current_user
,
project
,
errors
).
deliver_later
end
protected
# Get project users with WATCH notification level
...
...
app/services/projects/create_service.rb
View file @
9ecebaae
...
...
@@ -52,8 +52,6 @@ module Projects
save_project_and_import_data
(
import_data
)
@project
.
import_url
=
download_export_namespace_project_path
(
@project
.
namespace
,
@project
)
if
@project
.
gitlab_project_import?
@project
.
import_start
if
@project
.
import?
after_create_actions
if
@project
.
persisted?
&&
!
@project
.
gitlab_project_import?
...
...
app/services/projects/import_export/export_service.rb
View file @
9ecebaae
...
...
@@ -12,8 +12,9 @@ module Projects
def
save_all
if
[
version_saver
,
project_tree_saver
,
uploads_saver
,
repo_saver
,
wiki_repo_saver
].
all?
(
&
:save
)
Gitlab
::
ImportExport
::
Saver
.
save
(
shared:
@shared
)
notify_success
else
cleanup_and_notify
_worker
cleanup_and_notify
end
end
...
...
@@ -37,10 +38,20 @@ module Projects
Gitlab
::
ImportExport
::
WikiRepoSaver
.
new
(
project:
project
,
shared:
@shared
)
end
def
cleanup_and_notify
_worker
def
cleanup_and_notify
FileUtils
.
rm_rf
(
@shared
.
export_path
)
notify_error
raise
Gitlab
::
ImportExport
::
Error
.
new
(
@shared
.
errors
.
join
(
', '
))
end
def
notify_success
notification_service
.
project_exported
(
@project
,
@current_user
)
end
def
notify_error
notification_service
.
project_not_exported
(
@project
,
@current_user
,
@shared
.
errors
.
join
(
', '
))
end
end
end
end
app/views/notify/project_was_exported_email.html.haml
0 → 100644
View file @
9ecebaae
%p
Project
#{
@project
.
name
}
was exported succesfully
%p
The project export can be downloaded from:
=
link_to
download_export_namespace_project_url
(
@project
.
namespace
,
@project
)
do
=
@project
.
name_with_namespace
+
" export"
%p
The download link will expire in 24 hours.
app/views/notify/project_was_exported_email.text.erb
0 → 100644
View file @
9ecebaae
Project
<%=
@project
.
name
%>
was exported succesfully
The project export can be downloaded from:
<%=
download_export_namespace_project_url
(
@project
.
namespace
,
@project
)
%>
The download link will expire in 24 hours.
app/views/notify/project_was_not_exported_email.html.haml
0 → 100644
View file @
9ecebaae
%p
Project
#{
@project
.
name
}
couldn't be exported.
%p
The errors we encountered were:
%h3
{
style:
"background: black; color: red;"
}
#{
@errors
}
app/views/notify/project_was_not_exported_email.text.erb
0 → 100644
View file @
9ecebaae
Project
<%=
@project
.
name
%>
couldn't be exported.
The errors we encountered were:
<%=
@errors
%>
app/workers/project_export_worker.rb
View file @
9ecebaae
...
...
@@ -7,6 +7,7 @@ class ProjectExportWorker
def
perform
(
current_user_id
,
project_id
)
current_user
=
User
.
find
(
current_user_id
)
project
=
Project
.
find
(
project_id
)
::
Projects
::
ImportExport
::
ExportService
.
new
(
project
,
current_user
).
execute
end
end
lib/gitlab/gitlab_import/project_creator.rb
View file @
9ecebaae
...
...
@@ -3,21 +3,24 @@ module Gitlab
class
ProjectCreator
attr_reader
:repo
,
:namespace
,
:current_user
,
:session_data
def
initialize
(
namespace_id
,
current_user
,
file
,
project_path
)
@namespace_id
=
namespace_id
def
initialize
(
repo
,
namespace
,
current_user
,
session_data
)
@repo
=
repo
@namespace
=
namespace
@current_user
=
current_user
@file
=
file
@project_path
=
project_path
@session_data
=
session_data
end
def
execute
::
Projects
::
CreateService
.
new
(
current_user
,
name:
@project_path
,
path:
@project_path
,
namespace_id:
namespace_id
,
import_type:
"gitlab_project"
,
import_source:
@file
name:
repo
[
"name"
],
path:
repo
[
"path"
],
description:
repo
[
"description"
],
namespace_id:
namespace
.
id
,
visibility_level:
repo
[
"visibility_level"
],
import_type:
"gitlab"
,
import_source:
repo
[
"path_with_namespace"
],
import_url:
repo
[
"http_url_to_repo"
].
sub
(
"://"
,
"://oauth2:
#{
@session_data
[
:gitlab_access_token
]
}
@"
)
).
execute
end
end
...
...
lib/gitlab/import_export/project_creator.rb
View file @
9ecebaae
...
...
@@ -2,26 +2,21 @@ module Gitlab
module
ImportExport
class
ProjectCreator
def
initialize
(
namespace_id
,
current_user
)
@repo
=
repo
@namespace
=
Namespace
.
find_by_id
(
namespace_id
)
def
initialize
(
namespace_id
,
current_user
,
file
,
project_path
)
@namespace_id
=
namespace_id
@current_user
=
current_user
@user_map
=
user_map
@file
=
file
@project_path
=
project_path
end
def
execute
::
Projects
::
CreateService
.
new
(
current_user
,
name:
repo
.
name
,
path:
repo
.
name
,
description:
repo
.
summary
,
namespace:
namespace
,
creator:
current_user
,
visibility_level:
Gitlab
::
VisibilityLevel
::
PUBLIC
,
import_type:
"google_code"
,
import_source:
repo
.
name
,
import_url:
repo
.
import_url
,
import_data:
{
data:
{
'repo'
=>
repo
.
raw_data
,
'user_map'
=>
user_map
}
}
name:
@project_path
,
path:
@project_path
,
namespace_id:
namespace_id
,
import_type:
"gitlab_project"
,
import_source:
@file
).
execute
end
end
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment