diff --git a/boards/config/default_settings.ini b/boards/config/default_settings.ini --- a/boards/config/default_settings.ini +++ b/boards/config/default_settings.ini @@ -17,7 +17,7 @@ PowDifficulty = 0 PostingDelay = 30 Autoban = false DefaultTag = test -MaxFileCount = 1 +MaxFileCount = 5 AdditionalSpoilerSpaces = false [Messages] diff --git a/boards/forms/__init__.py b/boards/forms/__init__.py --- a/boards/forms/__init__.py +++ b/boards/forms/__init__.py @@ -320,14 +320,19 @@ class PostForm(NeboardForm): raise forms.ValidationError( ungettext_lazy(ERROR_MANY_FILES, ERROR_MANY_FILES, max_file_count) % {'files': max_file_count}) + + size = 0 for file_input in inputs: if isinstance(file_input, UploadedFile): - files.append(self._clean_file_file(file_input)) + file = self._clean_file_file(file_input) + size += file.size + files.append(file) else: files.append(self._clean_file_url(file_input)) for file in files: self._validate_image_dimensions(file) + validate_file_size(size) return files @@ -342,7 +347,6 @@ class PostForm(NeboardForm): raise forms.ValidationError('Possible decompression bomb or large image.') def _clean_file_file(self, file): - validate_file_size(file.size) self._update_file_extension(file) return file @@ -367,8 +371,6 @@ class PostForm(NeboardForm): file = self._get_file_from_url(url) if not file: raise forms.ValidationError(_('Invalid URL')) - else: - validate_file_size(file.size) self._update_file_extension(file) except forms.ValidationError as e: # Assume we will get the plain URL instead of a file and save it diff --git a/boards/locale/ru/LC_MESSAGES/django.mo b/boards/locale/ru/LC_MESSAGES/django.mo index a45de664f5ac2ab4d832955c4b4ebccafcca3859..41e817662099d78fe951c2cc7ed0fbc0bcb851db GIT binary patch literal 14227 zc$~#q4RBo5b-qbRLL9)BWnol`xx$uh8SPqSKT{fL8!+0o)F#0X@KVfTsa(0Xz@52k;kw%KfGYs+2V4p00)80q7~sbN zp9H*|=m35c@KwOofUg672=I>p@lSmZe?9{E79g?smxkU?0apS3n^}JaHm?D^a=Fmo zxLoMpuw3SM0M-HCxm?yguw3}e0yY4C4)C`CUs*2l&zbpe8+vap7rEau^Z&kF`1-Yh zA6X&zm#;8{+<=W#}HsW;8QC^-(Lq@1Nfa4qK|jX z`hQ#@eEr(Yf4oM%H`R#T?KOhG6L1+|zxlquM)pb62>r1d@q=-L_k9EZyhil#j-mUj z8qxnUDE}(JRV#(>&`QDI2G|I=8*l?)a;50yxs|f+Yb%AX*8o2VIJHvbpD}m~fWsuG z84uM8-L_iMv=He_vfE`(0fp`){g~_}Xl~?6-@h{R zmtHCMxZ+BQ=XSuqC4B*ICjVP4^p63y0X_kE8_BU+?DWgkhTdw~=hCZ0o(8}Him$7L z&!?`E{l9mW$n}AGk^jJ;E6z&SveM*Y;_|HrkG7qu36la~2jEp{E!l9$G`=w%Xc7vP@&-b!|Fko|ia zM2`C#B)>e|Aa*|8Ab$Infj>6z?;6A(f6*X(efT>0ZUI~ixZQk5uM<6`uakYg0C)r7 zOMo{4{t$2@;ALxtpRIshfSI+z_u^WK-*?uUd=A(_e6JIG_X0MNp4JKe3+p6~7S>4~ z%dZo9{{(mk*$GPj1lhS!^l_n4^!0;A@%NuK%KG~CB1Z@?40zXip*Ol-^69JVh0Y%W zhRBZVg}&_?NRm^pV^k`#uWT5C40{eE(#l$nh^5#r_RV;vbPF@s|gh zWIoX(e)fEm*lW?uzuhGI{hKDqKmXb!``2v}yyi`^&+biPzfYO(1Dk~JkxjDiDZo#I zuh%w7-M*w*?9|^Z{GV(V`M%mL>%P@2^uJ@~f7~p3`gyb1qb4MLw1;HBo{;SSKuGj^ z(0q>pJ_-1u`Cc0qJBPy(2dS{+i)X^pZ+rzX1Ni;0`2CK}LjOL%Pm-QCOI|(?_%`GT zA-P5IeQBHMD-L*&DQ{tEOqdG!4reBE-{2%!@<&w|fIie(gQEvDw zo=+*U3&d1g18XP;Qm^Xb848S3tvRj4cJ$kir&UQVrXT6}8uLzhoqYF8N_^}EGhSoh zh=F8>XU+TXD5;m72!zoGEVfMoz^KUdQcyBGQ&W0Je{->wzlH5WJKFX94`a@ zlOXPC_iz$2436O2%?x8{Cher6Zp;p=juNFrR7VWLT0@?^xcY!~$W1#Ln+KeX<0h?m zL4_T$gp*Vq@xVyh)+26Kd)c(TU3FwL!)_X*hb$*<4aRNeAr?zR6E-&6VI}EdHe+_& z&e-$`Ueyjaj_vIu8Fl-xl^nA50SBu+H=B;y7_uSx0XMBy+zd{P)6428?-XCzO?T2D2GxDVvOuf`)Ci)74OyjzN2I7gpNW*9}zj zRd`|MqXmw#N#~)gorHiz3=BI-&rWBwEYPS=M z*-18egg$K5MV_n=IZz-k?@C%J&`YHq(ra|sN+Xc4p4^g_g{xwe&y+YWxho;CUPvk0 zO={0hVKGqS4pdl}_SM#vJY>b4nC^A&2^T&{X#d?R_fZgn)w?p7jfy{YTTo^;6~itO zt-77$L2`3T+@l-ja*{(~v@+dpG^nf|>xdX5nN18r21Hfk#)NfbKMi_K;FT~kE_O1$ z>O5=<7QHcoiGQ8K`j|Dc`LJyt+?;Tenc;})fvO=nc*kqfjSi>Xgst|#(AvuAxJ_KU zNszUpgcQcq;X>5yA#X`hw%OyBr8%&Kt->@hTr@R*OUmL`65f-f5!NPx;D?YTE&DbQ zmQV5`c(h1dX9kNxwO*IA}lL5P)>K}Fw ztA6qw_W+oWIaWmVA9PYFI6|>9q-le&CQbT|j@>+)3P7A^9kOiYg*0{XrEouXWGaHi zx{^ZbMjE16CA$y0RvP)JKLtOHV4GAbhE2qqjF)551(~$!M`+j*x_Hevq&moJazZb1 zg8xCIY3HB~_T22yu*7YDcF>C=N!tOv(wM}9hgj|(NoK4gY5*A(k4{)g*pF+%02MU) zQ%I%o8mgvJ6+I**(#e2Hx@>rg-L(Bs*5QmxQ~XCL48wE?N{?zZ>Q|!|$a;e28D@sT z0scDTU??U~C{-1XA(<#ii&2nslkgreDOt)CZsax;TPjo*90?pbFwnyYIlN`!=I{IA zj`6%q9 zh5mzVi7LtXgajK5+sS6$P`pU`n<6P+Sw(8J)}!9XC)z9?;-^5S>7)qukqJy$>0UvVz5V z0Ln<(ac(FQl+CQzAuAcB?u3?v)xMO%0?~rHn@Y7+Xt8{8BI;f=ViddysV(F+G(;{& z%7q^ab&+hNRI(V$|Nb$(B5Ed$1c5?T@Bj(~GEqvBtv`+&l8t9raAq>CyL$b$5Y9_E z9LZ^rJ3*8g6iE0kuPliHWpR6{Vz%cDC2e{+WXE0P9aYTJ2dGt&lyCC654f3PX4Qkx z9wnC)y1fDobPP7y59L>oLi-M{KrhXr0SZGIf$O{d) z5xuN;??8ylFcyV&a!b?J(z-R&+7fE{gl^jsX=}Z{WlKv75JP>ifmg)4x3i-!)U!9V zvqSIR8|mq~{=U6?I+sy*6dC}-UYt}M(Yy9_ck4YJJ)QcN&Yq60?%O(c?(FOA@4pqO z$)PL+2o2a)BBHxH_S~_LSiYsZ`?k0fcGE*eoQO_mm-Te@bQUFS4Yw>K(;^;26b})0 zm(8iT(^^~ZE4un+N!tf79HX5Ter3OQ@3opfnIq<%Pp-f`jJOu z32<7Pu%;Dj+L~@&rgUy1cDk;&g}Di_qgW9V zV17!_F5sDC(-7&o{K;~60}qp=AjUZ=Jc>$~6xloXEKC_(@+^!2!6sOFQ$%q)(U|}S zbW0f6nu#3;1K>sz9~3#0v;fp#8_4)Pn`2zq%b#2_K)MA9GRs^k${ZM+4Kk{7FO#Hf zC>kay&kM`5#EHti00qq(Hx=4!#>M;-Eat4vKL$eQL3$j-3}pzI9~1Nia#om)cPGyo z$2dfNk<2TUL2jIFd|u_wV0fBX_g62H$K+4>YCNuTUk^&gDiTgh$BXzcv)_!e@fQS{ zyx|q>ag<$f(HIc=$d8e`;CqY-=O)Sdr!-g^&%MEJdCsr~oTE_IoVeEWh56~A#!H3@ zE^jpCkCKLfwIJFNXEQuiAwxpKds&izJJagfGRDfxSHYepKuA;Nb44A#>N|wLyKi-h zehQUyo6Ce8z48%SH^d}r7Wq`Fz!>=JHTHQ z|EX3M$cI=@7vRdm%Dmx=^W_A`pk!))^YQ$N@cUg@8IiIX=VNl_1wVz8vy~26t2AC`+M5?V4I*SF4pM5`GN!&^dNW$Uc^O8}z0$VajF-tj!wiM^9 zn5&CrKldV3GRg{@sF2@YW)se_`lxD6X+KerGW_C=b9nAdL4t7;v`cGzNw@-$uH4}J zi^a&U=#Rh0-I3U|kO7F5S(a@E$<|a))Ptb+m*3V^qQoK_K4(aJa!w9(D(I!e{7XH~ z!zE1!=Rj>D`s8NTmAJyG%}fh9GyiymI9Q|!+9m%u_clC4DeVM%%Dk`y(@KAkThM6N zD1^p1foLW$L&L%;Z^QmU#h|ndpApkhi2$$MH5QUNHh)~gdy2b>Ny_hJI_^Iz_oL#5 zn1>DvNddDaE@8+5M&)1+5-3w)SQpEii7_}YX^P@_s-dt_IH`_J(lR#1bBUczxmsYO zvaNE9R2e5sdYJcJn#}T2ZWezy`HP?@$;kuCLr0~hexBn^j)M=5Zc`k2Vp0MxaA!$v z4;2&;fnj{E!GI)?V(ML#crNdS|A#w1{eQjVe`CLw0$72;0Tl4 zaaRt9Z?Z7sQjE`#$Ve~bFOr+8oPFR#Jmj|^(@T5jH^kRUy0Ac^6R9V-!FoFI;VYnQ zfU04!0im*cfx}@&+GW38JZqF-_IpfXf|i^y87I&vlbNY@%<`G0P`l1cReIUv>FLsX zUrd(V98qc-kNCar1v%OvSp^Pc8sp`-27@v%YmMK(1;T&f}?xE>$dCWgrq6!={y^3@@ z*oLdwEPt7V5yPI`(0 z+cW-IEdNF7gpP5if0Cr(3xTq`hjEh>7rBFZjgPjAEaZ7PA&-&exjFR(r({=Qs7#GB z;tuAZNI{W*vYH|!-*d4uRx@A9lw4&AI2=jZzp`Ix^KsDGZ|ea;0q;E>~t zS4Nk!1huCZKe1GadH)KM9JQHmku2M)efn&tnyI>y?a^^@xxxtaZ>!TpphrRAzXiQ})* Y|KE%ga@iqIvFDkSP~d+^s@!V*Cm^`QTL1t6 diff --git a/boards/locale/ru/LC_MESSAGES/django.po b/boards/locale/ru/LC_MESSAGES/django.po --- a/boards/locale/ru/LC_MESSAGES/django.po +++ b/boards/locale/ru/LC_MESSAGES/django.po @@ -480,8 +480,8 @@ msgstr "Ок" #: utils.py:120 #, python-format -msgid "File must be less than %s but is %s." -msgstr "Файл должен быть менее %s, но его размер %s." +msgid "Total file size must be less than %s but is %s." +msgstr "Общий размер файлов должен быть менее %s, но является %s." msgid "Please wait %(delay)d second before sending message" msgid_plural "Please wait %(delay)d seconds before sending message" @@ -493,8 +493,8 @@ msgid "New threads" msgstr "Новые темы" #, python-format -msgid "Max file size is %(size)s." -msgstr "Максимальный размер файла %(size)s." +msgid "Max total file size is %(size)s." +msgstr "Максимальный общий размер файлов %(size)s." msgid "Size of media:" msgstr "Размер медиа:" diff --git a/boards/locale/uk/LC_MESSAGES/django.mo b/boards/locale/uk/LC_MESSAGES/django.mo index a72186985b08a68c4226310cdbf5b67b242ae7ab..026e5f56978c3d848d10f752ac6d52b53fe8fbe4 GIT binary patch literal 14374 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 k(3kX#J {% trans 'Tags must be delimited by spaces. Text or image is required.' %} {% with size=max_file_size|filesizeformat %} - {% blocktrans %}Max file size is {{ size }}.{% endblocktrans %} + {% blocktrans %}Max total file size is {{ size }}.{% endblocktrans %} {% endwith %} {% blocktrans %}Max file number is {{ max_files }}.{% endblocktrans %} diff --git a/boards/templates/boards/thread_normal.html b/boards/templates/boards/thread_normal.html --- a/boards/templates/boards/thread_normal.html +++ b/boards/templates/boards/thread_normal.html @@ -60,7 +60,7 @@
{% with size=max_file_size|filesizeformat %} - {% blocktrans %}Max file size is {{ size }}.{% endblocktrans %} + {% blocktrans %}Max total file size is {{ size }}.{% endblocktrans %} {% endwith %} {% blocktrans %}Max file number is {{ max_files }}.{% endblocktrans %}
diff --git a/boards/utils.py b/boards/utils.py --- a/boards/utils.py +++ b/boards/utils.py @@ -102,7 +102,7 @@ def validate_file_size(size: int): max_size = boards.settings.get_int('Forms', 'MaxFileSize') if 0 < max_size < size: raise forms.ValidationError( - _('File must be less than %s but is %s.') + _('Total file size must be less than %s but is %s.') % (filesizeformat(max_size), filesizeformat(size)))