Skip to content

Commit

Permalink
documents: fix abstracts sort
Browse files Browse the repository at this point in the history
The languages of the abstracts that are not in the preferred
sorting languages are added at the end of the list and sorted
alphabetically by language code.

* Fixes Sentry SONAR-EA.

Co-Authored-by: Bertrand Zuchuat <[email protected]>
  • Loading branch information
Garfield-fr committed Mar 28, 2022
1 parent ede7164 commit 805bbe3
Show file tree
Hide file tree
Showing 2 changed files with 47 additions and 3 deletions.
19 changes: 16 additions & 3 deletions sonar/modules/documents/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -247,9 +247,22 @@ def abstracts(record):
current_i18n.locale.language)
preferred_languages = get_preferred_languages(language)

return sorted(
record['abstracts'],
key=lambda abstract: preferred_languages.index(abstract['language']))
abstractLanguage = []
abstractCode = []
for abstract in record['abstracts']:
if abstract['language'] in preferred_languages:
abstractLanguage.append(abstract)
else:
abstractCode.append(abstract)
abstractSortedLanguage = sorted(
abstractLanguage,
key=lambda abstract: preferred_languages.index(abstract['language'])
)
abstractSortedCode = sorted(
abstractCode,
key=lambda abstract: abstract['language']
)
return abstractSortedLanguage + abstractSortedCode


@blueprint.app_template_filter()
Expand Down
31 changes: 31 additions & 0 deletions tests/ui/documents/test_documents_views.py
Original file line number Diff line number Diff line change
Expand Up @@ -293,6 +293,37 @@ def test_abstracts(app):
# No abstract
assert views.abstracts({}) == []

# Abstract with not defined key on preferred languages
abstracts = [{
'language': 'fre',
'value': 'Résumé'
}, {
'language': 'eng',
'value': 'Summary'
}, {
'language': 'roh',
'value': 'Romancio'
}]
abstracts_sort = views.abstracts({'abstracts': abstracts})
assert ['eng', 'fre', 'roh'] == [abs['language'] for abs in abstracts_sort]

abstracts = [{
'language': 'fre',
'value': 'Résumé'
}, {
'language': 'roh',
'value': 'Romancio'
}, {
'language': 'eng',
'value': 'Summary'
}, {
'language': 'kin',
'value': 'kin Summary'
}]
abstracts_sort = views.abstracts({'abstracts': abstracts})
assert ['eng', 'fre', 'kin', 'roh'] == [
abs['language'] for abs in abstracts_sort]


def test_contributors():
"""Test ordering and filtering contributors."""
Expand Down

0 comments on commit 805bbe3

Please sign in to comment.