Открыть боковую панель
nt_test121
nt_project_9da4a5yt9x4b
Коммиты
7e5524bc
Коммит
7e5524bc
создал
Авг 29, 2019
по автору
George Koltsov
Просмотр файлов
Add project filtering to Bitbucket Cloud import
владелец
edd04207
Изменения
9
Скрыть пробелы
Построчно
Рядом
app/controllers/import/bitbucket_controller.rb
Просмотр файла @
7e5524bc
# frozen_string_literal: true
class
Import::BitbucketController
<
Import
::
BaseController
include
ActionView
::
Helpers
::
SanitizeHelper
before_action
:verify_bitbucket_import_enabled
before_action
:bitbucket_auth
,
except: :callback
...
...
@@ -21,7 +23,7 @@ def callback
# rubocop: disable CodeReuse/ActiveRecord
def
status
bitbucket_client
=
Bitbucket
::
Client
.
new
(
credentials
)
repos
=
bitbucket_client
.
repos
repos
=
bitbucket_client
.
repos
(
filter:
sanitized_filter_param
)
@repos
,
@incompatible_repos
=
repos
.
partition
{
|
repo
|
repo
.
valid?
}
...
...
@@ -104,4 +106,8 @@ def credentials
refresh_token:
session
[
:bitbucket_refresh_token
]
}
end
def
sanitized_filter_param
@filter
||=
sanitize
(
params
[
:filter
])
end
end
app/views/import/bitbucket/status.html.haml
Просмотр файла @
7e5524bc
...
...
@@ -8,7 +8,6 @@
-
if
@repos
.
any?
%p
.light
=
_
(
'Select projects you want to import.'
)
%hr
%p
-
if
@incompatible_repos
.
any?
=
button_tag
class:
'btn btn-import btn-success js-import-all'
do
...
...
@@ -19,6 +18,15 @@
=
_
(
'Import all projects'
)
=
icon
(
'spinner spin'
,
class:
'loading-icon'
)
.position-relative.ms-no-clear.d-flex.flex-fill.float-right
=
form_tag
status_import_bitbucket_path
,
method:
'get'
do
=
text_field_tag
:filter
,
@filter
,
class:
'form-control append-bottom-10 pr-5'
,
placeholder:
_
(
'Filter projects'
),
size:
40
,
autofocus:
true
.position-absolute.position-top-0.d-flex.align-items-center.text-muted.position-right-0
{
style:
'margin-top: 1px'
}
%i
{
class:
'fa fa-times fa-lg pl-2 pr-2 cursor-pointer d-none'
,
'aria-hidden'
:
true
}
.border-left
%button
{
class:
'btn btn-transparent btn-secondary'
,
type:
'submit'
}
%i
{
class:
'fa fa-search'
,
'aria-hidden'
:
true
}
.table-responsive
%table
.table.import-jobs
%colgroup
.import-jobs-from-col
...
...
@@ -59,7 +67,7 @@
-
if
current_user
.
can_select_namespace?
-
selected
=
params
[
:namespace_id
]
||
:current_user
-
opts
=
current_user
.
can_create_group?
?
{
extra_group:
Group
.
new
(
name:
repo
.
owner
,
path:
repo
.
owner
)
}
:
{}
=
select_tag
:namespace_id
,
namespaces_options
(
selected
,
opts
.
merge
({
display_path:
true
})),
{
class:
'
input-group-text
select2 js-select-namespace'
,
tabindex:
1
}
=
select_tag
:namespace_id
,
namespaces_options
(
selected
,
opts
.
merge
({
display_path:
true
})),
{
class:
'select2 js-select-namespace'
,
tabindex:
1
}
-
else
=
text_field_tag
:path
,
current_user
.
namespace_path
,
class:
"input-group-text input-large form-control"
,
tabindex:
1
,
disabled:
true
%span
.input-group-prepend
...
...
app/views/import/bitbucket_server/status.html.haml
Просмотр файла @
7e5524bc
...
...
@@ -62,7 +62,7 @@
-
if
current_user
.
can_select_namespace?
-
selected
=
params
[
:namespace_id
]
||
:extra_group
-
opts
=
current_user
.
can_create_group?
?
{
extra_group:
Group
.
new
(
name:
sanitize_project_name
(
repo
.
project_key
),
path:
sanitize_project_name
(
repo
.
project_key
))
}
:
{}
=
select_tag
:namespace_id
,
namespaces_options
(
selected
,
opts
.
merge
({
display_path:
true
})),
{
class:
'
input-group-text
select2 js-select-namespace'
,
tabindex:
1
}
=
select_tag
:namespace_id
,
namespaces_options
(
selected
,
opts
.
merge
({
display_path:
true
})),
{
class:
'select2 js-select-namespace'
,
tabindex:
1
}
-
else
=
text_field_tag
:path
,
current_user
.
namespace_path
,
class:
"input-group-text input-large form-control"
,
tabindex:
1
,
disabled:
true
%span
.input-group-prepend
...
...
changelogs/unreleased/georgekoltsov-bitbucket-cloud-import-filtering.yml
0 → 100644
Просмотр файла @
7e5524bc
---
title
:
Add project filtering to Bitbucket Cloud import
merge_request
:
32398
author
:
type
:
added
doc/user/project/import/bitbucket.md
Просмотр файла @
7e5524bc
...
...
@@ -56,10 +56,10 @@ namespace that started the import process.
!
[
Grant access
](
img/bitbucket_import_grant_access.png
)
1.
Click on the projects that you'd like to import or
**Import all projects**
.
You can also select the namespace under which
each project will be
imported.
You can also
filter projects by name and
select the namespace under which
each project will be
imported.
!
[
Import projects
](
img/bitbucket_import_select_project.png
)
!
[
Import projects
](
img/bitbucket_import_select_project
_v12_3
.png
)
[
bb-import
]:
../../../integration/bitbucket.md
[
social sign-in
]:
../../profile/account/social_sign_in.md
doc/user/project/import/img/bitbucket_import_select_project.png
удалено
100644 → 0
Просмотр файла @
edd04207
8,5 КБ
doc/user/project/import/img/bitbucket_import_select_project_v12_3.png
0 → 100644
Просмотр файла @
7e5524bc
46,2 КБ
lib/bitbucket/client.rb
Просмотр файла @
7e5524bc
...
...
@@ -38,8 +38,10 @@ def repo(name)
Representation
::
Repo
.
new
(
parsed_response
)
end
def
repos
def
repos
(
filter:
nil
)
path
=
"/repositories?role=member"
path
+=
"&q=name~
\"
#{
filter
}
\"
"
if
filter
get_collection
(
path
,
:repo
)
end
...
...
spec/controllers/import/bitbucket_controller_spec.rb
Просмотр файла @
7e5524bc
...
...
@@ -80,6 +80,21 @@ def assign_session_tokens
expect
(
assigns
(
:already_added_projects
)).
to
eq
([
@project
])
expect
(
assigns
(
:repos
)).
to
eq
([])
end
context
'when filtering'
do
let
(
:filter
)
{
'<html>test</html>'
}
let
(
:expected_filter
)
{
'test'
}
subject
{
get
:status
,
params:
{
filter:
filter
},
as: :json
}
it
'passes sanitized filter param to bitbucket client'
do
expect_next_instance_of
(
Bitbucket
::
Client
)
do
|
client
|
expect
(
client
).
to
receive
(
:repos
).
with
(
filter:
expected_filter
).
and_return
([
@repo
])
end
subject
end
end
end
describe
"POST create"
do
...
...
Редактирование
Предварительный просмотр
Поддерживает Markdown
0%
Попробовать снова
или
прикрепить новый файл
.
Отмена
You are about to add
0
people
to the discussion. Proceed with caution.
Сначала завершите редактирование этого сообщения!
Отмена
Пожалуйста,
зарегистрируйтесь
или
войдите
чтобы прокомментировать