Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
I
internewshid
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Container Registry
Model registry
Operate
Environments
Monitor
Incidents
Service Desk
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
aptivate
client-projects
internewshid
Commits
dac37a7b
Commit
dac37a7b
authored
9 years ago
by
Martin Burchell
Browse files
Options
Downloads
Patches
Plain Diff
Updated batch UI to remove question types
parent
b9132435
No related branches found
Branches containing commit
No related tags found
1 merge request
!31
Uncategorise
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
django/website/hid/tabs/view_and_edit_table.py
+42
-17
42 additions, 17 deletions
django/website/hid/tabs/view_and_edit_table.py
django/website/hid/tests/views_tests.py
+77
-1
77 additions, 1 deletion
django/website/hid/tests/views_tests.py
with
119 additions
and
18 deletions
django/website/hid/tabs/view_and_edit_table.py
+
42
−
17
View file @
dac37a7b
...
...
@@ -18,6 +18,7 @@ QUESTION_TYPE_TAXONOMY = 'ebola-questions'
ADD_CATEGORY_PREFIX
=
'
add-category-
'
DELETE_COMMAND
=
'
delete
'
NONE_COMMAND
=
'
none
'
REMOVE_QTYPE_COMMAND
=
'
remove-question-type
'
class
ViewAndEditTableTab
(
object
):
...
...
@@ -160,7 +161,8 @@ class ViewAndEditTableTab(object):
label
=
_
(
'
Actions
'
),
items
=
[
(
NONE_COMMAND
,
'
---------
'
),
(
DELETE_COMMAND
,
_
(
'
Delete Selected
'
))
(
DELETE_COMMAND
,
_
(
'
Delete Selected
'
)),
(
REMOVE_QTYPE_COMMAND
,
_
(
'
Remove Question Type
'
))
]
)
]
...
...
@@ -233,6 +235,42 @@ def _get_view_and_edit_form_request_parameters(params):
return
new_params
def
_handle_batch_action
(
request
,
batch_action
,
selected
):
if
not
batch_action
:
# TODO: is this ever called?
messages
.
error
(
request
,
_
(
'
Missing batch action
'
))
return
if
batch_action
==
NONE_COMMAND
:
return
if
batch_action
==
DELETE_COMMAND
:
_delete_items
(
request
,
selected
)
return
if
batch_action
.
startswith
(
ADD_CATEGORY_PREFIX
):
_categorize_items
(
request
,
selected
,
batch_action
[
len
(
ADD_CATEGORY_PREFIX
):])
return
if
batch_action
==
REMOVE_QTYPE_COMMAND
:
_categorize_items
(
request
,
selected
,
None
)
return
messages
.
error
(
request
,
_
(
"
Unknown batch action
'
%s
'"
%
batch_action
))
def
_categorize_items
(
request
,
items
,
category
):
# TODO: add the taxonomy to the form.
_add_items_categories
(
request
,
[(
item
,
QUESTION_TYPE_TAXONOMY
,
category
)
for
item
in
items
])
def
view_and_edit_table_form_process_items
(
request
):
"""
Request to process a selection of items from the
view & edit table page.
...
...
@@ -249,21 +287,8 @@ def view_and_edit_table_form_process_items(request):
params
=
_get_view_and_edit_form_request_parameters
(
request
.
POST
)
if
params
[
'
action
'
]
==
'
batchupdate
'
:
selected
=
ItemTable
.
get_selected
(
params
)
batch_action
=
params
[
'
batchaction
'
]
if
batch_action
==
DELETE_COMMAND
:
_delete_items
(
request
,
selected
)
elif
batch_action
and
batch_action
.
startswith
(
ADD_CATEGORY_PREFIX
):
category
=
batch_action
[
len
(
ADD_CATEGORY_PREFIX
):]
# TODO: add the taxonomy to the form.
_add_items_categories
(
request
,
[(
item
,
QUESTION_TYPE_TAXONOMY
,
category
)
for
item
in
selected
]
)
elif
batch_action
==
NONE_COMMAND
:
pass
else
:
messages
.
error
(
request
,
_
(
'
Unknown batch action
'
))
_handle_batch_action
(
request
,
params
[
'
batchaction
'
],
selected
)
elif
params
[
'
action
'
]
==
'
save
'
:
changes
=
ItemTable
.
get_row_select_values
(
params
,
'
category
'
)
# TODO: Add the taxonomy to the form
...
...
@@ -318,7 +343,7 @@ def _add_items_categories(request, items):
failed
=
0
for
item_id
,
taxonomy_slug
,
term_name
in
items
:
try
:
if
term_name
:
if
term_name
:
# TODO not None
transport
.
items
.
add_term
(
item_id
,
taxonomy_slug
,
...
...
This diff is collapsed.
Click to expand it.
django/website/hid/tests/views_tests.py
+
77
−
1
View file @
dac37a7b
...
...
@@ -11,7 +11,9 @@ from hid.tabs.view_and_edit_table import (
view_and_edit_table_form_process_items
,
_delete_items
,
_get_view_and_edit_form_request_parameters
,
DELETE_COMMAND
DELETE_COMMAND
,
QUESTION_TYPE_TAXONOMY
,
REMOVE_QTYPE_COMMAND
)
from
tabbed_page.tests.factories
import
(
...
...
@@ -92,6 +94,42 @@ def test_process_items_deletes_items(request_item):
check_item_was_deleted
(
req
)
@pytest.mark.django_db
def
test_process_items_removes_question_type
():
msg
=
{
'
body
'
:
"
Message text
"
}
transport
.
items
.
create
(
msg
)
[
item
]
=
list
(
transport
.
items
.
list
())
taxonomy
=
TaxonomyFactory
(
name
=
"
Ebola Questions
"
)
term_to_delete
=
TermFactory
(
name
=
'
term to be deleted
'
,
taxonomy
=
taxonomy
)
transport
.
items
.
add_term
(
item
[
'
id
'
],
term_to_delete
.
taxonomy
.
slug
,
term_to_delete
.
name
)
term_to_keep
=
TermFactory
(
name
=
'
term not to be deleted
'
)
transport
.
items
.
add_term
(
item
[
'
id
'
],
term_to_keep
.
taxonomy
.
slug
,
term_to_keep
.
name
)
url
=
reverse
(
'
data-view-process
'
)
request
=
ReqFactory
.
post
(
url
,
{
'
action
'
:
'
batchupdate-top
'
,
'
batchaction-top
'
:
REMOVE_QTYPE_COMMAND
,
'
select_item_id
'
:
[
item
[
'
id
'
]],
'
next
'
:
'
http://localhost/testurl
'
})
request
=
fix_messages
(
request
)
view_and_edit_table_form_process_items
(
request
)
[
item
]
=
list
(
transport
.
items
.
list
())
term_names
=
[
t
[
'
name
'
]
for
t
in
item
[
'
terms
'
]]
assert
term_to_keep
.
name
in
term_names
assert
term_to_delete
.
name
not
in
term_names
def
test_empty_process_items_redirects_to_data_view
():
url
=
reverse
(
'
data-view-process
'
)
redirect_url
=
reverse
(
'
tabbed-page
'
,
kwargs
=
{
...
...
@@ -173,6 +211,44 @@ def test_get_category_options_orders_by_lowercase_name():
assert
options
==
expected
@pytest.mark.django_db
def
test_actions_includes_remove_question_type_option
():
page
=
TabbedPageFactory
()
tab_instance
=
TabInstanceFactory
(
page
=
page
)
request
=
Mock
(
GET
=
{})
tab
=
ViewAndEditTableTab
()
term
=
TermFactory
()
categories
=
[
term
.
taxonomy
.
slug
]
context_data
=
tab
.
get_context_data
(
tab_instance
,
request
,
categories
=
categories
)
actions
=
context_data
[
'
actions
'
][
0
]
assert
actions
[
'
label
'
]
==
'
Actions
'
assert
'
remove-question-type
'
in
actions
[
'
items
'
]
@pytest.mark.django_db
def
test_actions_includes_remove_question_type_option
():
page
=
TabbedPageFactory
()
tab_instance
=
TabInstanceFactory
(
page
=
page
)
request
=
Mock
(
GET
=
{})
tab
=
ViewAndEditTableTab
()
term
=
TermFactory
()
categories
=
[
term
.
taxonomy
.
slug
]
context_data
=
tab
.
get_context_data
(
tab_instance
,
request
,
categories
=
categories
)
actions
=
context_data
[
'
actions
'
][
0
]
assert
actions
[
'
label
'
]
==
'
Actions
'
assert
'
remove-question-type
'
in
actions
[
'
items
'
]
@pytest.mark.django_db
def
test_upload_form_source_read_from_settings
():
page
=
TabbedPageFactory
()
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment