From d07fcceefec92f1aca5d2249e6e51793227abc58 Mon Sep 17 00:00:00 2001 From: Junwei Zhao Date: Wed, 2 Oct 2024 19:27:10 +1000 Subject: [PATCH] Update logic of creating and updating links and do not allow any special characters --- .gitignore | 1 + data/db.sqlite3 | Bin 167936 -> 167936 bytes links/__pycache__/views.cpython-312.pyc | Bin 16424 -> 17019 bytes links/views.py | 25 ++++++++++++++++++------ 4 files changed, 20 insertions(+), 6 deletions(-) diff --git a/.gitignore b/.gitignore index 8691934..c37e91a 100644 --- a/.gitignore +++ b/.gitignore @@ -63,6 +63,7 @@ coverage.xml .python-version 3.12/lib/python3.12/site-packages/ +3.12/include # Tailwind CSS /static/css/dist/ diff --git a/data/db.sqlite3 b/data/db.sqlite3 index cb3d1b83c06136b5b3f4b2dad2e5d8812355866d..1d31f3db443228d0a7b017fa87c75edf5bb9b3e2 100644 GIT binary patch delta 171 zcmZozz}2vTYl1Z6g^4oGj2AX0FzPe*H7Dt}C+RazPts>v#N5MGI-T8sDVvF_bbFBj z6C;-ZKeHlJMruw@etCXTP6|Wc_EsyVdQ)ae*0$;F1x$uatZkbe1$KR&^SQ;4sp@}XQ88gG}PfD3&qyTkfEu#Pc delta 77 zcmV-T0J8sppbCJX3XmHC&ygHM0nf2u0WSfKgJLg-VlM%gVlM)s1B(iUmj^HcYqxYT j0s#t<0^`!)>;m7V;E$2;sP8T6F&&AZ`|MqEOowyU-` zbY#iEv{gfa)i+#gM!b2$-oT(Y(6@HT8ys*2zxMdLS_VDEeSx8%r)f%KgBC z$Z;sA!E>twupa`snJ`jNxVet&C$;^=OxF!L5^Zkkw^;|WB5RaTFR`O*M|b;x({F7?a4o` z=Z(5~zWg`0jW1%of@oFTyh7Cu)t1%CH4>;h=ft{Wwn=3yE0pp7i*EUYvikR;qtD~! zHy|{CVF!q!*pZ5n$}Ug#S7LVQCd7Zu!sgcc;5dr)|=%3vRb(<=wheNNRV-q5^ zCbS~!^?sz{tWvt^u*%smc|EQ*8T2vGn!Kf>bI=LPn&KRiBbEL}%c4=&A}Vdh!4|}m z0K)-*Baa_iVW)f|*~G5<))OnqfkL#6B32`^5ivw6^C&5pe$O@(5$oVFW?>;r!9pni z6>H$O)6NHPasca4bQ?P)6tJ&ycKfZ#oZ8tVy^ zWPJegK6s2A!g{KUlivo8+Om$I?NP)rmMB}0Z~0DwZ_^%)MK$SuPo8Dpm(3t&n5X>D z2`*<@uB4L>S%>sy<~f`Lagqgs^T;_?AG}R2u{9L|@^P}I;v_G0qeUfRCSpIUn*GP* z-6-PvaGl|mO1oLjoMTcOius7;05eUFMCe=iS&TS@=tCT2*;SPV7*YtBuEZ(sA8M{u zH{u3;jjgSEBFn0uBwC+g`>Q1K8M{y=IS!-ZeRi{I2Dy~<&wbnG{{}UWr1k>p5a*dW zUnCcjcjsRr?c+g%JY`!~cQ~wTt#H@VW9V=k@eW`aJqeVuXccPk&Znmk<0nh)H(hI0 zBF(Bs58_}d3@C{JDLvIEXF)cztwq?<>QeF^)2pZQKY;eJ+8vh zQiKUGv$o3A82husSetJACz9jwG3A$_G|~Z9M~~h07ePT0_mVFyyhz9)wyb6g*~re+ zXe+T@tv;hxKVkn^EkLodt=h9vMKLJW9FJu4j&osCOl^*6HS`Ws7Kih5Nzohiqa3_O RXXTI}%J3SkWai@9zX5hIG1dS8 delta 1726 zcmYk6eQZ-z6u|F&?d#T0=32I{veItdSX(*_tPI#hHkl@x%$SiF2-ubN4GLw|`zo8d zu@Qs-Lfkyamj*Ty*pQK6N=70`oc@Jk0uny*K!V0Ult>&%GL%F;=T$y#@_zT6bI-XS z=ic)kyvIlSxZ^v!-NLXLkKJnTtoqzB%fT1GLPu?W7hh&=VL@Ydr(-jhf;Q-Pd*F}4 z2vj=Dc_myco^F{m%5w1pLqM0)#}{MVbC#_PBW)Nd!>`U6O?f!C0lz;@oUxDi9%g14 zT2F7=Oxs;|hwc^36Sd@LB%{U^ zO>R#rsf1=ygh&fjD6qoj;VZ#D)!X|jI;xb2`+aOeGMU5Io$i6!3(ktc#6@TLye)kH z`V{Y7W;BPd`pbsBL*6U?=mmfDvcGn~-Y@sBzgAk_-*nwIZBO$+^I*+z{ZRe!rsK7j zT=jPh%o~_6u(Ej*CgyTqaRx3p1A|L0IzyLip$8LYobhkUIBqdZZEKZ8ES?E+&6tR16tNX<`d;E0 z2>V<4PT1jp&Gat1s;6Pl<_2E&yJa(~g0LPY%fftfw!HkT#5ck1itQ$P4Pra=RJNKA zlDHZHzf_jVpP{fVYn^dUvhJmUeT4n+b8vxMk9i7p&DfFdP=ZqK4o09R6tNycySfz7 z$Ka)zP$xp(eNPuUv-$q8| zf(_(RO_)V^AGXZ-tMF|SXaJ7M4v{Qq8EM2Zp2btO_{}6Ar_zXpnyeuDLVCw0YUFte{A~Q2+D#OgS`!<{5Fg=#N1Y1+`sG| T!|tBP$wMS#cP|8y#^(P3w=1~7 diff --git a/links/views.py b/links/views.py index 137b2f1..08d70ad 100644 --- a/links/views.py +++ b/links/views.py @@ -72,6 +72,17 @@ class LinkCreateView(CreateView): initial['alias'] = alias return initial + def form_valid(self, form): + alias = form.cleaned_data.get('alias') + if not self.is_valid_alias(alias): + form.add_error('alias', _("Alias cannot contain special characters.")) + return self.form_invalid(form) + return super().form_valid(form) + + def is_valid_alias(self, alias): + # 检查别名是否包含特殊字符 + return alias.isalnum() # 只允许字母和数字 + class LinkUpdateView(UpdateView): model = Link form_class = LinkForm @@ -79,13 +90,15 @@ class LinkUpdateView(UpdateView): success_url = reverse_lazy('link_list') def form_valid(self, form): - try: - return super().form_valid(form) - except ValidationError as e: - for field, errors in e.message_dict.items(): - for error in errors: - messages.error(self.request, f"{error}") + alias = form.cleaned_data.get('alias') + if not self.is_valid_alias(alias): + form.add_error('alias', _("Alias cannot contain special characters.")) return self.form_invalid(form) + return super().form_valid(form) + + def is_valid_alias(self, alias): + # 检查别名是否包含特殊字符 + return alias.isalnum() # 只允许字母和数字 def form_invalid(self, form): for field, errors in form.errors.items():