From f37de859617a8f9cf8f4edb50809430e0c443844 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Barrag=C3=A1n=20Merino?= Date: Wed, 10 Dec 2014 20:39:12 +0100 Subject: [PATCH 1/2] Remove unnecesary code --- taiga/mdrender/service.py | 4 ---- 1 file changed, 4 deletions(-) diff --git a/taiga/mdrender/service.py b/taiga/mdrender/service.py index 9c7990b5..70d236a5 100644 --- a/taiga/mdrender/service.py +++ b/taiga/mdrender/service.py @@ -36,7 +36,6 @@ bleach._serialize = _serialize from django.core.cache import cache from django.utils.encoding import force_bytes -from django.template.defaultfilters import slugify from markdown import Markdown @@ -101,9 +100,6 @@ def cache_by_sha(func): def _get_markdown(project): - def build_url(*args, **kwargs): - return args[1] + slugify(args[0]) - extensions = _make_extensions_list(project=project) md = Markdown(extensions=extensions) md.extracted_data = {"mentions": [], "references": []} From ce88a6007355008973d81cd5da52dfa30d53730c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Barrag=C3=A1n=20Merino?= Date: Wed, 10 Dec 2014 21:02:43 +0100 Subject: [PATCH 2/2] tg-1783 #ready-for-test - Fix wiki links compatibility --- taiga/base/utils/slug.py | 13 ++++++++++--- taiga/mdrender/extensions/wikilinks.py | 3 ++- tests/unit/test_mdrender.py | 11 +++++++++++ tests/unit/test_slug.py | 14 ++++++++++++++ 4 files changed, 37 insertions(+), 4 deletions(-) diff --git a/taiga/base/utils/slug.py b/taiga/base/utils/slug.py index 576ecfa3..d017664a 100644 --- a/taiga/base/utils/slug.py +++ b/taiga/base/utils/slug.py @@ -15,20 +15,27 @@ # along with this program. If not, see . from django.utils import baseconv -from django.template.defaultfilters import slugify +from django.template.defaultfilters import slugify as django_slugify import time from unidecode import unidecode +def slugify(value): + """ + Return a slug + """ + return django_slugify(unidecode(value or "")) + + def slugify_uniquely(value, model, slugfield="slug"): """ Returns a slug on a name which is unique within a model's table """ suffix = 0 - potential = base = slugify(unidecode(value)) + potential = base = django_slugify(unidecode(value)) if len(potential) == 0: potential = 'null' while True: @@ -45,7 +52,7 @@ def slugify_uniquely_for_queryset(value, queryset, slugfield="slug"): """ suffix = 0 - potential = base = slugify(unidecode(value)) + potential = base = django_slugify(unidecode(value)) if len(potential) == 0: potential = 'null' while True: diff --git a/taiga/mdrender/extensions/wikilinks.py b/taiga/mdrender/extensions/wikilinks.py index 9eedbbcf..b603e1cf 100644 --- a/taiga/mdrender/extensions/wikilinks.py +++ b/taiga/mdrender/extensions/wikilinks.py @@ -22,6 +22,7 @@ from markdown.treeprocessors import Treeprocessor from markdown.util import etree from taiga.front import resolve +from taiga.base.utils.slug import slugify import re @@ -48,7 +49,7 @@ class WikiLinksPattern(Pattern): def handleMatch(self, m): label = m.group(2).strip() - url = resolve("wiki", self.project.slug, label) + url = resolve("wiki", self.project.slug, slugify(label)) if m.group(3): title = m.group(3).strip()[1:] diff --git a/tests/unit/test_mdrender.py b/tests/unit/test_mdrender.py index a31b749c..6e7002e0 100644 --- a/tests/unit/test_mdrender.py +++ b/tests/unit/test_mdrender.py @@ -101,6 +101,17 @@ def test_render_wikilink(): expected_result = "

test

" assert render(dummy_project, "[[test]]") == expected_result +def test_render_wikilink_1(): + expected_result = "

test

" + assert render(dummy_project, "[[test]]") == expected_result + +def test_render_wikilink_2(): + expected_result = "

test page

" + assert render(dummy_project, "[[test page]]") == expected_result + +def test_render_wikilink_3(): + expected_result = "

TestPage

" + assert render(dummy_project, "[[TestPage]]") == expected_result def test_render_wikilink_with_custom_title(): expected_result = "

custom

" diff --git a/tests/unit/test_slug.py b/tests/unit/test_slug.py index ea7dd17d..deb1961b 100644 --- a/tests/unit/test_slug.py +++ b/tests/unit/test_slug.py @@ -18,10 +18,24 @@ from taiga.projects.models import Project from taiga.users.models import User +from taiga.base.utils.slug import slugify + import pytest pytestmark = pytest.mark.django_db +def test_slugify_1(): + assert slugify("漢字") == "han-zi" + + +def test_slugify_2(): + assert slugify("TestExamplePage") == "testexamplepage" + + +def test_slugify_3(): + assert slugify(None) == "" + + def test_project_slug_with_special_chars(): user = User.objects.create(username="test") project = Project.objects.create(name="漢字", description="漢字", owner=user)