From 14831d067d7e1ec8fbeb69d0a44522b6a64cec66 Mon Sep 17 00:00:00 2001 From: Junwei Zhao Date: Wed, 2 Oct 2024 19:46:03 +1000 Subject: [PATCH] Update logic to handle - and _ between words --- .gitignore | 2 ++ data/db.sqlite3 | Bin 167936 -> 167936 bytes links/__pycache__/views.cpython-312.pyc | Bin 17019 -> 0 bytes links/templates/links/link_form.html | 13 +++++++++++++ links/views.py | 9 ++++++--- locale/zh_Hans/LC_MESSAGES/django.mo | Bin 3547 -> 3750 bytes locale/zh_Hans/LC_MESSAGES/django.po | 10 ++++++++++ 7 files changed, 31 insertions(+), 3 deletions(-) delete mode 100644 links/__pycache__/views.cpython-312.pyc diff --git a/.gitignore b/.gitignore index c37e91a..a83cc85 100644 --- a/.gitignore +++ b/.gitignore @@ -69,3 +69,5 @@ coverage.xml /static/css/dist/ node_modules/ /data + +**/__pycache__ diff --git a/data/db.sqlite3 b/data/db.sqlite3 index 1d31f3db443228d0a7b017fa87c75edf5bb9b3e2..b7fc6bd0b7e1d487308072e3ece6242f8821801d 100644 GIT binary patch delta 341 zcmZozz}2vTYl1Z6)rm6Bj8``%i0U))H<#&eFVko2yP(9+C&<8mpMM|!T>cvVXnrex zNxmO^*ZH>bP30@$3+6N86Wpw*@S4|2o}Y!mkGb1A_KZs=J+rC+z$xncd{})3KSJrfP1Eyp)-n+b4xw5tw7%=_f zr&>jsAQveU&555nb4}1?> z4>}JS4)_k&4z>=J4s;Gvvmqcc4!2Vd0)^59tr%54pD< z5CVx0k)RN_vmXLZ5C#AM0E`NCmj^HcV+IfU4c!gZw{S25`U#Ox3%7MT0)+(-1p^NO zX9EonRsbUbp#Tr6w+cW4HV>CTF9HM>IUq1JIyEsmGcqnTGc+(UIRgLy092P+F9MPj bEigGCFf}?gH##vhE;KPXG&eZ~rceSvFfTpt diff --git a/links/__pycache__/views.cpython-312.pyc b/links/__pycache__/views.cpython-312.pyc deleted file mode 100644 index 8fe5b6d72e00970237c666fa614357c432b586c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17019 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 OF1ll-(M@~EQ~f`K2tT#} diff --git a/links/templates/links/link_form.html b/links/templates/links/link_form.html index 43316b4..1010cda 100644 --- a/links/templates/links/link_form.html +++ b/links/templates/links/link_form.html @@ -42,6 +42,19 @@ +

{% trans "Note:" %}

+
+

+ {% trans "Please note that special characters are not allowed in the alias when creating or updating a link." %} +
+ {% trans "For example:" %} +

    +
  • {% trans "Valid alias: helloworld" %}
  • +
  • {% trans "Invalid alias: hello@world!" %}
  • +
  • {% trans "Accessing 'helloworld' as: hello-world or hello_world" %}
  • +
+

+
diff --git a/links/views.py b/links/views.py index 08d70ad..ee0347a 100644 --- a/links/views.py +++ b/links/views.py @@ -118,15 +118,18 @@ def delete_selected(request): return redirect('link_list') def redirect_to_original(request, alias): + # 移除别名中的特殊字符 + processed_alias = ''.join(e for e in alias if e.isalnum()) + try: - link = Link.objects.get(alias=alias) + link = Link.objects.get(alias=processed_alias) link.click_count = F('click_count') + 1 link.save() ClickLog.objects.create(link=link) # 记录点击 return redirect(link.original_url) except Link.DoesNotExist: - messages.warning(request, _("The alias '{}' doesn't exist. Do you want to create a new one?").format(alias)) - return redirect(reverse('link_create') + f'?alias={alias}') + messages.warning(request, _("The alias '{}' doesn't exist. Do you want to create a new one?").format(processed_alias)) + return redirect(reverse('link_create') + f'?alias={processed_alias}') class LinkDetailView(DetailView): model = Link diff --git a/locale/zh_Hans/LC_MESSAGES/django.mo b/locale/zh_Hans/LC_MESSAGES/django.mo index d53930d32a25365a3f024a54d0677fb29793c248..6ab5e8515f7ac932f2e56e76975838f9169cab4d 100644 GIT binary patch delta 1341 zcmYk+OGs2v9LMpaj#IwUvX`29%hIy6mnHUsC`k&lBHBdAG>l}(m^!rx!lDF6Pz%Xg z7!;uuY6b%}G1a2SBB*E|717LSP>aM((4y~eIzGZV-XMKU{eWu!&F0hSBTwNi^g>Oz7SCWU z%_0x@Nf8FNe zSk3t685ipC7plYLnTe$_*;r1VkDIU-S7HZN<6T^ZUvLZCmd)F1;JvJ?`Zql+#^ zBGzl@RklX^x1qnrRb1NK2dO;CNg70Z)_PX+P=nHhG#I?{QC?#~bjqwO521 zU0ah~bw2;8{+sR{sry<2zRjV}?%63dU;CfNdxv6OBe6?8(ePL_+%tLMNh~}Z9}GI> zPP}Vi@?59W;6x)svA*tD=YwcuAR39pFZN9YAI0x=$HuNsj1Gr>q~#~OC;J9tJy-hE UGdHJAjz5ft?(kG-XXdq}-@wnJC;$Ke delta 1138 zcmX}r%}Z2K7{~E5ZmzszD=6dXl4p(redfIi!|B@)~Z0GRU2`87gB^mo1qtU zRf4#1H|Q$=gV2IRP!MzxNQ?I#Z_Tt{6u78J7)^|&E+HeKC z@h7G+R+O9Ag{|bTu#d;Hgj#r)UF(kyQ2B36;a|Lp71UYdcTm?2nh(uM^i=w38<<5+ zm_v=vTfS(1M*Y#ME$@}*Tg-$;Lt8OLA~AQ z*n^F1S0#Od1L$ELZX!>_Z(RDnwbJ91|Gc>ecZJY=|3$T=n diff --git a/locale/zh_Hans/LC_MESSAGES/django.po b/locale/zh_Hans/LC_MESSAGES/django.po index 8cf3054..27e1ea7 100644 --- a/locale/zh_Hans/LC_MESSAGES/django.po +++ b/locale/zh_Hans/LC_MESSAGES/django.po @@ -168,3 +168,13 @@ msgstr "热门链接" msgid "No popular links available" msgstr "暂无热门链接" + +msgid "Note:" +msgstr "请注意" + +msgid "Menu" +msgstr "菜单" + + +msgid "Alias cannot contain special characters." +msgstr "链接别名中不能带有 - 或者 _ 以及其他任意特殊字符"