From d3e4a6870d10b04e4aedac4addb17915a7acdde2 Mon Sep 17 00:00:00 2001 From: "Nathan.fooo" <86001920+appflowy@users.noreply.github.com> Date: Wed, 16 Oct 2024 17:39:24 +0800 Subject: [PATCH] chore: template (#889) * chore: template * fix: auto del file lifetime * chore: delete file if fail to write to disk * fix: modified html * chore: set content type * chore: md5 content * chore: clippy * fix: image loaded failed * fix: build * chore: bump collab --------- Co-authored-by: Kilu --- Cargo.lock | 18 +-- Cargo.toml | 19 +-- .../build_production/images/appflowy.png | Bin 0 -> 9391 bytes .../build_production/import_data_fail.html | 56 ++++++--- .../build_production/import_data_success.html | 71 +++++++++-- email_template/src/images/appflowy.png | Bin 0 -> 9391 bytes .../src/templates/import_data_fail.html | 96 ++++++++------- .../src/templates/import_data_success.html | 110 +++++++++++++----- libs/client-api/Cargo.toml | 2 + libs/client-api/src/native/http_native.rs | 47 +++++++- script/client_api_deps_check.sh | 2 +- services/appflowy-worker/src/error.rs | 8 ++ .../src/import_worker/worker.rs | 63 ++++++---- src/api/data_import.rs | 62 +++++++++- 14 files changed, 414 insertions(+), 140 deletions(-) create mode 100644 assets/mailer_templates/build_production/images/appflowy.png create mode 100644 email_template/src/images/appflowy.png diff --git a/Cargo.lock b/Cargo.lock index 694832f8e..fd90c3d53 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -612,6 +612,7 @@ dependencies = [ "authentication", "aws-config", "aws-sdk-s3", + "base64 0.22.1", "brotli 3.5.0", "byteorder", "bytes", @@ -648,6 +649,7 @@ dependencies = [ "lettre", "log", "mailer", + "md5", "mime", "once_cell", "opener", @@ -2088,6 +2090,7 @@ dependencies = [ "app-error", "arc-swap", "async-trait", + "base64 0.22.1", "bincode", "brotli 3.5.0", "bytes", @@ -2104,6 +2107,7 @@ dependencies = [ "gotrue", "infra", "lazy_static", + "md5", "mime", "mime_guess", "parking_lot 0.12.3", @@ -2231,7 +2235,7 @@ dependencies = [ [[package]] name = "collab" version = "0.2.0" -source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=cabf08194dff2b764ca0c7c63a2c1bdd5d02e45c#cabf08194dff2b764ca0c7c63a2c1bdd5d02e45c" +source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=7a47ee71a5d101cc467c37b0df72215549fc2c02#7a47ee71a5d101cc467c37b0df72215549fc2c02" dependencies = [ "anyhow", "arc-swap", @@ -2256,7 +2260,7 @@ dependencies = [ [[package]] name = "collab-database" version = "0.2.0" -source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=cabf08194dff2b764ca0c7c63a2c1bdd5d02e45c#cabf08194dff2b764ca0c7c63a2c1bdd5d02e45c" +source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=7a47ee71a5d101cc467c37b0df72215549fc2c02#7a47ee71a5d101cc467c37b0df72215549fc2c02" dependencies = [ "anyhow", "async-trait", @@ -2295,7 +2299,7 @@ dependencies = [ [[package]] name = "collab-document" version = "0.2.0" -source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=cabf08194dff2b764ca0c7c63a2c1bdd5d02e45c#cabf08194dff2b764ca0c7c63a2c1bdd5d02e45c" +source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=7a47ee71a5d101cc467c37b0df72215549fc2c02#7a47ee71a5d101cc467c37b0df72215549fc2c02" dependencies = [ "anyhow", "arc-swap", @@ -2316,7 +2320,7 @@ dependencies = [ [[package]] name = "collab-entity" version = "0.2.0" -source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=cabf08194dff2b764ca0c7c63a2c1bdd5d02e45c#cabf08194dff2b764ca0c7c63a2c1bdd5d02e45c" +source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=7a47ee71a5d101cc467c37b0df72215549fc2c02#7a47ee71a5d101cc467c37b0df72215549fc2c02" dependencies = [ "anyhow", "bytes", @@ -2336,7 +2340,7 @@ dependencies = [ [[package]] name = "collab-folder" version = "0.2.0" -source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=cabf08194dff2b764ca0c7c63a2c1bdd5d02e45c#cabf08194dff2b764ca0c7c63a2c1bdd5d02e45c" +source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=7a47ee71a5d101cc467c37b0df72215549fc2c02#7a47ee71a5d101cc467c37b0df72215549fc2c02" dependencies = [ "anyhow", "arc-swap", @@ -2358,7 +2362,7 @@ dependencies = [ [[package]] name = "collab-importer" version = "0.1.0" -source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=cabf08194dff2b764ca0c7c63a2c1bdd5d02e45c#cabf08194dff2b764ca0c7c63a2c1bdd5d02e45c" +source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=7a47ee71a5d101cc467c37b0df72215549fc2c02#7a47ee71a5d101cc467c37b0df72215549fc2c02" dependencies = [ "anyhow", "async-recursion", @@ -2459,7 +2463,7 @@ dependencies = [ [[package]] name = "collab-user" version = "0.2.0" -source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=cabf08194dff2b764ca0c7c63a2c1bdd5d02e45c#cabf08194dff2b764ca0c7c63a2c1bdd5d02e45c" +source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=7a47ee71a5d101cc467c37b0df72215549fc2c02#7a47ee71a5d101cc467c37b0df72215549fc2c02" dependencies = [ "anyhow", "collab", diff --git a/Cargo.toml b/Cargo.toml index 37f9fe9ae..1233f7e85 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -153,6 +153,9 @@ async_zip.workspace = true sanitize-filename.workspace = true futures-lite = "2.3.0" +base64.workspace = true +md5.workspace = true + [dev-dependencies] once_cell = "1.19.0" @@ -276,6 +279,8 @@ pgvector = { version = "0.4", features = ["sqlx"] } client-api-entity = { path = "libs/client-api-entity" } async_zip = { version = "0.0.17", features = ["full"] } sanitize-filename = "0.5.0" +base64 = "0.22" +md5 = "0.7.0" # collaboration yrs = { version = "0.21.2", features = ["sync"] } @@ -299,13 +304,13 @@ debug = true [patch.crates-io] # It's diffcult to resovle different version with the same crate used in AppFlowy Frontend and the Client-API crate. # So using patch to workaround this issue. -collab = { git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "cabf08194dff2b764ca0c7c63a2c1bdd5d02e45c" } -collab-entity = { git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "cabf08194dff2b764ca0c7c63a2c1bdd5d02e45c" } -collab-folder = { git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "cabf08194dff2b764ca0c7c63a2c1bdd5d02e45c" } -collab-document = { git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "cabf08194dff2b764ca0c7c63a2c1bdd5d02e45c" } -collab-user = { git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "cabf08194dff2b764ca0c7c63a2c1bdd5d02e45c" } -collab-database = { git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "cabf08194dff2b764ca0c7c63a2c1bdd5d02e45c" } -collab-importer = { git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "cabf08194dff2b764ca0c7c63a2c1bdd5d02e45c" } +collab = { git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "7a47ee71a5d101cc467c37b0df72215549fc2c02" } +collab-entity = { git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "7a47ee71a5d101cc467c37b0df72215549fc2c02" } +collab-folder = { git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "7a47ee71a5d101cc467c37b0df72215549fc2c02" } +collab-document = { git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "7a47ee71a5d101cc467c37b0df72215549fc2c02" } +collab-user = { git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "7a47ee71a5d101cc467c37b0df72215549fc2c02" } +collab-database = { git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "7a47ee71a5d101cc467c37b0df72215549fc2c02" } +collab-importer = { git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "7a47ee71a5d101cc467c37b0df72215549fc2c02" } [features] history = [] diff --git a/assets/mailer_templates/build_production/images/appflowy.png b/assets/mailer_templates/build_production/images/appflowy.png new file mode 100644 index 0000000000000000000000000000000000000000..c69a72c27a80ef10f91e5d8287d104075e5ef5f0 GIT binary patch literal 9391 zcmcI~bx;&u)Hbq`x~{bB0;05}bcaZHgQT!@OM|d32uLj5sWj3HQZC)y-5tx1mWF+K z=lk#b|DCxpbLXCW&wb|1nR%Xj!qipefP`Q|EG#Ubg8WC#$NBhwJ3j8?D6X>?hlNG& zsqj%s+uP*7Oagb(oy4PxHa5>=C-X{!r{u<&-qZA+-0{#jpAF@1AJ@24f-D{d(Vhh} z$mj=?3<@S6CZrVctA%eb+o5r@RbsW$<~#?)>CbT$Xvu@TEMg=@UR44=)YRS{mhFES z`cG!5>`>Qh>OS*Kg8f&)-{zyQn8r)PXObGEGXED%fi-E3%Ns{b9ge|89~0>ZaY_m~ z!BzC1rJn$O{nJe@C(x?;(dm0fu%DMh3}W&}f5}X`UDX5WHhbQM$FXH~$3kb1+CJTp zP*x`n{x}zjdoy z{S320=-j2U@q6OXgR{0p_yl=Sy1HC_;Irxq(xEYhcKQ379 zt75LbTCR2qQM0NQx4q}lqNxahz9R)N>&XDLprfEI?<9_4VU+ADEH$8_$8QY>rD~Fv zLmwQ-hKf`6=1lz)_uQ+S{}->V==#X75$IHc_lf8A5`iUqfJlBfkU``hM~@qHmvCPR z6M<5eQNWLI>TF?}D9`Vm?#R;p2^gIpa3I^1QTlAcskRTLx$&8h>&z~gopR?KoT zzhQ-^uTu->aTD7Eq@{vNZ4Be{+@wuyU_dt^h2>;bnOhSAQA}eaTR+P0y%X^<2INqg z5^|fNkSg_IHJREf^ORD2dGE&g$E|9VAvOU?j@!Wcr186!nB)p(qEr#e3fhT5ll`t? z?T-r&oyB~{O84!3f>I{-gU9m6!sj@Y?@gM*DbjezPcU;^m}|ZoCv4AzTIc7wq!n4I8nTBtHV}id2gMuwt6yq((j3*j`v!3v8>Ui@woTppRn&-OGBYNuBpey)-an-5U ze%J`q6Vu$I`#83^^)G~2q3Q_(h2n=yVc;0Wq^ldng4HtQbB$`;!WZ7h;VORsLBJIG zs@M_*!z#|9T7(h2gyj!Ebc~cjQy8a3#eY$H&uLMT{lx6(1Kn`*8W`mz>DJ^x9~BiA ziHaqCmFTm|KH7_}dKwUs-1qh!$LfiKU~Ht}@Y$bn+Em(pa`AV)?XgIsdnEZ0mHN}| zHb&LV{4vcp{M>Q@huE`0#$>ay6%q+u+EmKLc(1nu%6VlN`!aa=T?*L@TS~iOyt&D| zRyF2lh3{@c;vJz`IqQ({MBNs`k&P{6eRz=fx-6Aix4#56UeP*{HONxy_=&;rkJ9$^ zVbII2cTv8g|9EC`Yb^_>slw)Z$!1k%d_vif>sUo?828HUFYzql?K_0!JxZ279qkkH z_8S?p=76)GnvJh!$xT6O)+hfA(phv{zfir4D2LKMW2}v4|7WgJaN%(q54+x?LoO1{ zeY*`Dq(lhzyLQIoD&o!MPG1mK6N)N^Jn$H}GX$k%`=4IqFE4w}?PfCW6Y~OAUm84A zmiF}guhDF4UzRwyXtpw{$^ZNip_vX-Es8$HMszp9L;=(`EhQ6qAl-?)SY~{So z-J`C{8`30&Lo7bcR$)7b`G}`z*(|%$s>B@YQhf=*6e%!k~7uCE(;=%Imid=%}o zYAE$TC7}n7f+dB$N^)VMeaND(hHh9Kb~qxWXWJ(lhYwm8uGaaL?O9K+?|$;sEb>P@eoGViF=C6*Wi9?jFiaRY?{kwhU3|qIhF*}9; zY2ApprvXA+_amgf(d*b74(fECe?;r`rgbJuyEtX3gL(Yvg;9+^pI5}`%dfR(cCAi&sc^Aph^JJix=|&$QSDQ2 zz%3-&O7jTNz;6v)Nq8McN$9C-2gj1n2RkNuF# zxPzbWbXw#_topYf;5GuaTFL8LNZ$lzmJ8m8fGCY%hfXjXM$iawETo3a9RtjS^SB5G(2oB>&BUk zQjX=O*7h7ow}0!|@2e!p%Eh`~LtHp^u_0rb>lNoMY5!N8?7dw$qPuaf`?GNkk?b8b zj2Pf%*~Ad+q5sNLG6HxI!khNTFxf!1i%xdQD*^@Vr5geJOP8=|JQK+I^;9lK0fd(- zpnfQy+mL~wEs-N4^?^jYoKG#u{<6$^A{Mg)=;^S#)17_7zH_KbsLSq@tdslnSpK5T z`LwsXypfQ7Sf1HGKw;WYv8Yu7H+6=;(r?@*>$cfI7qK2XzHMBM5YBMU7(W;Kp5%Q3 zZL^_bK(jO437E)e)Qk1DIw|IQy^&jMYk(JsMEfq^4m2!VWjIoe$Mb*qp=BN34C6$z z=O=7{J`{{QQ6kD2|C4&{&<%l3)n`3s3Lg^>nF_Ff@ZimHUf-F&x0B$c6&`=B!?7x< z+?sLY(lIt6^1`@}$?JDDzdfe9Ui(<8Lnk5KrmSeRq9N)40Q=jxU_cK%Bh=aLGHejRm%Ow7$q%)CJIiN@Sewl{Gf4XD;rZY%a&1yph**qSy zC771ua*2bxO=rz>vSxi^!|A*+$qU~0O@ql2%_?VS^Ueo>k&r)=5&G+GhEU^t>Md_; z^>;&V?Nq;@L0)Nsh-J!+>Y@z!Uv;ja!V%GLf8=jlw#nPZKW0_NI&A(rrV1{R=JhTN zqwqLT9yd8qUek*QsW9`W`OdYv88zSZ8(D63#ZT@Gm3B;);?NXwyc(Q0=RaJPJ>qS+ z$DjY8HsOzQg>q8IYCdj0!de z&WKgRcfdVHmS!cTP4&GC!Dop0RG5Pjj<{R1#GpnBUUi0(`61f5lNG8{A81?YFl*$j zR5FFxBHAS>=i*AP>fDtIC~&PR%n!PGSc&zBk7eul3|;L$)0ia~Av#oB1eLe9B}ZBugWzl)xnDxq)fvrgaG+7p zWv`tJ&g8eFExGUWxB-h-v#z+?r(x!0Z@X5@vV zQ-XTBaMqOniebb1n0Z`J)u*)sCr_6W4j6Jo`%N5pr^ptsq-sl_^;FTUc#QRzQb13P z+eDqw=~S^dn!E9oj%FhBr$Q!Ykrq~|`bN#>L0a40ILH@N1B9r!o7Sf7jLLX5bdfAg z7)NrK7l1+|=&*JhX5cZo8*QBjzs1cL{~Vt-mV~!;fE@bApM90MGpYy05zLypa^5cD zEu2v0<3eNU_UDMun6!Qdna$x2=Sd$Npf{V@&vFDxIbNGTeY`|b{c~*G(8EFwnGOi{kM?8cqwD3v^eAVu&d#G z4}vxr_i&>U-X4FR{XUFn_j7GxtKDEZpIotymRwk$bbBMiYn#!QuvD=n)-OuiWq=LQ zm0dW~m^nc6mvZ*{+DEcg+Z#j+q!-t?6(*P@$asoYBW{E!3PwxM_wWp7MlHn0C(|CP zaOV%C>eSQhdA-gM3Q0Oo_)j{bs0P<<^M3OR?K3A1o=^o8aD6A3rFWpREz&M>=Gx~? zeJ?!m$-bUt-xp#>RmV&>rfsGZ^Mu>jFUDCB^Cn{7`!OZzv{_X?ZzJL))2QbZJLIN_ zJ+=yOF3y%O_%Gfkyx>wkiY=Qs5F17HyNa&&X(}7q76{{bw4^z!bxg9V?803~0Big5 zPS#@`bw&C)xaL`mF~@grBV7FFU63^Q<28uak{kmCAI(StreIkKJlYXU?iS#;5qsX- z{@b(D@)}Wi;ob=|0jO|Caa-kL$=pvzM|^UK22T5ODgGT>p?(uVJxH1NmVQ;;-gB9y zTg%i0=Hjkw;qK1AuIX%9tSLKU%?xpHc7xoeU?^0aHA1C6X0W%=Q=duiB4sQAwylDV z!VafnE$pB&_UTM1bU&yOr0Kv7-|-Oohq=xZ7(a_?P&Q|J@ahKHoTwBD%c%WO7U(sy z&zE}Jm(|!X`U4d;Z=ytf<#j6t;3;KStyW+PFW?O@Op>O=;;Vn3t1>7O`)(|ABDh-2 zgY!E$Se4VYaj>KqJYa<=Y5bTZMM;Z-rDR_uhcRy3mv{X^%9nq>NN8+mJ8Rv0TY^#9 zJ4NGYEn`@H{!_#@i0V)wQ3}fYE9k$xHIBG@PI+~>{!)nr&v2VIacog**LD<#vN#V{ z06M5qL*?(aL2mF=?__r~S70DNA&5PyQAT#cdGpUZ7ITWEYqffL=Mz4sj*`@(E_sxA!U;yP%4kmQQe1?2+Ua%^Ig$}cQfIMfoIH_ z4q72wTMab(eolWtwMtP}r1BPp?cU6% zRQK;VlkoYMTP?Gi4jk`XqIP!A14lSsbF>)tas3`uVk}oR_%sw``}ahwXmGS=DKFgI zxq~$7H zM#|=wg=XSFridY#$)D5E2~7y5ZQpd$0Q$d&e}B^TA42&|6gAF5q1*qUtrJ$~P@aKn zXjExwD{SLZe?q$H{LJL$milxf@f9;SxJ7Myk$+@iu)C(f7p`Q_};fcmf0e!Uo(!xwAHcNK{Q~Azs zWGOb|zIb{_5BuKu8GtsoJ=y@K;y^F-lY@So)d? z!NCFvcVi8?&rZoRzuW5d9_ezw-tT#E=62$f8M#tn?JD+Q_$m{S{B{+;Z%h-+IfjhP zkgK@PANahl?nAA(EoFP!L~3g|Xu}Fj!FLS0ba!FJPT;@@Q)&prvC-{VFl}xQpf$Jw z;mCD-~Gj0+?&&PxlKd zZ=NSVcMNVi{bU46^_nwF6HpiRUBYRQ!NEH8d$13Y?7k;TtrgGj{?n!5O|rX2#Gldl zsepig!mKY_w`KXs1Y<8+2N$%6zmkVvFR@qrh29`{4%BDw#*oRi;g(Q)p$N#2*q!(7 z9bAc0f6MO83<;0Ma^C zY6LA;a0@s8G`=u7OyRg+e&}Q@u%DVB)WVl(5b0&k&O^8Yx@Kw!%425^z@OHJ)negl zin)2!r3`68_E3X_&cLl06(X;rpU>50SWPB1o|q=g9D;pmnIyDwDoABE{vk#CTi0-i z^$E^Y+~hm*(o4xqFz*Id!OS4J3P#;^>m5emQA;pE}FnMaQAEm|TS6dh7-o$A`20cebq7&k{Ym>Yr~)g+nU4F6r& zM`IE(j!eab4qCF-(8jUz(%0+5LqKCLH`M}2N*B6Fp#k|-(LILfkbWW~(mv+hXeHGj zQ@}uxgFOF^$#^r?$x$q{B^tw-ZV-@73bXEt5ke}Le*@o}*oG*RrC;$bV!V)%ir#}o zf64kSq8e*I&mB9=f-7@uem=>6zd;0h0dvZ8&!ThbikU+?L=|G0;S2cMepgNceNn@Z zA2ui_=@5i~F~-nkH>nVOCjJB20WK@(Ccb?-n??wN-bbu~9@t^#_(N;~$#Jn~ozxtj3qSrR$2THc_mwVZ(EpdQX zMTnNR($b z{I8kpFA~|G`GN>>89O)%^xNz=Iy*zY`(B*yG&)c=1%Q|19UgjHvuE{*g=RDkw*Y_f zVN(B+vYx~$$;BcW*ClW`77SN8Smv9sGWAmW;bXjjCF(nPugEVeoUW_5{DU9VbrE-R z$m1d~Xmp?rFbpyfnxq)+pyRr~MINZ)3AD}>ffm4|jtwA6!B-4Jv4`vSNdkGNv9k|( z&wvL(l+pjb+uW(Xgj})hF&6_*g+UFwol4>A3>2kM^OHyFXZzYVQklq9B)N;9Q*I+M z+2VGCWXWbVRl;MPHi@0zm8bZLVCL`==fDx~pj&cX8=h6}_8xfvkSZq5s`sO-P_4A7 zz&8q4lpuJ4qH(k}Gsdrwq%hW@3NFD&{e(4bJ>J4gxS_i z(|XR^3w-rl`SnJpZJwm-Ym9W|^FdjskVQJ27eZ@~IXm+Td~Q-X`+?uPu_DTg zH+MZHqk8M+059nW)w$J7#;A67Gs@Z5!F!jfb$yM!PkZaNTqM4Js|dAObb1MyHBs$T zVulHj`{#4;bMYNBWn{^onN8d7Mzpi-gX%2jCy6O9mAtW3@%ZfO`m#RE3w}qSJpnrp z@e{y7bCQL7Gm%7bTp!N98+kqE^#{6Ug?r<Dg#=Jwg>|#AEBDhe(0fcL zf+r_d4D+|^6UucuTf78*&)ZR>YHnak1O0le0L%n{o&xssB`Kpc|Li zLSLc#)87PvL-ul?74uh2UTB5(-zebLQ*%tP*SHv`m3djqPyo$6@{ z5Q+cd<(Y3xqHm>njdWJF{SR*+tQ>lGOK@LEgEl$#zIc;b1uNwmJhS;8zptj3W{8__JJqW3 zq4<0OxhA4AUa6TNd)8lOWFP=|lH8%bf13rgtN(pQH?p0!qiH{2Mqdo48zpGS_WDA) z&D%)!R_^nIA?s$AAzmFK<{t^?q&)0rklvfl?JbqtuSN&e*@ps;xaEGkX^+ShE`z>) zpy_L6TNY3*KF2l?IQiheq9TRRv+NV)*wNa#yuD!JbCJ-8P=7&NZg_=%$ebinbc|W? zczFn6LNn>QkQhnhijz#bEOFd+A`ldx<>u;t0QBruU;UB|DACfgjcOk+{RJ%>?e~9- zj?z_{dSeQw?=RILCsy~&TGo6nk?xYqN0}*#ZW8st8?{^m=<4#NS(@Io3frn-r96;r zbLD8^ULrZz*p*DxZgrRP1Ect6O}xlKfD5lJFXx?22#NyQ)rrkF`zceL@Z}7S#F0%$ zOv=zB)Uk^7_Jcx-`I%PhFMbTSmg>6IX@1psWxx96D_}klTxHm`{qKlhn2CR1j`h(G zs*qGI{}%@!x%dy&-X9xMGiPJN^@=8 zcKU?(K&8RXHW-TG*YOkg{ba6kCVal0=}y(;#R+a?Ft0)$`vpt#o8D;#?+Zk%h4B|EU)j2 zAJcFj%@Yyua4G>auzs8EGmwU%ujZs3LX>%tAakW(2GdWxLD0S%e7t7dcw-U5rs(Ky zN}3rX=f@Bv`S|4P{kjDgn%d+`?-<*J@?f-a*i@@%{v=jI7m}kLp2$TAlC)Rf@NB#Y z7M~Cz(gZNQ3Rl!YOji1MXceUDgL%Ok;3axAE%9WEsfUh4O8P;G&if@}>9Nc6*`mvT-H%~FEQHPT z0FV3{2oaXEIJ7P(iQU)(EC|22elJG9I0m`7)Pi{}Fw9oD-+iO7{Yb~>5@-9(ufi!X zV!-Ng%KBLQT=D5jL zmK>Zfu=abIs4u9)6uI9MUA-r4oA{)OB|Ef>VxN+Ph)IieaZ+iux-{zS1U*IhIQCeo z6TpJOR3W$J_Hb0tqBFEQZ-ABp2FsHxJ1^YedIo9-z}N>M1W#WDI$K`#B~W=NWOABD zSZB){PXZIb-YMcT(dIj_5d;CaTCW3NeD)KN?TVL-$~;1LW*ixS|d(?DDI_Sk^D5U$hPDmFEW>eou(xlFKbe z5_p$G?}Cu3iKG+w4PG^pPGTd})nP(!PbsyT-Uw;TJ)mqrH4%9h&{dGxjkiI8eycz+ zU1k)7TCi)ypUAVU8CN9fxl<#RqByt9ZTpG9z>PL89Q)fFQXnQM=Y+^_J`CXyZB(5) z5@;z&(-ze;TI+i4cEy8dXF|T@{RwKY4u5{;AKtkn#Rz_WGV~qscOP7moxVP{WizG2 zf09rt#{d*0gkgr=nozRoUMdXj^=ud| z2r)llxQ+`Tb*J^`M+=$^;ntEOj_%=PIYUN;wG5}yQ}#8f(i4efkD@%HNx6qJ{$9US zgaf-_&7gGz&=Dl*+CQ|tS(8#&r0?KWgH(!e++>(i zUTIs&>^96I`0WX&e9w?n`A3Jqx=U!GG6}WoAN;E&mZqn7sN%mww`56@^`E}r8Y@zjG}Hx)1{JZ7h_RD^Xz z8PSs?NTll0mY#U=w@yqmZS^@(Vrb5P{{{-%)eWq=)=)TFp)+mg@BeXaI7dkxE za_>I_#{5l;Y&w#@I`Ly#?fJ)KHmwmL_Tu`eR`Sqk-#$5hOleQ-a$>}EHRyKJnl+re zmo2ndI=QXp^SSUM=C_y6|4CtvM#A7K1^^fF@SJ=KD|jqK!cve?{aF6NEbxB-{=7)= literal 0 HcmV?d00001 diff --git a/assets/mailer_templates/build_production/import_data_fail.html b/assets/mailer_templates/build_production/import_data_fail.html index 625aa265c..60521a08e 100644 --- a/assets/mailer_templates/build_production/import_data_fail.html +++ b/assets/mailer_templates/build_production/import_data_fail.html @@ -21,6 +21,16 @@ Workspace Import Failed