Skip to content

Commit 04941ad

Browse files
authored
Merge pull request #289 from DanielRiera/master
Mention configuration
2 parents 2f0ff9a + 209701e commit 04941ad

2 files changed

Lines changed: 48 additions & 20 deletions

File tree

martor/tests/tests.py

Lines changed: 27 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,15 @@
77
from django.urls import clear_url_caches, resolve, reverse
88

99
from martor.utils import markdownify
10-
from martor.views import markdown_imgur_uploader, markdown_search_user, markdownfy_view
1110

1211

1312
class SimpleTest(TestCase):
1413
def _on_settings_changed(self, sender, **kwargs):
1514
# Reload settings.py and urls.py when @override_settings is called
1615
clear_url_caches()
1716
reload(sys.modules["martor.settings"])
17+
if "martor.views" in sys.modules:
18+
reload(sys.modules["martor.views"])
1819
reload(sys.modules["martor.urls"])
1920
reload(sys.modules["martor.tests.urls"])
2021

@@ -135,20 +136,42 @@ def test_markdownify_xss_handled(self):
135136
'<p><a href="&quot; onmouseover=alert(document.domain)">xss</a>)</p>', # noqa: E501
136137
)
137138

139+
@override_settings(
140+
MARTOR_ENABLE_CONFIGS={
141+
"mention": "false",
142+
}
143+
)
144+
def test_search_user_mention_disabled(self):
145+
response = self.client.get(reverse("search_user_json") + "?username=user")
146+
self.assertEqual(response.status_code, 200)
147+
self.assertEqual(response.json()["status"], 403)
148+
self.assertEqual(response.json()["error"], "This feature is disabled, check the documentation")
149+
150+
@override_settings(
151+
MARTOR_ENABLE_CONFIGS={
152+
"mention": "true",
153+
}
154+
)
155+
def test_search_user_mention_enabled(self):
156+
response = self.client.get(reverse("search_user_json") + "?username=user1")
157+
self.assertEqual(response.status_code, 200)
158+
self.assertEqual(response.json()["status"], 200)
159+
self.assertEqual(response.json()["data"], ["user1"])
160+
138161
def test_urls(self):
139162
with override_settings(
140163
MARTOR_MARKDOWNIFY_URL="test/url",
141164
MARTOR_UPLOAD_URL="test/upload",
142165
MARTOR_SEARCH_USERS_URL="test/search",
143166
):
144167
found = resolve(reverse("martor_markdownfy"))
145-
self.assertEqual(found.func, markdownfy_view)
168+
self.assertEqual(found.func.__name__, "markdownfy_view")
146169

147170
found = resolve(reverse("imgur_uploader"))
148-
self.assertEqual(found.func, markdown_imgur_uploader)
171+
self.assertEqual(found.func.__name__, "markdown_imgur_uploader")
149172

150173
found = resolve(reverse("search_user_json"))
151-
self.assertEqual(found.func, markdown_search_user)
174+
self.assertEqual(found.func.__name__, "markdown_search_user")
152175

153176

154177
class MarkdownifyTest(TestCase):

martor/views.py

Lines changed: 21 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
from django.utils.translation import gettext_lazy as _
66

77
from .api import imgur_uploader
8-
from .settings import MARTOR_MARKDOWNIFY_FUNCTION
8+
from .settings import MARTOR_ENABLE_CONFIGS, MARTOR_MARKDOWNIFY_FUNCTION
99
from .utils import LazyEncoder
1010

1111
User = get_user_model()
@@ -59,22 +59,27 @@ def markdown_search_user(request):
5959
{'usernane': 'albert'}]
6060
}
6161
"""
62+
6263
response_data = {}
63-
username = request.GET.get("username")
64-
65-
if username is not None and username != "" and " " not in username:
66-
queries = {"%s__icontains" % User.USERNAME_FIELD: username}
67-
users = User.objects.filter(**queries).filter(is_active=True)
68-
if users.exists():
69-
usernames = list(users.values_list("username", flat=True))
70-
response_data.update({"status": 200, "data": usernames})
71-
return JsonResponse(response_data)
72-
73-
error_message = _("No users registered as `%(username)s` " "or user is unactived.")
74-
error_message = error_message % {"username": username}
75-
response_data.update({"status": 204, "error": error_message})
64+
65+
if MARTOR_ENABLE_CONFIGS.get("mention") == "false":
66+
response_data.update({"status": 403, "error": _("This feature is disabled, check the documentation")})
7667
else:
77-
error_message = _("Validation Failed for field `username`")
78-
response_data.update({"status": 204, "error": error_message})
68+
username = request.GET.get("username")
69+
70+
if username is not None and username != "" and " " not in username:
71+
queries = {"%s__icontains" % User.USERNAME_FIELD: username}
72+
users = User.objects.filter(**queries).filter(is_active=True)
73+
if users.exists():
74+
usernames = list(users.values_list("username", flat=True))
75+
response_data.update({"status": 200, "data": usernames})
76+
return JsonResponse(response_data)
77+
78+
error_message = _("No users registered as `%(username)s` " "or user is unactived.")
79+
error_message = error_message % {"username": username}
80+
response_data.update({"status": 204, "error": error_message})
81+
else:
82+
error_message = _("Validation Failed for field `username`")
83+
response_data.update({"status": 204, "error": error_message})
7984

8085
return JsonResponse(response_data, encoder=LazyEncoder)

0 commit comments

Comments
 (0)