summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
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
commitc61520fad84979cd1f8bb575553c15f60f9e9381 (patch)
treeb2da706ec9b29a840f022cfcabb149020cc97d67
parent0eedafc38f11d5e3ba0cca2a36876035a84235e5 (diff)
downloadIshtar-c61520fad84979cd1f8bb575553c15f60f9e9381.tar.bz2
Ishtar-c61520fad84979cd1f8bb575553c15f60f9e9381.zip
splitpart filer: add a merge_end option
-rw-r--r--docs/fr/source/annexe-tech-4-jinja-filters.rst5
-rw-r--r--ishtar_common/tests.py2
-rw-r--r--ishtar_common/utils_secretary.py8
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):