Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
G
gitlab-ce
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
1
Merge Requests
1
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
gitlab-ce
Commits
9be4948e
Commit
9be4948e
authored
Feb 14, 2017
by
James Edwards-Jones
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Issues CSV exported and emailed by Sidekiq worker
parent
e8cf6b07
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
57 additions
and
11 deletions
+57
-11
app/controllers/projects/issues_controller.rb
app/controllers/projects/issues_controller.rb
+11
-9
app/services/issues/export_csv_service.rb
app/services/issues/export_csv_service.rb
+5
-0
app/views/projects/issues/export_issues/_csv_download.html.haml
...ews/projects/issues/export_issues/_csv_download.html.haml
+1
-1
app/workers/export_csv_worker.rb
app/workers/export_csv_worker.rb
+15
-0
config/routes/project.rb
config/routes/project.rb
+2
-1
config/sidekiq_queues.yml
config/sidekiq_queues.yml
+1
-0
spec/services/issues/export_csv_service_spec.rb
spec/services/issues/export_csv_service_spec.rb
+22
-0
No files found.
app/controllers/projects/issues_controller.rb
View file @
9be4948e
...
...
@@ -27,13 +27,11 @@ class Projects::IssuesController < Projects::ApplicationController
@issues
=
issues_collection
@issues_count
=
@issues
.
count
if
!
request
.
format
.
csv?
@issues
=
@issues
.
page
(
params
[
:page
])
@issuable_meta_data
=
issuable_meta_data
(
@issues
)
@issues
=
@issues
.
page
(
params
[
:page
])
@issuable_meta_data
=
issuable_meta_data
(
@issues
)
if
@issues
.
out_of_range?
&&
@issues
.
total_pages
!=
0
return
redirect_to
url_for
(
params
.
merge
(
page:
@issues
.
total_pages
))
end
if
@issues
.
out_of_range?
&&
@issues
.
total_pages
!=
0
return
redirect_to
url_for
(
params
.
merge
(
page:
@issues
.
total_pages
))
end
if
params
[
:label_name
].
present?
...
...
@@ -55,9 +53,6 @@ class Projects::IssuesController < Projects::ApplicationController
respond_to
do
|
format
|
format
.
html
format
.
atom
{
render
layout:
false
}
format
.
csv
do
render
text:
Issues
::
ExportCsvService
.
new
(
@issues
).
render
end
format
.
json
do
render
json:
{
html:
view_to_html_string
(
"projects/issues/_issues"
),
...
...
@@ -152,6 +147,13 @@ class Projects::IssuesController < Projects::ApplicationController
render
:edit
end
def
export_csv
ExportCsvWorker
.
perform_async
(
@current_user
.
id
,
@project
.
id
,
filter_params
)
index_path
=
namespace_project_issues_path
(
@project
.
namespace
,
@project
)
redirect_to
(
index_path
,
notice:
"CSV export queued"
)
end
def
referenced_merge_requests
@merge_requests
=
@issue
.
referenced_merge_requests
(
current_user
)
@closed_by_merge_requests
=
@issue
.
closed_by_merge_requests
(
current_user
)
...
...
app/services/issues/export_csv_service.rb
View file @
9be4948e
...
...
@@ -9,6 +9,11 @@ module Issues
csv_builder
.
render
end
def
email
(
user
,
project
)
content
=
render
Notify
.
issues_csv_email
(
user
,
project
,
content
,
@issues
.
count
).
deliver_now
end
private
def
csv_builder
...
...
app/views/projects/issues/export_issues/_csv_download.html.haml
View file @
9be4948e
...
...
@@ -16,7 +16,7 @@
After we finish preparing your .csv export, we'll email it to
%strong
=
@current_user
.
email
.modal-footer
=
link_to
'Request export'
,
namespace_project_issues_path
(
@project
.
namespace
,
@project
,
params
.
permit
(
IssuableFinder
::
VALID_PARAMS
).
merge
(
format: :csv
))
,
class:
"btn btn-success pull-left"
,
title:
"Request export"
=
link_to
'Request export'
,
export_csv_namespace_project_issues_path
(
@project
.
namespace
,
@project
,
params
.
permit
(
IssuableFinder
::
VALID_PARAMS
)),
method: :post
,
class:
"btn btn-success pull-left"
,
title:
"Request export"
:javascript
$
(
function
(){
...
...
app/workers/export_csv_worker.rb
0 → 100644
View file @
9be4948e
class
ExportCsvWorker
include
Sidekiq
::
Worker
include
DedicatedSidekiqQueue
def
perform
(
current_user_id
,
project_id
,
params
)
@current_user
=
User
.
find
(
current_user_id
)
@project
=
Project
.
find
(
project_id
)
params
.
merge!
(
project_id:
project_id
)
issues
=
IssuesFinder
.
new
(
@current_user
,
params
).
execute
Issues
::
ExportCsvService
.
new
(
issues
.
limit
(
100
)).
email
(
@current_user
,
@project
)
end
end
config/routes/project.rb
View file @
9be4948e
...
...
@@ -281,7 +281,8 @@ constraints(ProjectUrlConstrainer.new) do
get
:can_create_branch
end
collection
do
post
:bulk_update
post
:bulk_update
post
:export_csv
end
end
...
...
config/sidekiq_queues.yml
View file @
9be4948e
...
...
@@ -59,3 +59,4 @@
- [admin_emails, 1]
- [geo_repository_update, 1]
- [elastic_batch_project_indexer, 1]
- [export_csv, 1]
spec/services/issues/export_csv_service_spec.rb
0 → 100644
View file @
9be4948e
require
'spec_helper'
describe
Issues
::
ExportCsvService
,
services:
true
do
let
(
:project
)
{
create
(
:project
)
}
let!
(
:issues
)
{
create_list
(
:issue
,
2
,
project:
project
)
}
let
(
:subject
)
{
described_class
.
new
(
Issue
.
all
)
}
it
'renders csv to string'
do
expect
(
subject
.
render
).
to
be_a
String
end
describe
'#email'
do
let
(
:user
)
{
double
(
notification_email:
'notification@example.com'
)
}
it
'emails csv'
do
expect
{
subject
.
email
(
user
,
project
)
}.
to
change
(
ActionMailer
::
Base
.
deliveries
,
:count
)
end
end
it
'renders csv to temporary file'
it
'includes relevent details (move from feature spec)'
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