From 10ca515ac527b746d6a948d6aebca5d253923b64 Mon Sep 17 00:00:00 2001 From: Florian Brandes Date: Fri, 1 Apr 2022 12:26:39 +0200 Subject: [PATCH] addes tests: - barcode-39 - barcode-128 - qr barcodes - test for consumption Signed-off-by: Florian Brandes --- src/documents/tasks.py | 17 +- .../samples/barcodes/barcode-128-PATCHT.png | Bin 0 -> 836 bytes .../samples/barcodes/barcode-128-custom.pdf | Bin 0 -> 33165 bytes .../samples/barcodes/barcode-128-custom.png | Bin 0 -> 1274 bytes .../barcodes/barcode-39-PATCHT-distorsion.png | Bin 0 -> 33896 bytes .../barcode-39-PATCHT-distorsion2.png | Bin 0 -> 40381 bytes .../barcodes/barcode-39-PATCHT-unreadable.png | Bin 0 -> 9774 bytes .../samples/barcodes/barcode-39-PATCHT.png | Bin 0 -> 891 bytes .../samples/barcodes/barcode-39-custom.pdf | 243 ++++++++++++++++++ .../samples/barcodes/barcode-39-custom.png | Bin 0 -> 1357 bytes .../samples/barcodes/barcode-qr-custom.pdf | Bin 0 -> 18879 bytes .../samples/barcodes/barcode-qr-custom.png | Bin 0 -> 337 bytes .../{ => barcodes}/patch-code-t-middle.pdf | Bin .../samples/barcodes/patch-code-t-qr.pdf | Bin 0 -> 29646 bytes .../samples/{ => barcodes}/patch-code-t.pbm | Bin .../samples/{ => barcodes}/patch-code-t.pdf | Bin .../tests/samples/barcodes/qr-code-PATCHT.png | Bin 0 -> 7579 bytes src/documents/tests/test_tasks.py | 173 ++++++++++++- 18 files changed, 427 insertions(+), 6 deletions(-) create mode 100644 src/documents/tests/samples/barcodes/barcode-128-PATCHT.png create mode 100644 src/documents/tests/samples/barcodes/barcode-128-custom.pdf create mode 100644 src/documents/tests/samples/barcodes/barcode-128-custom.png create mode 100644 src/documents/tests/samples/barcodes/barcode-39-PATCHT-distorsion.png create mode 100644 src/documents/tests/samples/barcodes/barcode-39-PATCHT-distorsion2.png create mode 100644 src/documents/tests/samples/barcodes/barcode-39-PATCHT-unreadable.png create mode 100644 src/documents/tests/samples/barcodes/barcode-39-PATCHT.png create mode 100644 src/documents/tests/samples/barcodes/barcode-39-custom.pdf create mode 100644 src/documents/tests/samples/barcodes/barcode-39-custom.png create mode 100644 src/documents/tests/samples/barcodes/barcode-qr-custom.pdf create mode 100644 src/documents/tests/samples/barcodes/barcode-qr-custom.png rename src/documents/tests/samples/{ => barcodes}/patch-code-t-middle.pdf (100%) create mode 100644 src/documents/tests/samples/barcodes/patch-code-t-qr.pdf rename src/documents/tests/samples/{ => barcodes}/patch-code-t.pbm (100%) rename src/documents/tests/samples/{ => barcodes}/patch-code-t.pdf (100%) create mode 100644 src/documents/tests/samples/barcodes/qr-code-PATCHT.png diff --git a/src/documents/tasks.py b/src/documents/tasks.py index 7fde919fc..7bd212399 100644 --- a/src/documents/tasks.py +++ b/src/documents/tasks.py @@ -198,7 +198,10 @@ def consume_file( for n, document in enumerate(document_list): # save to consumption dir # rename it to the original filename with number prefix - newname = f"{str(n)}_" + override_filename + if override_filename: + newname = f"{str(n)}_" + override_filename + else: + newname = None save_to_dir(document, newname=newname) # if we got here, the document was successfully split # and can safely be deleted @@ -214,10 +217,14 @@ def consume_file( "status": "SUCCESS", "message": "finished", } - async_to_sync(get_channel_layer().group_send)( - "status_updates", - {"type": "status_update", "data": payload}, - ) + try: + async_to_sync(get_channel_layer().group_send)( + "status_updates", + {"type": "status_update", "data": payload}, + ) + except OSError as e: + logger.warning("OSError. It could be, the broker cannot be reached.") + logger.warning(str(e)) return "File successfully split" # continue with consumption if no barcode was found diff --git a/src/documents/tests/samples/barcodes/barcode-128-PATCHT.png b/src/documents/tests/samples/barcodes/barcode-128-PATCHT.png new file mode 100644 index 0000000000000000000000000000000000000000..80517d56d0966c67b4d8fd4e1ac5cb34e7534f1c GIT binary patch literal 836 zcmeAS@N?(olHy`uVBq!ia0y~yV4MPEzu{m4l6Mv!f6u_c%Zu&YKp!xwbWZ-s||+bN3$Gd#!ZK_oQR*Prvz|w8VJtXB(~qoSotdaSV@G72+By z7(2v)1c;4I04#~D0xAGi4b*}v05h+HQVS4nLbZT)Hj?Zmiv38kjW}azx;F!AFde9M zS$j2&e{f4F>FLFLd!Kz<@zn11^O$-2x7Sxc`)>Doefr;=pH~ww!wt^!s${N%)C95k2iVG#ek^7<~ji3@?bgTd3)&t;ucLK6UKQa=Cy literal 0 HcmV?d00001 diff --git a/src/documents/tests/samples/barcodes/barcode-128-custom.pdf b/src/documents/tests/samples/barcodes/barcode-128-custom.pdf new file mode 100644 index 0000000000000000000000000000000000000000..f603dff5f5e35907f8b44e9226927224c72cdfc9 GIT binary patch literal 33165 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 Kt}fSsNBIwWUGlvE literal 0 HcmV?d00001 diff --git a/src/documents/tests/samples/barcodes/barcode-128-custom.png b/src/documents/tests/samples/barcodes/barcode-128-custom.png new file mode 100644 index 0000000000000000000000000000000000000000..c3f1b803a6feeb605acf98946984aad487a98a45 GIT binary patch literal 1274 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 VAhG;7Fa`o5Ev_I|DPkD#e*j|y=5zo6 literal 0 HcmV?d00001 diff --git a/src/documents/tests/samples/barcodes/barcode-39-PATCHT-distorsion2.png b/src/documents/tests/samples/barcodes/barcode-39-PATCHT-distorsion2.png new file mode 100644 index 0000000000000000000000000000000000000000..cc81f8e360c13cad4c45191dcc6cc5f67cd2c4be GIT binary patch literal 40381 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%0DO|fUeB(K3 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 z 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

4-9@+R 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 literal 0 HcmV?d00001 diff --git a/src/documents/tests/samples/barcodes/barcode-39-PATCHT.png b/src/documents/tests/samples/barcodes/barcode-39-PATCHT.png new file mode 100644 index 0000000000000000000000000000000000000000..0078026c8f52af5f8b8d06e7b51203cc7b92f200 GIT binary patch literal 891 zcmeAS@N?(olHy`uVBq!ia0y~yV4MSFzu{m4lIP3Xr5PBQojhF}Ln>~)y?Ze4m4S%s zMTxKf>u<^$6sF4DycR_EORNSe8H3AS5?zDK7@()&4uu5(*wb)P%0dCzUJ3#e*%$#+ghK^Pw=*C@0*eI= zl3r`C#xm$Y;u-80h5ho|AJ}bav$blGd9h zm9TQ6`;)tiewfYNKK0su?+B1#>FfLd-Cd;P{bbhbGj-E}R(ki&annBht6)0N7v8-* z)hVs3yXw8(%`4~h=6%5b-`P50C1ZzF!wMjwkj1cw4N4r4{mW$kSLIUdZK+&freg4P L^>bP0l+XkKpsgQ( literal 0 HcmV?d00001 diff --git a/src/documents/tests/samples/barcodes/barcode-39-custom.pdf b/src/documents/tests/samples/barcodes/barcode-39-custom.pdf new file mode 100644 index 000000000..ca78b93be --- /dev/null +++ b/src/documents/tests/samples/barcodes/barcode-39-custom.pdf @@ -0,0 +1,243 @@ +%PDF-1.6 +%äüöß +2 0 obj +<> +stream +x]Qj0 +t.+Vl1=:m_ަb<xH1\?Ը*"uW8 D?%L Ztأǐ;l7p6s!3. +A-:k<⟿2ΤZj}3z(L zB -#.B<2sHk& +NYRDZ~'6:-%.[';n+ٜ%DQYV7Nun"g#`Rmx +endstream +endobj + +3 0 obj +284 +endobj + +4 0 obj +<> +stream +xn`IdY̢`A8+Mei~2jޭvҶؒƶի$zmIOw4̟75ݲN[ضz5DV/-4fC287o޼y͛7o޼y͛7o޼y͛7o޼y͛7o޼y͛7o޼y͛7o޼y͛7o޼y͛7o޼y͛7o޼y͛7o޼y͛7o޼y͛7o;g +endstream +endobj + +5 0 obj +11207 +endobj + +7 0 obj +<> +stream +xzy\U=UA7BoС + KQ!lI0tD: 4CwqqAQ22sflLEQtt9>͸ddqy&dԧNݪf +s9ls {@KP B~CX:ƹ5MU؞ ;ӄ=C!ٿ *YR< ,^~/"uw"{?C%/_J_wqrI.Tꈟ={=C^EtvxArH䜗N_͛O(ˣMXJ^POAG$#Ov޹X19з] d#vH#1ݰ9Qσ3kl&=d/^s-27 +|#}s({T_ m "1;7]xugBm%i%)eʉQ)>.$uz2 476$U kT/~THM/ԛDQc{y7mP_W[zPvU++W,_VW\T(/w!8f1=Mj*R% X`s9s]C E\ &*oh >\"_9`B@0SK5%>h[G;izJ%I& QFӧׇS +Xzl%`kW1D&Mֆ-m5.7PT!!Lh'%+Nn +LJou4lM-Eڪxn˘5oo{܄uu-m0VXnHP (u8#qڊw=.2DGU@'P. ya&y<:@Q#B[0 0zdBZ )Ic\c AXǦ9f4p!V +>Cc)KB A٩[3OZ0\=lVj.)PFkMZDcHꄞUJk$CC{%e6}$y*Ie~Z, ` jI gtn :Hau3)!L{X`Ä!;CQœvx#t,j&;x O^:dJ(ûttK(d4G&;D$'s4CtE%pڝkYHcLʜi.sw^Xf\[7{b((е^uwKQRn}VϿuB*Xr{ Rbfd=Y@6bǑ Q[jӈ&<0*sQ=paJ+2ၑ9gEwԺLjQ3XuUJ6T\F9U*Pmת˾3(^|;/vJzkn,*dvfOeH-5,…SEHxZG&lvٔaIJ6flFh6T<`:H8`v9@0I!:s~H&hVq?r~Χ0)kehvV˅BA(,R(fջr_j'eJke<'ܫfaH,^e?rX?eCK K%h_MK )/A# ABg$\TQ気V:l<>Gcnym'u?*)Zg|K*U~=$4YUziRܞ ?BgɔcKcύ\BtBF(9 L\ ϙ-i@H1 V4rs1]}&.~!z޽=0(=pYES?[|h:zF6>s/9 lqUÙH+FՕilֵ%ҚXF!%]i@]ݜҀ}p̺\g0dXҺ v,)Oښە,Y5SuBIᖔ@ny嚂\GmPZpNU0d3l H>·|C0|ȇ{)~ +|%e:lʇIʂPWa)g2Whrd.x+ÚSm`-S˖phݘT\; ??~st S7]/ſO(AVG> '=+܁qg%["V ͮ1̤,c5QkHLjku>*t;P-\a5DC + +3,XCMe<V桝U<AE_c:Ai^pA滐~1-|rʠ7~ɘIŚ=_x87sm5=5o:kn_ӹ5{z5nuE+pG7m[S[oyi~S76;Y&Ac6N+fUW{;/ݫ!F1!ψ fDȁ\̨x?0"DGSW +tܼXVKYi'55Ns^aѳ pA4 d U)*HO +&Ss^ew0['@rɋQ ;04::5q\uW/*=SU/+!b$h>5*K UZͰӃ &ZeЪ`l޳Vx +ǭp +Zj+ĭe+X + ` +So!8V`Va+ Y!j+X +,&+{Yx^&2 /-g L zY`X LM^ 7|UH+)JB3GƢcFd@Xk3\i.=j4*g \)LLv@ +kJKHe1q +QN}0)DTf$ERfbSo;ʬ?3ypMⵐxLJFCO^󋼩tU0pő+~q5}FJ!(VfMsf:Hé5b& \&LdH&D3g9&Osr&/?O}1E3rQ8&TtD@Y]:k&ن`10E`d`R岢;=ನi؉lɆh6A,/-9`iIHƗ0ܻ [^MQ\" x@:WeŧL:="v7uOx +Yn5ZPoFc'^ϰTӤ +5VCo(v)f+4,b +|~y&Y(^c3SmgyMo2"גF,ϵϙD|22>Z੊i.ogOה ~6ᵏm^e[uV쨛Un7})R];g(5=]ʠ71 荘[|q/=EW9TRr/K~ƷT/j< + 0[x,˯WwJV6W[w1-z㍖M*WۍN<[+-wVttZXKΟAˣ'j$l6iȱo/I3UCwކ-_U\m6YoDU8*@V*eݬ=6iܩƵ>Hm*z7OΤmM;6R 9`}%¤Q7 mF@mJ!ZҭYCJ[8)myJ[J[K.#ǕXXitVک0~' fcyKi +VIF^%({©X͐tY B]J[MT*m q~i#cJ;,PSwԟ+m=Y{Mi)zF.JIΕNS^,u!3twWO\̕,-#]}an}d0 {#ũF+"P0Yq`o=}u@Wx+8-<:KKfq!.> +/"ûzc {b\hk!l S`gx0BH%h`oS-V<k4{yx< Tb8J;rzz;{}K4P^d7\rwc=B{BqIp|3w)?T}?6q[#eQ6hS?:Ke,u8Y+Gn=P'Z ACp@QH4_8֌E@8%͈b !N\,DA=Es$ đ4…PqVsO'4s<)\s0cѾPNJ{Jo߾}!5bѰAK_#@r_I \SSq +B!̥K)Ќx8Wkk$5;e$Lw!luK A(Gߥ,ś#>zl" Q2i4|;RlmUhԅڀȡ:pt._4SH/YrكrĐ*8]#8ym)E]rNķ9qq:"IOa6{pދH(Ww+b4S,?, Ps؄3v#}'d"BvbӋރT.J-3玍f*^:y.ct1E/f-TB%[CIy{h;DEP(;0oShC_{)%BO9j~SNϥ*Gsu(h]=/G6{ۀ7x*rt+qQ(#To$MTR+)ܲl=4:BԷaqA^]Q +)"4.Vlz>sr-876%QycsxPift-a)3|ti܊6qe d˱A=z95˅}# +]f"K?]=4d%>N)q8wt*kXR ]3Yu{ߤ'15|UNwi՜3Ҝ9_ 9{Ĩ-p gh$J-NHR: Lz` NZaYzKbXCo b5Wa +&[(A }JH2> +{#]^Z&Ab^EOJ8SpS+Cdrɧ'?~cc0~ :#G|I5 4XN+9,9?9t2qR}wX4΍GLJ_ =u)O<'=O2cMcAσ]xnG=Gݞo[䙸m6uOB45hilpeħoMxG>7y݃lA悛/k9| ;tOebŞ@g~'٪-c[58 .lͯ vDڱij~'ҪFUhd=lFCӬVl{?gi5''&/r8PPc_zM{=܋u=] +u}uB[j/j*32.#>㴑1ۍTfj8Z +6Noݔw$DnlOhK;)pAR)Qܖf6%!H!l: ރOR;c2̌0E(HrY !@#C,$ŽpTQlV +endstream +endobj + +8 0 obj +8993 +endobj + +9 0 obj +<> +endobj + +10 0 obj +<> +stream +x]n0E|"RH$}@!E*9d3R5㸬sG,Y 3\zDNQra]7y: Q-]lºM f!穝brkyY˟}@$VŌSkQ.e!ө{d˹3RRfov)YoS8֐w^"5GX'kár%3dΟFq+̟Hפy9Fuί?2ט_q )ίꞟzV]<[Mq ޙQ s>.';{8o@g +endstream +endobj + +11 0 obj +<> +endobj + +12 0 obj +<> +stream +x8kxוΌ~J%ȃm9~1x001_H$#- I!miPh>iCڦiKxLдM ]HMڔmMS.I$ܫ14͏ߎ4s׽wd|40<_Y\.$Ͽ7)>ӂEPlȗOm t9o[dCA_ /j +!$ >C|KB#~/[8pﻹpI>g/;͟q1 >8q-"ĢKHIʏŃ1yd%OGFClxA32sr ]uֈEښvUD TH$+*8CIiIy^fhSHrMɖ7‡$[,T0$5W[]q M{G2NZ̬,RRl8pUSsi/t۬vf+1c&:ELa:#N՜w;)VxNw+jJjSn#*5R[RMvyuJhʍ86`8[S)r@A[^^Vzb% ozv|$X;hbz=VuG1zCdG ۩lu+\K ~n{l`r0v;M=2@DqqvXO(rq,3>ǙWJX>"oH{|]0Q}j&LJɊՆ@XT4$Z}CU& }'=e *LyJ P;RW QnMnEnC@kwϋ b*N)R}n)u +xlgJl]S8{qjh} +.hpu7$vE`=;mhea'ulqߨ:fPsByuf$5mPїE7g=(hDB@jmƧ+mĄ3*mfM0'n(Ub{M5F5uYR=U[![T'F =Mj )d?u0emz-%McaYVrj5؂da9&SqU[&WYy:98:&qI5h 7l/ Z½W4f zbJbF ̤q?z;+:IZ$rgJ&#W<}#:ogj OȨR"EDPK虼)`qF`h\fLOT&Csi8k +hL3l.NJ:xJfx<j24ʐiq:uـj ۥ(c] F'4XHkLtDdJV%KjJoIӵ%DZ +m%)u7 jѹ6Ҁ<&h9 z / )\ij45.Ϸ&|F5M +o_s]h+ +w=V`(¼ ]6[Al3sf {,h4pѠG{Nɸk'v"I=v20GZMyY=}l!s}V.'f`1ku,0(afW,̴pwdu𻏧>o,{zS&ȁOI>{́'ob$yq;ͩwb4An +heIeNg57-:z=Z-xrù\m. \.C,C3M `l &hA#680Gü6Ǩ1x_D"2XDEXKZMhiii^deRbi\56Zh` OLJv.- ͞SZÛߚyC7b֢Z%fKf3,|I6˓5krxAYkRL &#`J 5uD*3r\;+$/ϼ+~uBp)1xLʉd3>r >݇e᯴zĤ-d<F b[H|^wcvH, +~Jͤ.$~fᎽJSMHj NӏK}e 9+&yy33ʤ<.Zz-KL"N%wԈH81檱s!a=i97 +Y?M|H>h|OBv>? R˽'=4SOx>o<(0h*yS&o-)؍C`iތo$FVA+.3m"׮-gٲpW|%.ɼ;37CHC؉@L=7_;u&>v睴GoUσ>'{uZ"KY6@YqV[uCh2&vd{T];K5iJlYn1ZJPzk+|0vS;7y>c$'/6n?Izo%$Jt"L6/_b'=eN-քBoϵEl+bҡ;!gE..d41ܲucIW?[fyjc~%k+JVlXg}Fs#7ɋ3s9PPjZ|75Υ5jW4Z-zjCԡ/g[Cyw>T3?} ԳPVRN_wTflca o6flz pO:&A^q;ȱ9 AA.:9Q七;Ug⬇ +Qu(]H_=h,C3N^=wKvŗx8Ca 7H?614߱9ZMbx題u}7iZ!rp11e.>vư21rUw;[F2'bD <@X0Ý*}AnS*3YKU8I +g"븗U8x +B zB U@@T`Sa *,Cت(Ta-T_Ua\~zphNp,Ҽ™ T8 nԟUlؖQؕS\X\[xg8=OGcᝡW Kᠸ.Ed8\wX؋&:|qC_1#|Dkt86FX+^ǽG%4-*@@'}b2 G|btZWxpg8 Ƒu}ub/$E_$ nW +Ɠ>&Cx8l8$/o%D4K\xx$Z#8K`"3kuD0H$M ֠C`"4-`<<!_F>L~>,H Uw`7|.eS*Gb^^m#8/'F1Y?9cHmh< o*n &t$ $h!0*nP4E#IT@cDE#Ds><ذ/VFud2UcQвx}Z822+UeAm(v0?.tNTjĹ\ZT%up]4m!;Q@ۇ!?D! ΤBHUU86@=,[(E0ꋸiGQ>ƞ>f7 +Lpk ^t06-lD]hW>"VćQs-~ LeEu?+IK4WK@ sLvZD܁'~uՍ`~ҳP[Q^*{5nRTdQ\jYEA|l@a6Oڏ hPpy;0(κ͸Gl@l-[+{Yޮڎ0o,VgJGnT|d~.XsÝg#%bj̉Yks)1"ݍaē̟ea'p/p'-@J'kԱm#kqx4UHGC7G`5_wlıq:֐*E*߀8Vx8Dʘ|W#G&:{NA&f338C=2ѷ|&%4x)zW/iuW~{W^]}7BkH)6S[ƛ=CJeG"ׯYB~%4~"_y= :_,;*\IdI0I<{tQ⣗{vԣ';m4)$Ќun=pU1Ev _>jwT GlGG9rD{+l]^"ߛepq`,^{$ b#|\G ň'Fg/w0H-jƢ~]#߯źP;`q6Wml[\Km yGyb[.>5}DsԸ2|v~^k⮪.I\*mp:\vz /.LYa/h`v,ڦ5\b47e^5t-Hd@ &G6UWwNf{;]VTS٢h*пe{O{:|Zw* }nŻө)0qTzDrZH"ICD%͋0r"L&!N@5}"Le0~ }MCd"I(}2R!v P?OAO3 +endstream +endobj + +13 0 obj +6443 +endobj + +14 0 obj +<> +endobj + +15 0 obj +<> +stream +x]n <bL'1&Sp$ ·/\msn])iW,e3T$I*4W sƥ,Iz5;=\2^#Du~ fPƤyb זv?:˟}@SpX5`q\Ѳm+J%E #dI'<ȧs|> +endobj + +17 0 obj +<> +endobj + +18 0 obj +<> +/ProcSet[/PDF/Text/ImageC/ImageI/ImageB] +>> +endobj + +1 0 obj +<>/Contents 2 0 R>> +endobj + +6 0 obj +<> +endobj + +19 0 obj +<> +endobj + +20 0 obj +< +/Producer +/CreationDate(D:20220401110308+02'00')>> +endobj + +xref +0 21 +0000000000 65535 f +0000029273 00000 n +0000000019 00000 n +0000000374 00000 n +0000000394 00000 n +0000011762 00000 n +0000029442 00000 n +0000011784 00000 n +0000020862 00000 n +0000020883 00000 n +0000021078 00000 n +0000021508 00000 n +0000021790 00000 n +0000028320 00000 n +0000028342 00000 n +0000028545 00000 n +0000028904 00000 n +0000029131 00000 n +0000029174 00000 n +0000029541 00000 n +0000029638 00000 n +trailer +< +<77F1D5E7090F17C94EF7E43CF16B016F> ] +/DocChecksum /2F8AB12D558369FCB5C37CF4905E79AE +>> +startxref +29813 +%%EOF diff --git a/src/documents/tests/samples/barcodes/barcode-39-custom.png b/src/documents/tests/samples/barcodes/barcode-39-custom.png new file mode 100644 index 0000000000000000000000000000000000000000..5c2d7b4f77442acde7887c48f90a0153ded795cb GIT binary patch literal 1357 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 literal 0 HcmV?d00001 diff --git a/src/documents/tests/samples/patch-code-t.pbm b/src/documents/tests/samples/barcodes/patch-code-t.pbm similarity index 100% rename from src/documents/tests/samples/patch-code-t.pbm rename to src/documents/tests/samples/barcodes/patch-code-t.pbm diff --git a/src/documents/tests/samples/patch-code-t.pdf b/src/documents/tests/samples/barcodes/patch-code-t.pdf similarity index 100% rename from src/documents/tests/samples/patch-code-t.pdf rename to src/documents/tests/samples/barcodes/patch-code-t.pdf diff --git a/src/documents/tests/samples/barcodes/qr-code-PATCHT.png b/src/documents/tests/samples/barcodes/qr-code-PATCHT.png new file mode 100644 index 0000000000000000000000000000000000000000..6f1d587ff63ef4fc9d2c9b639e982a614fd1d863 GIT binary patch literal 7579 zcmeI1eN0+s6vhwLuGEae=33o4sm66{lO@&|ZJnZ2?bJ4@bzQ89R-D?I&4M;=3>!qO zMrUfrHkY)sXqWAeE>WS56tq$=wu5FLLKds24ACx=Od(*1;s=|1-+LFArpdCu%MFkV zh8@B zfT&ZsSx4WNC|%Pd!q}8O{9oqy?;Q+RM}3))U#c_;c8(p8p0K|<pg)ndlfL<> zS3@@*;u5v@UksgX{W;)#~xnaQ=b6>zlRVeaAW6KV(FMOs4AI zR^n`8csHev#E8+_j-U?kEGIsN$0Kb(ouAl<}tcw28lBAc*C~-na;B#wicCDP9IIrxf zoScp{k}x!TBk20YNpjn+4PTsHyKH{ZLAhSq1vrYGqYi{B}hel0vF#$ z=wJauTstbVTZxW1kldi9p-6f`dr@w`LN*`n#Z_UdKwqx&X|CJN8f;lIw`nc;vQN5) z_AM%lJVZ#)-B=xo@t~=0M(tjaPN_96v1~wV^Zgzuwh0Nb##kZY=a-0mbU^m zXY*?l&d%jQgb_8PvM!@+X_wR4={e}Bq2=0=3y3i?{g@(qvL~lSi>MPBh39ns1g~=- zhF&6&D-{z`=vfHd!!#kiFLI38%@)yOh#{R$HUI3G%2Btq^x>%p0gfkgrr+i-)A`QV zo689FlmsiBKEYK89sndpTu6C{P|1$_4Ua(X#`cC!{%iLD(M-z+gd;sY{Y)N19gZ?l ziuY=MQ11SyAcR+3!|z}O+cjTDAdg3xsOW}fQe8FCO0?0mx<#u1=0jV-TKjIj3Wc2^ zo?vJc@xzGYdwK;yZO_RSguaZ#hVu6DSTD=W_SDGC-(jMsMfz8y%Ij#w$5@TQBBd_< zH5X-0Xz0Kb(Gp<|)`2MM*)h9Y@c`Mn_l+HqP#XUDK)hcybeH{+O>LiOMZu?gE((3* z2_D}=#PtqgsNdK=y{=$j3)}{7;GH=&Q#L l?Z^Ai(-|ll({KNW4vetQoW5#L?jY7M_t?oSRYvKhzX1=Fd&U3& literal 0 HcmV?d00001 diff --git a/src/documents/tests/test_tasks.py b/src/documents/tests/test_tasks.py index 2f950e28b..1b59b7109 100644 --- a/src/documents/tests/test_tasks.py +++ b/src/documents/tests/test_tasks.py @@ -1,8 +1,10 @@ import os +import shutil import tempfile from unittest import mock from django.conf import settings +from django.test import override_settings from django.test import TestCase from django.utils import timezone from documents import tasks @@ -95,21 +97,118 @@ class TestTasks(DirectoriesMixin, TestCase): test_file = os.path.join( os.path.dirname(__file__), "samples", - "patch-code-t.pbm", + "barcodes", + "barcode-39-PATCHT.png", ) img = Image.open(test_file) separator_barcode = str(settings.CONSUMER_BARCODE_STRING) self.assertEqual(tasks.barcode_reader(img), [separator_barcode]) def test_barcode_reader2(self): + test_file = os.path.join( + os.path.dirname(__file__), + "samples", + "barcodes", + "patch-code-t.pbm", + ) + img = Image.open(test_file) + separator_barcode = str(settings.CONSUMER_BARCODE_STRING) + self.assertEqual(tasks.barcode_reader(img), [separator_barcode]) + + def test_barcode_reader_distorsion(self): + test_file = os.path.join( + os.path.dirname(__file__), + "samples", + "barcodes", + "barcode-39-PATCHT-distorsion.png", + ) + img = Image.open(test_file) + separator_barcode = str(settings.CONSUMER_BARCODE_STRING) + self.assertEqual(tasks.barcode_reader(img), [separator_barcode]) + + def test_barcode_reader_distorsion2(self): + test_file = os.path.join( + os.path.dirname(__file__), + "samples", + "barcodes", + "barcode-39-PATCHT-distorsion2.png", + ) + img = Image.open(test_file) + separator_barcode = str(settings.CONSUMER_BARCODE_STRING) + self.assertEqual(tasks.barcode_reader(img), [separator_barcode]) + + def test_barcode_reader_unreadable(self): + test_file = os.path.join( + os.path.dirname(__file__), + "samples", + "barcodes", + "barcode-39-PATCHT-unreadable.png", + ) + img = Image.open(test_file) + self.assertEqual(tasks.barcode_reader(img), []) + + def test_barcode_reader_qr(self): + test_file = os.path.join( + os.path.dirname(__file__), + "samples", + "barcodes", + "qr-code-PATCHT.png", + ) + img = Image.open(test_file) + separator_barcode = str(settings.CONSUMER_BARCODE_STRING) + self.assertEqual(tasks.barcode_reader(img), [separator_barcode]) + + def test_barcode_reader_128(self): + test_file = os.path.join( + os.path.dirname(__file__), + "samples", + "barcodes", + "barcode-128-PATCHT.png", + ) + img = Image.open(test_file) + separator_barcode = str(settings.CONSUMER_BARCODE_STRING) + self.assertEqual(tasks.barcode_reader(img), [separator_barcode]) + + def test_barcode_reader_no_barcode(self): test_file = os.path.join(os.path.dirname(__file__), "samples", "simple.png") img = Image.open(test_file) self.assertEqual(tasks.barcode_reader(img), []) + def test_barcode_reader_custom_separator(self): + test_file = os.path.join( + os.path.dirname(__file__), + "samples", + "barcodes", + "barcode-39-custom.png", + ) + img = Image.open(test_file) + self.assertEqual(tasks.barcode_reader(img), ["CUSTOM BARCODE"]) + + def test_barcode_reader_custom_qr_separator(self): + test_file = os.path.join( + os.path.dirname(__file__), + "samples", + "barcodes", + "barcode-qr-custom.png", + ) + img = Image.open(test_file) + self.assertEqual(tasks.barcode_reader(img), ["CUSTOM BARCODE"]) + + def test_barcode_reader_custom_128_separator(self): + test_file = os.path.join( + os.path.dirname(__file__), + "samples", + "barcodes", + "barcode-128-custom.png", + ) + img = Image.open(test_file) + self.assertEqual(tasks.barcode_reader(img), ["CUSTOM BARCODE"]) + def test_scan_file_for_separating_barcodes(self): test_file = os.path.join( os.path.dirname(__file__), "samples", + "barcodes", "patch-code-t.pdf", ) pages = tasks.scan_file_for_separating_barcodes(test_file) @@ -124,15 +223,70 @@ class TestTasks(DirectoriesMixin, TestCase): test_file = os.path.join( os.path.dirname(__file__), "samples", + "barcodes", "patch-code-t-middle.pdf", ) pages = tasks.scan_file_for_separating_barcodes(test_file) self.assertEqual(pages, [1]) + def test_scan_file_for_separating_qr_barcodes(self): + test_file = os.path.join( + os.path.dirname(__file__), + "samples", + "barcodes", + "patch-code-t-qr.pdf", + ) + pages = tasks.scan_file_for_separating_barcodes(test_file) + self.assertEqual(pages, [0]) + + @override_settings(CONSUMER_BARCODE_STRING="CUSTOM BARCODE") + def test_scan_file_for_separating_custom_barcodes(self): + test_file = os.path.join( + os.path.dirname(__file__), + "samples", + "barcodes", + "barcode-39-custom.pdf", + ) + pages = tasks.scan_file_for_separating_barcodes(test_file) + self.assertEqual(pages, [0]) + + @override_settings(CONSUMER_BARCODE_STRING="CUSTOM BARCODE") + def test_scan_file_for_separating_custom_qr_barcodes(self): + test_file = os.path.join( + os.path.dirname(__file__), + "samples", + "barcodes", + "barcode-qr-custom.pdf", + ) + pages = tasks.scan_file_for_separating_barcodes(test_file) + self.assertEqual(pages, [0]) + + @override_settings(CONSUMER_BARCODE_STRING="CUSTOM BARCODE") + def test_scan_file_for_separating_custom_128_barcodes(self): + test_file = os.path.join( + os.path.dirname(__file__), + "samples", + "barcodes", + "barcode-128-custom.pdf", + ) + pages = tasks.scan_file_for_separating_barcodes(test_file) + self.assertEqual(pages, [0]) + + def test_scan_file_for_separating_wrong_qr_barcodes(self): + test_file = os.path.join( + os.path.dirname(__file__), + "samples", + "barcodes", + "barcode-39-custom.pdf", + ) + pages = tasks.scan_file_for_separating_barcodes(test_file) + self.assertEqual(pages, []) + def test_separate_pages(self): test_file = os.path.join( os.path.dirname(__file__), "samples", + "barcodes", "patch-code-t-middle.pdf", ) pages = tasks.separate_pages(test_file, [1]) @@ -142,6 +296,7 @@ class TestTasks(DirectoriesMixin, TestCase): test_file = os.path.join( os.path.dirname(__file__), "samples", + "barcodes", "patch-code-t.pdf", ) tempdir = tempfile.mkdtemp(prefix="paperless-", dir=settings.SCRATCH_DIR) @@ -153,6 +308,7 @@ class TestTasks(DirectoriesMixin, TestCase): test_file = os.path.join( os.path.dirname(__file__), "samples", + "barcodes", "patch-code-t.pdf", ) nonexistingdir = "/nowhere" @@ -172,6 +328,7 @@ class TestTasks(DirectoriesMixin, TestCase): test_file = os.path.join( os.path.dirname(__file__), "samples", + "barcodes", "patch-code-t.pdf", ) tempdir = tempfile.mkdtemp(prefix="paperless-", dir=settings.SCRATCH_DIR) @@ -183,6 +340,7 @@ class TestTasks(DirectoriesMixin, TestCase): test_file = os.path.join( os.path.dirname(__file__), "samples", + "barcodes", "patch-code-t-middle.pdf", ) tempdir = tempfile.mkdtemp(prefix="paperless-", dir=settings.SCRATCH_DIR) @@ -197,6 +355,19 @@ class TestTasks(DirectoriesMixin, TestCase): self.assertTrue(os.path.isfile(target_file1)) self.assertTrue(os.path.isfile(target_file2)) + @override_settings(CONSUMER_ENABLE_BARCODES=True) + def test_consume_barcode_file(self): + test_file = os.path.join( + os.path.dirname(__file__), + "samples", + "barcodes", + "patch-code-t-middle.pdf", + ) + dst = os.path.join(settings.SCRATCH_DIR, "patch-code-t-middle.pd") + shutil.copy(test_file, dst) + + self.assertEqual(tasks.consume_file(dst), "File successfully split") + @mock.patch("documents.tasks.sanity_checker.check_sanity") def test_sanity_check_success(self, m): m.return_value = SanityCheckMessages()