diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2021-02-23 17:20:19 +0100 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2021-02-28 12:15:25 +0100 |
commit | c61520fad84979cd1f8bb575553c15f60f9e9381 (patch) | |
tree | b2da706ec9b29a840f022cfcabb149020cc97d67 | |
parent | 0eedafc38f11d5e3ba0cca2a36876035a84235e5 (diff) | |
download | Ishtar-c61520fad84979cd1f8bb575553c15f60f9e9381.tar.bz2 Ishtar-c61520fad84979cd1f8bb575553c15f60f9e9381.zip |
splitpart filer: add a merge_end option
-rw-r--r-- | docs/fr/source/annexe-tech-4-jinja-filters.rst | 5 | ||||
-rw-r--r-- | ishtar_common/tests.py | 2 | ||||
-rw-r--r-- | ishtar_common/utils_secretary.py | 8 |
3 files changed, 11 insertions, 4 deletions
diff --git a/docs/fr/source/annexe-tech-4-jinja-filters.rst b/docs/fr/source/annexe-tech-4-jinja-filters.rst index dd6fe329d..aca06fa10 100644 --- a/docs/fr/source/annexe-tech-4-jinja-filters.rst +++ b/docs/fr/source/annexe-tech-4-jinja-filters.rst @@ -75,9 +75,12 @@ caractères en prenant en compte un séparateur. Par exemple depuis la chaîne `2,3,10`, accéder au troisième élément : `10`. Ce filtre nécessite au minimum un argument : le numéro de l'élément souhaité (en commençant le compte à 0). Par défaut le séparateur `,` est utilisé si l'on souhaite un autre -séparateur, on spécifie celui-ci en second argument. +séparateur, on spécifie celui-ci en second argument. On peut associer un +dernier argument qui permet de renvoyer le reste de la chaîne concaténée, +il suffit de mettre cet argument à True. - `{{"9,2,10"|splitpart(1)}}` -> `2` - `{{"chaise;bureau;papier;paragraphe"|splitpart(0, ";")}}` -> `chaise` - `{{"182025_C001"|splitpart(1, "_")}}` -> `C001` + - `{{"chaise;bureau;papier;paragraphe"|splitpart(2, ";", True)}}` -> `papier;paragraphe` diff --git a/ishtar_common/tests.py b/ishtar_common/tests.py index b5de13fe1..20f87b3bc 100644 --- a/ishtar_common/tests.py +++ b/ishtar_common/tests.py @@ -2882,6 +2882,8 @@ class JinjaFilterTest(TestCase): self.assertEqual(utils_secretary.splitpart("1,2,3", 10), "") self.assertEqual(utils_secretary.splitpart("", 10), "") self.assertEqual(utils_secretary.splitpart("1;2;3", 2, ";"), "3") + self.assertEqual(utils_secretary.splitpart( + "1;2;3;4", 1, ";", True), "2;3;4") def test_human_date(self): self.assertEqual(utils_secretary.human_date_filter("NODATE"), "") diff --git a/ishtar_common/utils_secretary.py b/ishtar_common/utils_secretary.py index ce93158f5..b3f55de4f 100644 --- a/ishtar_common/utils_secretary.py +++ b/ishtar_common/utils_secretary.py @@ -72,13 +72,15 @@ def human_date_filter(value): return value.strftime(settings.DATE_FORMAT) -def splitpart(value, index, char=','): +def splitpart(value, index, char=',', merge_end=False): if not value or not index: return "" splited = value.split(char) - if len(splited) > index: + if len(splited) <= index: + return "" + if not merge_end: return splited[index] - return "" + return char.join(splited[index:]) class IshtarSecretaryRenderer(Renderer): |