From 1b66782dcae6f261f922c56c409b12af29b5d26f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aur=C3=A9lien=20Warnon?= Date: Tue, 5 Jan 2021 09:44:24 +0000 Subject: [PATCH 1/4] [REF] event_*: refactor the event foldable registration badge PURPOSE The event foldable badge is currently not very user-friendly in terms of usage and style. This commit aims to re-work it visually as well as getting rid of multiple technical flows (unnecessary fields / no studio anchors / ...). SPECS Preliminary cleaning : Unify both foldable badge templates into one. The "event badges" report can be printed from 2 different sources, from the event.event itself as a preview and from the event.registration as an actual badge for a specific attendee. The implementation was done using two different templates, leading to a lot of duplicated code and potential issues when editing one template that would not modify the other accordingly. This commit unifies both templates into one. When the report is printed from the event as a "preview", we simply check that the attendee variable is missing and print placeholders instead. Main changes : Rework the whole foldable badge template 1. Get rid of unnecessary fields The foldable badge template used several fields on the event.event model itself that would allow customizing the report per event. However, there were actually no way for the user to access and edit those fields, as they are not part of any views. We therefore removed them (badge_front, badge_back, badge_innerleft, badge_innerright, event_logo). And instead offer a single new field (ticket_extra_instructions), available on the form view of the event, that allows to easily customize the foldable badge and adding instructions specific to this event (how to come / what to bring / ...). 2. Visual changes The report was re-worked to make it look a bit more recent, as the previous look was very basic and was not very attractive. This was done using a specific scss file that allows defining rules without bloating the template with long style attributes. In addition, we added some pictures that help the attendee understanding how to correctly fold the printed A4 sheet into a badge and slide it into the holder. All the information that were previously on the report should still be there. 3. Relocate action from website_event to event As a bonus, we moved the reporting action from website_event to event, in order to have everything that is related to this foldable badge in the same module. Side note: scss disclaimer As the reporting engine does not allow complex class/rules building, we had to implement this nice layout using very well placed background-image and "pixel perfect" sized elements. You will see a lot of hardcoded numbers, mainly on heights, but it can't be helped. LINKS ENT PR odoo/enterprise#19349 UPG PR odoo/upgrade#2599 Task-26779 --- addons/event/__manifest__.py | 3 + addons/event/data/event_demo.xml | 8 + addons/event/data/mail_template_data.xml | 4 +- addons/event/models/event_event.py | 20 +- addons/event/report/event_event_reports.xml | 50 +++-- addons/event/report/event_event_templates.xml | 208 ++++++++++-------- addons/event/static/src/img/how_to_fold_1.png | Bin 0 -> 9791 bytes addons/event/static/src/img/how_to_fold_2.png | Bin 0 -> 10341 bytes addons/event/static/src/img/how_to_fold_3.png | Bin 0 -> 7273 bytes addons/event/static/src/img/how_to_fold_4.png | Bin 0 -> 38673 bytes .../img/report_foldable_badge_background.png | Bin 0 -> 6587 bytes .../src/scss/event_foldable_badge_report.scss | 70 ++++++ addons/event/views/event_views.xml | 10 +- addons/event_sale/__manifest__.py | 2 +- .../report/event_event_templates.xml | 24 -- addons/website_event/models/event_event.py | 9 - .../website_event/views/event_event_views.xml | 5 - 17 files changed, 250 insertions(+), 163 deletions(-) create mode 100644 addons/event/static/src/img/how_to_fold_1.png create mode 100644 addons/event/static/src/img/how_to_fold_2.png create mode 100644 addons/event/static/src/img/how_to_fold_3.png create mode 100644 addons/event/static/src/img/how_to_fold_4.png create mode 100644 addons/event/static/src/img/report_foldable_badge_background.png create mode 100644 addons/event/static/src/scss/event_foldable_badge_report.scss delete mode 100644 addons/event_sale/report/event_event_templates.xml diff --git a/addons/event/__manifest__.py b/addons/event/__manifest__.py index e5256ec1d31..54b911e6b85 100644 --- a/addons/event/__manifest__.py +++ b/addons/event/__manifest__.py @@ -55,6 +55,9 @@ Key Features 'web.assets_qweb': [ 'event/static/src/xml/**/*', ], + 'web.report_assets_common': [ + '/event/static/src/scss/event_foldable_badge_report.scss', + ], }, 'license': 'LGPL-3', } diff --git a/addons/event/data/event_demo.xml b/addons/event/data/event_demo.xml index 7ab534cbf32..e51e5f0ecd3 100644 --- a/addons/event/data/event_demo.xml +++ b/addons/event/data/event_demo.xml @@ -14,6 +14,14 @@ + +
Important ticket information
+
    +
  • Please come at least 30 minutes before the beginning of the event.
  • +
  • Tickets can be printed or scanned directly from your phone.
  • +
  • If you don't have this ticket, you will not be allowed entry!
  • +
+
Free diff --git a/addons/event/data/mail_template_data.xml b/addons/event/data/mail_template_data.xml index d7cdc868182..082d5f3ff59 100644 --- a/addons/event/data/mail_template_data.xml +++ b/addons/event/data/mail_template_data.xml @@ -21,8 +21,8 @@ ${object.event_id.user_id.signature | safe} % endif
- - badge_of_${(object.event_id.name or '').replace('/','_')} + + Foldable Badge - ${(object.event_id.name or 'Event').replace('/','')} ${object.partner_id.lang} diff --git a/addons/event/models/event_event.py b/addons/event/models/event_event.py index 332c132e6b1..1ad89563585 100644 --- a/addons/event/models/event_event.py +++ b/addons/event/models/event_event.py @@ -44,6 +44,9 @@ class EventType(models.Model): _tz_get, string='Timezone', default=lambda self: self.env.user.tz or 'UTC') # communication event_type_mail_ids = fields.One2many('event.type.mail', 'event_type_id', string='Mail Schedule') + # ticket reports + ticket_instructions = fields.Html('Ticket Instructions', translate=True, + help="This information will be printed on your tickets.") @api.depends('has_seats_limitation') def _compute_default_registration(self): @@ -162,12 +165,10 @@ class EventEvent(models.Model): tracking=True, domain="['|', ('company_id', '=', False), ('company_id', '=', company_id)]") country_id = fields.Many2one( 'res.country', 'Country', related='address_id.country_id', readonly=False, store=True) - # badge fields - badge_front = fields.Html(string='Badge Front') - badge_back = fields.Html(string='Badge Back') - badge_innerleft = fields.Html(string='Badge Inner Left') - badge_innerright = fields.Html(string='Badge Inner Right') - event_logo = fields.Html(string='Event Logo') + # ticket reports + ticket_instructions = fields.Html('Ticket Instructions', translate=True, + compute='_compute_ticket_instructions', store=True, readonly=False, + help="This information will be printed on your tickets.") @api.depends('stage_id', 'kanban_state') def _compute_kanban_state_label(self): @@ -434,6 +435,13 @@ class EventEvent(models.Model): if event.event_type_id and not is_html_empty(event.event_type_id.note): event.note = event.event_type_id.note + @api.depends('event_type_id') + def _compute_ticket_instructions(self): + for event in self: + if is_html_empty(event.ticket_instructions) and not \ + is_html_empty(event.event_type_id.ticket_instructions): + event.ticket_instructions = event.event_type_id.ticket_instructions + @api.constrains('seats_max', 'seats_available', 'seats_limited') def _check_seats_limit(self): if any(event.seats_limited and event.seats_max and event.seats_available < 0 for event in self): diff --git a/addons/event/report/event_event_reports.xml b/addons/event/report/event_event_reports.xml index 0bbe4a924bd..91543565246 100644 --- a/addons/event/report/event_event_reports.xml +++ b/addons/event/report/event_event_reports.xml @@ -1,41 +1,43 @@ - - European A4 low margin - + + Custom Paperformat for the Event Foldable Badge report + + A4 0 0 Portrait - 5 - 5 - 5 - 5 - - 0 - 80 + 0 + 0 + 0 + 0 + 96 - - Registration Badge + + Foldable Badge event.registration qweb-pdf - event.event_registration_report_template_badge - event.event_registration_report_template_badge - 'Registration Event - %s' % (object.name or 'Attendee').replace('/','') - + event.event_registration_report_template_foldable_badge + event.event_registration_report_template_foldable_badge + 'Foldable Badge - %s - %s' % ((object.event_id.name or 'Event').replace('/',''), object.name.replace('/','')) report + - - Event Badge - event.event - qweb-html - event.event_event_report_template_badge - event.event_event_report_template_badge - - + + Foldable Badge Example + event.event + qweb-pdf + event.event_event_report_template_foldable_badge + event.event_event_report_template_foldable_badge + 'Foldable Badge - %s' % (object.name or 'Event').replace('/','') + + report + + diff --git a/addons/event/report/event_event_templates.xml b/addons/event/report/event_event_templates.xml index 5bad64a8e18..dec5673f2d4 100644 --- a/addons/event/report/event_event_templates.xml +++ b/addons/event/report/event_event_templates.xml @@ -1,104 +1,130 @@ - - diff --git a/addons/event/static/src/img/how_to_fold_1.png b/addons/event/static/src/img/how_to_fold_1.png new file mode 100644 index 0000000000000000000000000000000000000000..61ef66f7ced8cb32b112c5d81f88b1ebee3663a4 GIT binary patch literal 9791 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 HZr%SMuoi>t literal 0 HcmV?d00001 diff --git a/addons/event/static/src/img/how_to_fold_2.png b/addons/event/static/src/img/how_to_fold_2.png new file mode 100644 index 0000000000000000000000000000000000000000..4dd0fe15b587564fa465fea78d20fd8c8b59c538 GIT binary patch literal 10341 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 Xekm~}lJj(!bKOAK2w8mNLHPdxe3!Xg literal 0 HcmV?d00001 diff --git a/addons/event/static/src/img/how_to_fold_3.png b/addons/event/static/src/img/how_to_fold_3.png new file mode 100644 index 0000000000000000000000000000000000000000..93c20445a7995141b6e2558ede44ddb8d2809f67 GIT binary patch literal 7273 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 literal 0 HcmV?d00001 diff --git a/addons/event/static/src/img/how_to_fold_4.png b/addons/event/static/src/img/how_to_fold_4.png new file mode 100644 index 0000000000000000000000000000000000000000..d434e4f6a3c6f40f5c6bc92197a6450a9ad70c95 GIT binary patch literal 38673 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੭Yu82aN~#yImOk@ z2}@{EmZ=U(pcFH0pGf&dc{TCq=;zrH{vLy#7+QW3Ha(A)4c$jhU+-2cyaQEV|ATZ^ zJ~Y0E1ss8Eu?ZcEEnpmRCYf~Ey!t*q=T_&6|8((AyQ=nAqbKB1_kc-NBD=1PU?+1) zeGnj7N&y$f^)@U7(%u9c2%!}zQ)q-4^i5wmZUU&AN5f3Hutso;5lb%<0p?HCTIbb2 zwoBXoiegyVl-Ql!*?x@rsBMwB8D#62t6R0mO4Gaw0z!~}hLhfG zp?L1Oj5A9SpP2N7cf_vAH8zOazXt~>2toH9%KZu2?#BQ!V@7HM0w;eK2GQ8?kVh4J z9;}3k{_Br^EkA8{=+#hKwk-drDy0}Mn=kcG7SW?$Ws#$X{+CE$$=pSFj}J-+KG=r; z-ctLGaSU(t=XouJF}#nB4Nf%hV#-_XFVv~P0-fs;Fn$estaoV~lwl<>bX8R8ul&v~ zuWoPC;8F4gtS?ocUHY*Y)RRf;UyBK5sHbWmK&@o!>FzFgp?>64WI-b;YFIP>hT`=p zak>2YRWwPHj)0Wk#O-hI15|#3!B$yY`!9cH#^B<_|C-mz%Ia0kSf_!j@f?rHTUwbq zkja-?FsO+hS6~h9p0qAIwR!2%8BemRTGViRU9&70sEyv|x20X^MCgoy3%FTa$JUvP zDj*>6&3)HEXs;QKY5cLU?>}z4#C;62Gg6KPR7@;B`loCjM^qXImMqWv#7uZ_A0~UK%c+9~e=cZNCsqj0}rtS5U z^Q3gCq;_>RwIPSYHRYG1#rh!X3c|+21huPRIKQa2;e8}GCAuAHxPtIUn}Y_Iz8orx zC>O3Lvx-WAVu*v)-shT{i94c%U{Elmc|7=!Z^=w)+?L#*W-hMI;7-!b+Nbh8RQ5TY zf13;H+MyhK11%9LDZ}L_N8KD%eSIg;#{ z>YPB+PjU3jRYm3?j=X^W14~ub(h5zntGyL1^3P%pJpRj0;3QYn0cZ0LeC$M6)34Wf z>e!1&6E)k2N1^Z(G8VZ4vv$OS~$gU0klnIy&7=13+mnW;K z0PS;w`|C3m4GOF@DK+Lc410hgfN#X85c;vb=GJp&5H9f~5wnIzt^NG@b14Q1>)oM>E1U1B zgX@tM82u?7i{gw#I;g(>{YZ2%n_#Lf?M9rp0zgUa&6_tuq28QZo14xRRaLn*!?uGt z3LjVUb?dQFt6`b*p`(!yWCN;HZH#tH<#KIfZ8Xg4F{3C=J{G+`5LLn{$zi23P+;z0 zD6q8Y7a#xQzca<(x;~iu{34U2-qQXMFaerZnhOuQ9Vml;NQjAxZ0+n6WuN;ATTFfi z;K<6#YPszkA6Cw3;ML^OT^5;~OfDT$j=iXMsPL>yb26yq^XL2x!pz1cu9Th*_uZM) zn9aVI!>nl}&BVuthc@0zAD)Y(iTaCx(j#S)skk)P65RJs*i_KAdl1B$1XD5`^eLA? z1rMkT!(c&w5(Ruu4aPgD@Jf&mN>?UYjt*_~1aN&GZb83~(r@*zzkJS??}^!?;U&^1 zDdB`B;5$#jif1Q@95n-;**)nE1(`p~*Z$CN9uGaZdLf)S4oc?pLoyO@+^FU zs%d&Y%6C~6Kl=v=bCL}`JMOv9ZH<4gT{Wdo8Hv>DX1W|M@e6^L*<$jz#j0X~{rWGv z6>Z!3pCWs}^STo`?V(;=x#X0^q za~{1snYE`VnO2dL!*1M=;zEWd3a$UhAYN3GBG0$mifU9aog}fDffRP=bL-U^jf{4)~iP z_M@?Yz6L@OP_;iFWuq+if{8ZdefqXfKn>R_(tsD1U-v_T^6>C*I4Wx7?9u>2J!5F+ z^9zc9=(|scl=vML3<|s@`3+mOj<}}BXQ3UE~&)91}+szicD)TMABKhTgkGUf+&gqs} z!hU0|Z;au)6WhlFpd+aE%2AAh%NK>bi?O*mqq7^l&R}HZ&ad@nJ{1=iA1JZxO%oog zc6|6gIS++L!rXS`_0#)zL*F?#@llqd{~2^`Bi5WNFuZ(3<-JwPG+mOFbz^g+NKRI9 z#U&DN06OpxSh{G4rRC*IO9zL&B|uI5v7LvO!7Y8Fe0cv4tLUTY}{M6#Bmt&Npi5{iKByyh-Sgt~bJgIUp>-y%4fM_>kQh0GB7$PaokhtggufcJehFy{LjXJDxa!2HZ>0 z5Ir^&-*z(xs{)JImmFk$V`F^F9ZADhA(PvRaxXvhu2S6oYB`7za68J@@EP~#WBnzE z%2WKcDQs6$B za6#h@ZV4C}8ObU>?Z7aH76B-yBbpim0da=^b~9{PT>{_!zRLSYCKOlipJTW{`k~8p zRG$HIdN@GMf0UVa=eP!e%7FCXk?eupZy$RZ`clxi4c_6=k#O)D1#xk^vcNBd4m4b@ z`KULu^;e>692$-}H|#!nadZQ#hBLh;d{>O(`%R;VISJ`T;M-ib!YgONnrn<&llOk_ z6)Ctl>-C?>&fhSpb%`b$jj=(7P6o2&0wYS$bCPkI*&tF8DYY1L>X{C*T?9)EAFybB7S>}qFD~Kj zCgAxE`Kx=s41&yCIRM2COX2$>87q*oz(5G}wqHHR?u*{)Sl(pJ1=XJmldqA)m z;=D4GZUv@*{CnAK@;C{Z#rZY#NFE++?%-W(nv}f2WsA4?)X3!5-cqa*NKqWqiCo3d zlIN0?8Gi%GdqB$d%IFfcTYW7u`p8C6cftxb>n(k(Ff zrmj1K(ZHIUT$Bq!X5*heQ7&Ro`*36bxv&^j-06116M+xf3v{0ULVtl zYZ?3g;RQylbz|)nUls*>M)7lVQDNWXuQb$Tponl25>2Onz!A|mny%G zaBFVTrm^C>)Ya9Mf$W=+m40=Y+XXSg zo61Cn(Eg$WAC@zEvXNK2LM$ggAFJT>WpO0LAE@%dZ1z&bxz{Q(fKN{r&xpYRYlfBsb;<>g(&V5M*pvr^ZtXi{~HD zT&ibmOwr~beK9=mpoN}M;0VFLpI!0Hxl`T_$l?z`7X(tydaNqq@sqL4-|qd*5DNu+ z?cRW78LNY{Tuiy=Ougp<$YUY$ML&kZ@yb6H$bb6HkWXLUA?{b zYwPPt0~EH^ekgpve7=JUruN6)e@u0gjRElzbJ$SwM@4Oz4d#^dJ? zKKM%=n#b5OH^n8<6IT}jm4)i3`@zW7w=%Lm251zAsOa_l#DvZu#FUdhh^O#e=ob+6 z3_0p#rV4r9u^uTDhwLqj#UP7z8Lfim6XDKBDu|2_Itb#KhVl%j-UhYOtsYieHvdnR z)3Pk&8Xv9kDzc~-g1FQgm&P94Li6TepzQt$i)sb@<#20ot-UX(b$);0jER=Jtg9gT zwfFIsxRO$@Bz~Di{{s&ps(P?ZPv82VzOBEwxL^gbt`MB~55CcoT`HhPfcAU~gFT6= zdK?yjE?|V1S>v}iSj!>uQ%*w@-oMjDMH2>N@+9x11_+;m*+*${aTFfgiPr#cT7hcge`F!)uDaW-oR3p-r&r;S zFNwTb`>p?nTG%oPKw#S66q}Q?cKq2r$t);fW_B8{g|q8-=>-%Jx!sjS&S;Ui>e*Yo z`A&v(32@YHyvrLKsX%v=J0MnyA~B-NB>1`Q_6%@4Fwr%?y+h28JuA&=!rm%QWe}4u z)G9^IU^LVH&=KdK=PN=D@sy6vYO?U+pZ9gv%61^0*QDFv^#qPZJTL^#w|*TI>;cbQ zu$jN7H#1oSji+gRdE{dHYHkIDnB6}~T&t6imnhxtkk7OY21gX>1FRmHni%ox`1%UV z%E^^lkFr4;#2AP_oKY0Kdji}K5{m%69G|W9-0Ia^zZ8 zUm#Dtx*uf<9v0Of$aIo&G2RP`QA7`5I^L9D>k+5FY3C*r^A6Rb7Bai+{H_~u_X%~) z0pSAY1Msa?btR9(@?6m8lmmI~P&MJ&JAx`s5v((CI30HzPTF@0DsFa?=rq-v*l5@3 zu_2ivQQNAEsE1cMG6+nnpWW9D6@pXfTt%_-mh0o;c$cQx=y?(AICAJFJJdU|6+5C= zi=v81640H<-qEHJSAp08Q2Ar_qGwhQ^>e2U&-n+_Xk}S!<^Y+BqA={8JFO=*&&Vc}=k?E)J@ zVj3b6l6E`qze}Bkx~^yho7to|8@fl3YyiEBMn>h>SG673;5DU?2Z!mZZl%p#5DjI! z6hD4$X=w>jl?e%*%)npsf5Lt9YF@AU464v|Jus!Kzki*8nX?iWbFk}_W3t!pp{Du$ zv;3XHyQ=}*4g--?byLF9{BcraOn&K`WS5(Ee;ugA7gu^xvLVc4y7V<)jD}$Hj%(fY z-ub2WcUB#B^$_EZcP~3*=pLe0oYL6Awq|5!?|^^MfjeVmZEYOo&TBv8BVPAjp5ea? z!T=UA2y`aZ@97JG%BNo~kTywc>%NDJx)196138VykZuEPr&rdRD+2cmaqQx<<_L?Ex=kf6wAl%q+eYHDK&sDLFek10Ag_FaP-_-rdCo zj7AeZBmUdAk}M(w5wm}{c6Q#~bQ9x_-i9+&4M(s;cm)n?sqeWPQjga7_Fe%(kzkAt zXiUR{f|<ZQYze==IU6+WI=m$|yiwvbJ6inqzQeuQE5ymh_Ni|6aa#uUR1utqS@M zrHBt%3Xd&nfB>*FUD}T(isK3duPeYAIg5K_Pa)Zo~TB0FqR$yIRTHy zZwslLwGJXort#CBBE>DWs+%8ZEtlKuliW0ntiW9F^H7xkg{On4Qtl3fy)jvC8C&_! zEgnuC-N$ntYe;-gF1q2X&?g0^fDP)oJyB7bhmj!@AwmcM&;Q$ZKFJMbw{4a!N`(P#{J|-5< zgT>|4V_}AtTBDXA8BxtLj+auHkHVcu1I`!}Kk-$19a&ZD6?0Z8RSfgKZM~0T0XS9L zWY-y?@Q(FPSfS2$v!1wJkE;t$l)HDTJ7K;8|MU9Q`EGCbP#%Vk>sLr24zB-B&cj%| ztItYKU0tO8onGS!xjoG6Jj5b~D*XI6(>?aN6sB?nvo;|yh$l=846BZ??;e1b*`zQW zPC?M)3LWl3)bSup*SYUD&PnMk&LF2^-~havXA(=gdh`H7T+O`(6IK?dhOnU-{$5Q=zk^Skm82sp}9H1yfN+=g`--LZ=A1#>j~; zMU(YdH$y{1xkuPUB&<5Gk*$GAaQ^UDto{dl^k5eGk4ZY9lc|FN84a^vFVFrilWpSu zfoAP^y7#gb6j?bG7n(X%1`8YTKlDNOF`qyuBfC>wA{Uc|oL(cWf@HOcRXW#y%<>jw zGOH$2)tPPT+_uAeNbYSzcp~aZlbM~Jx^zMV(#{k#)b{Wur5kW`b8p?vl1$jwEH(kUApaB?B8V1zy72x!4 zXbG#${oo!Vni4ysU;$&&0`OQkS88>KNiHfD=`aCt_ppO?FPY-mMiX zyCzeMaEw~gJHzzT3uWd0K944Lmz1f2M4U`ogA-48}GD5{PjQ+U- zg8u2SJRhP5wF@gU`%hFiJX+`XOkrHFU#>v21UZw##%Q1g5M{<=5f?@fra17$Hs#5p zc~c+}wuuY`xHwOOJ#s(%m4C)4XI?WjlU>CB3_kUYJ(4fl4((lirm3mfzA_obQyVaM zwwfMo8~x7ieVs{X3@2L2saSDiqusG=J7E`30(AW$`VrFJ<;%>- z*o@6y9{{<&r(oI6r`ac6|B%S+1Y6h&y7r)mn357ca4Y=`(#PY(Rm=zz8*lvWT8N)R zuBQFnAo=zy1((25iuHDY&<-{;Ur9a!Tl^bz!9$)hx&5Yhbqy!s=7jD&!wIs1hv;N@bRc4$@QqZ%F^E3`aZRHs+18R~vyW6|Lj{ zlLauVr?1^-w%M1&$h3@dt}ysMrs-zUR+YmfSEzqEr2yF{mABdFyFsm*n>H?d6l9Q1gG+NEA` zuxiSxJ^(Be+sWO#D8q6vKa{5`OM6GAT6x7pb1DeL#963b&oB5A%Lj6(;G$12ud-ZP zmEJ)15~*>(Q~pg~i;((FlxlG?q-8i+=WfrE8%5u->;x9TgMP!VQjZ1$;Lq8=irq(1 z5Tx~Mv`E%euJk=GB%DyJd+)9Dr^#>O4sL(J=IRCX^hvAHr^ah< zlr_&>`APKQ94Zs5#%V3M!n@XK1wCj`J-lsnxf;Xl;JOi!jI>(NN^kNzOni;{@#DvB z;%si=2{-RDEa-`YLK22^--7^LF~(13L!vc^1~V~d>ouwQ&AnC5tLZR{0H%lJ&7N;W zXCd=%nzaNQ(GO8|1^zG|yJ6!+Q2roHJK`1e8bMSLG*eVzH)D{EVAaw3UefvHr~3PX zKPNg~W*U)k()CjUrjj5q15<(;3c`IkcYl&nTO5cjRz0=`f-#v12#e2cORG@3*zHq( z{v)I|0HRrTc6RAh)v1+=Y$Q*e#;yw@rRNPOk}qH^kE?7+h9A26@APXSjj0$)SjJ#l z8DeOSZR4EBg2ogXD7qJfMu_IyCY`+rD#dh^c>Y&Qov{oMgX_&RR-g}~*06t^G=ri! z`#4ZlIZn_W1XgL22(<$U20kFdx>tY7%5K;7kOB^D<341gBx63{b5pVU7iDMDF;93S z(j!v_H2Sy~6`02wFJq5IbiM?Q)G0WFo2-S<0+Say&ErIc=O7+~CeLJ#1MU5P1NGCd z5Y7uy(@X%~vplY*Eie-M!cB-%x%TwgmlvLlL=#N_k0PJ!s!?cMSCsfh71*ycpjk|m zTdF=)&q@Y&1{DJ7OE!?A8`GV62oZZmeu-( z02wao$Y9WEQYyke!~1k^{&swZPV4k?cVdT>ekz}1kZzU?1Yw}2xF}(K1ME@boC}t> z#(hDjnjrgzBaI*T8X1_2%eV*62&UPhl;{(0`v&$zcCmJ;wE*$fA$aXy2qOvyxUWDN zfknte?xd`?~%*=kWr`+s3F9*}qA%543 z3@IjV2!HivQOqR-z0s(I!-)Yf>4m-d)(Ls3DewV7qTIcC!VfYdh&sk7 zv!LwO;3lJk`wATc)D)Q{<9{&aoW8cZdmUMfF_Mn+`H4E0oVS;k!_lxNTC+mmmkn8r z#~J)#f5{A;as7*K_LB}-AvOu7pWaiDe8u&}(##2*i&emC3J?UOb{=6uASWTCh5m-# z36l^3*ge}m7R@;jtxwcei4?}|3p1M6b*k*{As_0q)}Ca-gkOZ=IG=$!Jz1AToe>g&szpc*D?LFsp8*(e6wGsEQrXrSyJ9^73*iuvnxpeoV^; z^Tl|5ARC;qfrbTi1PqkafBpLP5iv?U%&fJ}|4R0=HAXHvEDMT+^E4oN&XsNWL;v)2 z)b?Z**IQPFazp{-s88IufF&vk?MpCH;$0KRjBa+@0ZrhypAi~#S=~VC4>uFOf8PExaMA?kO2hs?pK+k4)QXLC65y;u{~D#*O=&?W zvcrsw&pucBS!9+uq&m{mVd8uoX(D*tkNB4wlL&OXH~|3B z=`fO4Kz~p-0oW6+8{OfbBdP^(76p~$Z;3!3%zM+Ovsayce<(5jAGGQP8ry3V47CZZ z441nAvmjEH_9UgpIwd8g zV>-N31H^t%W;8*Drcx#{J!sqIq=Q7iGS;mh*S#~B&v|`kJsbVCD@{_;(_|oXtN1O( zB^Ng-Xv{2z$6FwD#-;Oj&15KTY*x}bjn0ql!{0`nmV+xRY$W5c-@iHEf5qS)t7sl< z;hgjA8M@B}yx~E)UCSLvPZnf*`7QhW?J2qTucry1D){-NM?3pS z+Z+s!1}r6truUv-x)t>yJIf?anIVd%NaXqj$}k*zLOl z@hSEk?`d?(Qe{YK&=?Gqz0Lr|+PJH4p_(Fl?iTbZDodfYvuWQV|~4}us0!9qe$n8!AB#rWvt(%IOxkq zUab6BP(R~jvqkcM+;{KJ8eGqAx>#m^4%b-dL#7L#k0ST)xT>k>!-o&-oypEYW;mhv zvH~KPx`DwzA1D3pfI(9ow?CHr@R=nL6Yjw$6Cs}+@2)ZvhP_@7!D=yj(JOMkRR=dm9ar(J^D^eR7^2q`Tqoo$kXFb} zzgS`@f%`~d@%h*gW0$b>VTiMBHYH|=Zv8spFkPXMy}U8GY99paTv7uMaU_X5ny@a( ztE)Sob`iL=VM{zu{xogPvF28HtqUYzG&5Rc!fd%_76i@p*z^mN9mwL(By=zD@SguO zOKaGZ5vYcbsOd&iFCcpK*;C84(aFK#1<=)QAcWeEiq@!$I6cSPlj?b1Mg7F76s3ng zpRpz>MBg9w#^elSEahX{r^mSHgv9fHCb=&Y?GHBgD3F*Oy={+$pSOH3Hw{PKo6e`F z01)T{JlT<+LsHa$k59={`DUI0pwyeG?!!t*;)1qI9@ld_<03j75O%vg}E z1vRtKcCykEbXf?w`O#HP3O`t{8@D+Y%%6(*cGpv%ZIl#{mnNJ7J7cV%dqq+3FKoCc z4RfCc#;*S^cH3Cr+PXL*ZQKiCD?p2n_pJ9%L|$!eT|k5wQVK88D-n7%i*-0sv$~K_uYP>j=K0QD{{eR5L?G;{AhUm zw_RtF<4-DOuR3DJ(Jk$FY)4$`Ho~;p^X$8Srw8_pyJ#RcKXL2!Z8HIzWPXZXN3yZ9 zY-mkRc5?E_)R!-3$5PH@UH1I7%kwKyIZLTN?X|Ijk$sp+P~RAN{@!ox zgZVQ~ndgKB6phPdW%D|U5FSSeI^9NDyAR|a6;DJ48_{a` zRRZ&c!X8=P)8!GTH0tiN?_U`c6SMXGc`>8F$?*VBLzLfQ>`E4<3Z8uiuM|q)TIEI# z7JntZ$|N@ClGq}2&tx1{XLlrTzC+_npK*K}(}UKL0}E~!8n`rTJ}NR>#|^wbzIyEy zhUjVQUp=fkXZv}R6iQO$8bnAs8X-kd`JaD`>KZvyUP69C`E`e0hk=Ify)u8$uNk+yRlUDv zKFD0<*>F1teP2!j!38QU&%OlmVMp)~+{$i!b%FgbR=hgNX)VV=6YwAa5>>O2?Hmnhol+Z@4>fj=es)tYcyJCzZ;xtGSQ zh&sRLPdZPL#cpDm2hh%@xLDR`u`mt+PVvK&@%9fH(mQmDqg)8@y7XSRxY5!%3Q6#< zxrLC)ww3QQFZ&O9uU>Zs=6(>DyBBGt;GdZmnI0{;3lus?t!yH~4OK^@ca$C_Ww<6TiFB4z2K~E|O1%k;Q^l zQoE57>QsW|0k(jFq}(0DX(q zkg?=k>Q&_Av9lr^3(C%(>ij|1^rn1sYb+nlk@zefoSY`j0$bcBBD%@lS2}E6k(ds< zpAxEDW4j#1G!mO_UyeJM{feZK;i>EJoUihnPd_JWZQiZlX1;FsF4lW!13GiLxN&TH zq(9UI+7R*cx{MhQVyie)52n|yURyCQQ1X?vzM{*fa$SzDZ|>Iq*`JwTX%AgHBrUyo zhazc>oJ0XC-1BvQ|YI<&eyZUjD&X^D_8M& z&R?oo#o|alD`{5Pd{@C2%1jie21nNm%LY_s2{WzHlU;}nRNqYuv$}si>rA17^_~)o z(t9mER|`KcJ*vI9L?J3$g}c^f6C24AL<0dm0KuqQPd&o8%sbZIt?Ad7LvD8adzhIO zMcyHbOR!E?amU6O&+vXn@;w^9(F9$`E_iq4tKIH-d_tOMtzYuY@5qnNxe0^v{PF$! zcS1+s@%Y8~l_G9gH$8CCuCR5DaPq+Zq;Bg*sY52}t`|RqjaNo44n-QDb&e97wK<(Y zD%|21l`6FXEhm$}3Zr!wv$pPE_!{JZ(25yF!qACUP4TD@z0ZXBbAj#SaPvJA8p-Tu z0p3qvEVeLA^i<%j z*BPoJTeyTDh#K&1IxP`Vbe!$P-ZT3`YZfjb^a-MHT?exGW7=&B>M71pH%+2*-91-k zcMq2j+haYGIhf)1S93oKAzZuKARGG@viw-cWA{v>`z3Z~s&agjWa1G(#@mrJgkvbi zG$~oDDpQyAR@E1KY|Q#+-kXXfAeKKp`9cFM@JBZ)9A6Mx)HSCa>txJld{`JB=DD?) zu*{#UU`Va&ZfMB#fHj5?0LJxa869`g%Byf$sYZo5*x5lHqg^On>L%V;84=ARyjxb8 zF3+az+_k8?73b(_eV7GGC3K#qqx_){B@t}oo4wkCpJsKjb?u?gPcCd0)Cw3YY0*~f?H|wG&ut`oyyXL%-1zSX^-ujB8^h4n7mV0cDr)3}Xe5)i_4Zd@whh?sPm=le_U6yiPV=teNlVQ)maYS=#5s zvt5g#CXoRy&O(7|6-v1w5KbP(*2#&jV^xRNL1!;(R^Q&i*ViU4+aofToX=|Ww4bdI z#Ex2$A|O4{R*)CIu*1&gVS!;9gG4&N&R4cFhL8P#b0)|sO`g_XEQI1B34;b&UvBOE z?gX?5lTlp;w7BT|-G_e%a=7@WYRQ1tyxx`06U_wZ9g(~g7N69`1X8iYkPJ0>B%|7oTnwIFmw<^M@MpP zd@p*0UBCFUWkY9zc0~ibyzA#}Z1w^jFWMjIVb85e99gG=oQ0EkX;d9L0kb&)4nF~= zj8qZE4Hqv&dv}kuqOq*&wTNBCN#lU33DmkKBzjmA%Y-L$lW$Qf-K5{8=Hi2T4qM#QZU2C5u*+Tmw_mG@}9%J4!^lu2V3 ze2yMZLdy57)sM_5do|7GOsI*);;9Gixs#L@3bs6R3v}H#f7QNW@VnOb4C=ei9@aEIpt16ej~_qEor-VT8XOA`H_~EY&+VDD{~Zww zAaraY&{CtSuw{3#dtfYZ`qieP$?40lI`b$bKgU{)u^xT`V<)E-3@^Fh0rrmVIT5|` z`+1ra=w{y!PK3LTI!L8ZM_S_>hbBuxYI&oPJIxyIn+_flACy5eAbh^WQ(5=f;B_*A z9|knHJI(BSEu^(woFOTr!sh1AUfrXy-yF-ug!3!3*IX!j9&k;yYrbF$AEQxzx=X{@ zY7Xtv{>wrb;xYUC=g*%C%F7!XnvH$DZ~p^;toAuc;X;^N5jlicER8?|4ka2Tn{V-Q z3zk1%Zu^uU!pZH6Rq8t0_x#k1i_Jxid#T+zxiK?mcuWl)mQr*Vc4)ifYmx&TT?uv ztnA2)o9yu&8=C@F9g8`gs+XydR5z3HIAY=lOf7P*b1-(OZU;3n!<$8Y`}eSoHsx#{ ze#stXsZYL|y56Q2yqvkt-X`_=nJp)nV}~OR#+4U2sVx+W^DyS=yfYYuf_ets9s^L6 zTF;oRz@x5ribZ@BXL21AlxC2Ng^o;SQWjt!9JSv-7)|Urt^k9TnM<9jkOi;De~z3yrOmw^^E3l$G=mttykuxzq5}2=^Aq zjK4DT#Gmk;I#OZqYz2$=-Ei)YenKkAAJ;#=RxcV?-u-IayeZ~hM|tJkic)=`>=V!} ziMwk*e?nk^-T*l}P@oV@e?aV#^!)xwv?;v^Qh?W0z3e(qiy`Mq^Lzq{fZfvK0*h{k zPMTr(*!S<`#92}=r9%5fejLw9zwSt_v;E1B^YZCE{XN19zYauvb?0-+EXdK95twJM z(Eh#u-d$}e66=J@%bn_wTT04Z{b8t@o9=ZPjK(h=E;=|@vIlA^2a#PBpRDV6hUJyS zWHmWUi|g?He)5}AzPfrCt>2nsw}Mvqu<@~+R44Xn5u=$JPn9zj2GNTg9woY)kJ<~h zlDujhiPSoL|1R?rQ3bvJhkgN0gvf1pP-k$x_!nkU{SxXZ24HChlj z)GRO8&z>VSTi3lCT(=@QFRwMwTG%jOWb8_zr&iUVojRM&2fz9$5Xpl?#)DNm{Jh#H z%%p$r3B^j?_osx>C6FUuSR_R5sGKGk>X+2QaK@Mgc@@b&t2 zS1yQ2W+?lXp4Yj)-YiGJ_>F_+x0660vfW+ z`AjdjuJ(!GtDTol6a$88$wU^yC7i(9h%|v3`}~o{kZ*$EBOH^{woWEA2r?I+?y^JFfb0aW4Yxl zx>xV?YEITNTLD*b(POJD92lCaQt!K5zdn}-9xj5DEBgv_jP{$-8<#iTxd~Ear&%jl z&cy-y#Yzf=Le-|&v+P8B;?l839V0HDG2OGO&7NO`c8|=y$T`QjKe;&W2+QKWc>$YI z{)(wRUY6g6Fe8aNJsnXjcG~WRLf}s1;pcRoUfK_h7{6!jf!6!4kVjHIRwgs?m=$bc zO1XG5KCVUg&}reU17YPVsH4<&9N<1r_zwgiNgIy>SM8GK{XFBqBq6rmyyCi4rqb4lqM z7(~EiVxI9>m$2;$QYOX#2WBg>)jd`oxV^`$(pRHCo0FB6y67mssrNa6Kwv+jBXZN08eU1+~?t7&hU8XU%T zB-PY-@G2NEh+(2%96tT3@}9t8iq$Ju_$ssrqlI$247FKPCBCU*OqOqA-KwtzQZ!xd zR?idHCNc597P$HRmGkRRD=yvbOzbQ6=+{N;d1Er!5~H9ld~vEI^=nDiQ>zbhn@K@G zRo-_j13b!}825gJD6wLXYeXg%s+eM;XuAHm|jE>zg$ zS){00rTtsh&H6_*$k#}ZZ=I5;6@8(;Li6-!uEkCwd+5e&r-9GSt0AnaMsef%2RvT- z^yV!hM+~RPy(Cjwq+Na3te0W5nEl4v-P&qC(@UCpoiiwiMiD1}lYiUvGx)?&;O8gO62S6kE<#tgz;Dwp_|}s809d6?b$9qOa*A*fw+ljJp_) zyL2{I9ht~*eSfQUM0+>0SkYqZ#tJ(%&X`lA13c9v^d;OJJUsi{A2No{ z(@QC2(Me)-P01yw(oO80qfn9p4TR+E^fvjkJSl7eRTx->7B;o50r~uP z+wJ?>&Rr|grOf!&M-@SYH9z#BhGW9+*%2S$}Vu0P$ck`8W+s`~v z7Kg07yiV$hNAL990vH$i+i%3?q~tN=mYAws8zDLJ@C1)2wcSr3SY=PJ3S~}$WU6mS zEnczt?Pt4bM+jOzGHlTAXhGZ5`w{BnMKxwWd(@PMM@MrOE~QG33{YJu-QDTv%vJz4 zKY$-f%F4>>$|I4QTIkEv+H9`$qbD>A?@)>Fxf0*GwpaY(ai$`Ap(T#VA73f^u9yV( zGK)45o7o)B(=c-kFfFoQMT&c|(>o%zOiLig1C6N%lS^J%%RA-_~K$&naTR2{=2oHJGuNyfAj^T zmu7ZnvMv(tF?0pz(g-ByrkkcaNZHJo5rc6W>12PdK>KpifHj04kOG`}*=Rk_E_I>i zk+vkMHmM)07F*NbUf8Eb#d{ool65#J&Y_1!vu$MJPJ-Y08 z%xQzX;|!SI*>JUZf*W-YXQFZ!=PqM*z3XlUJH2nV!xshgmAs#{mgLa)AzA1Mv3K$@ zY+z*cv_y*-v9fg`+#R+FPsgXtsNI@79@fKtD(j-%(RTRk=Qz=o(VlEqX6oSP`@u#r zx_qKe&K`S24Hc0h`xT_P6m6dfzT*Vi&*W8S_o=M?k+ph)FGyK6?|4>QiU)qh3WO8K zmMvjFGcn$#sW;i~g%yLnBCkbOz$!R&A(LW5lf_@52F2<(h^0#i_K5&p2UA*Muu@x` z19tsfJ$l8bBB951gH*^|Mj$WlUGn_w+!~y^D4t99)6UaBbFCPY=0*U7iQy3Bk}EOW z^H*3%2yu7v?L^L`2|Sj|Eb!Y+HkZulWz_LpZvG2n4kX2BWEEsuv-{~uLDqX}zn^>+ zY8rDJJQQkZCT$S+Q0Z;pL~!L)$!2;MqDd5!AI3UJUP(Ew4x0NyucK2Te$;|-lb>P^ z`V$7iTEZzE&r4A4Z~{?0ygBmsP3T@OS67*3e)^qckoZ->cPNc!dU8@vqDq`=Lvnol z2}YU82ScrP;@Pw->dE@D`N|xi&>0OH^0Obooq2l7ZDz4KZ*#Bxf{hKCXw}L=KpCGV zCZEN`93^-yWQ8~DguBFqgtQ)fuw)dIlCr42uRdYFgf*GdbHlh<i%N$N z+5EXT%b?(bM+vL2@%MkGwmorPRloPircQA&v6q)kO-p~tUzlurz9(JgzU^tjbfWjX z2s;K2t{r-Zoss)Nq@Jauh8g+Ndz5qsGI9DTQjsL*xJ4_V2aVy{3h~udG?FX>VL#3k zxjKIwrUM6rkv7Z%VJWGpwJr8(5YFEMNfU#qv1`Y=0ZNEW)GxgtSS**kYi@g4l7cUs zCs@tq$+=x-u$-w+WLWB7|cm?V}guVaL zH0JXs;(kx%b$iV1j5N0i=Sa4zARc{5C=An8X!Z)~xcXTW6JjM6+WlhD!biB&(EfxT z{ypI;FIw!|v-g-gM}hMHAbQ{oVcP~yrl#`9Eqj+r&^xsN=}`+Yn`Ld}Rgg)i^qd8C z64j3czVN00OM3T`DyNnpc8CGsp)^}d2BQ7wrC0y@X9x z`q8$5%pZdyQ-J$-v&Z|*{kuGu7S?W+ERV<>)=6qt@NImco2VYmS}`bCyH5-A6!l-b zT&hVg5T#uwALDq=0o1ZSHqyzORl#5vweu>e5D&fY9skBw^1I^ZH0Kvv$SFeSdCY2> z|K4n4tS^0~b9~`2rtS1mT`wH(RxtA)a-!eEVT3_tsYgiS;_<}_6=1~(r#rsoia5z` zr;hzSl}0?)ep#|RB}u!zz&RPhgGqxDs=;R2beEb*w1mIzlcul=7^cZ6We%|l=r!ck z4^CJ@r%Uwu>K80~1HTW6MDUs_hCHWjQv&7yxx{E0zW?~@`K!)~=U<6thE@=px>ux2 z?H5|?jb2``+PzO}w=JUvRynCy=A9F4{;zjFY@+{4=AWwG=mTrKZuNh{8yvd)N&=$w z4za4{vFWS}`Zu_Pi)Y-7iHd>n9*GCBw|QJG%3-_J^elX8`U%@C5m>Ya!XAsBF1t&3 zh9$EAnU+RJGP}>}sM7}z=I?L+9m53mcAnUL^=K!|n~nD7Yg)&GPL!RVY1kh~nr(*e(9=kg z{N6W|sWqDN2hBWZ@l#cW*uI9=TXLOQS^}I|pt!Vj5}HSiu! zp(hFi=5$~H@ylCGoCPoZHO4%$YKM=OfYyWaD$(UmgJJrVHPV~zd?Q@__slA|dR~yA z@!N&HZXI5_7>bMFcPmC0 z>jmUdk_#%n^t6HlVYl9#t-xzr$8vvk2|()kg>@`?aCa7K?AY%6`MHlnGs=F52ua{> zb$Bza4a9@05jsYI4`$Jyord9}CRmV0v{{IJnYjP+VoE`<*%hp~@;Vm2>w{sp6t=4_ z?!()4b#>LhLP4KN(*rj7qhDBto|i#zkb!(+gqoC|Ue_q}#x={#Kudt;B@R+@O1J7q0SHJwd(TGQ3EcdK&h)yT9cNh1Jzhrnddz)fRu=mJ^4s@5)*@JN}1Zs)P zni{s=S6CfcXI>qG+0hiRaqWSdSu7YaX2BoS zfHsa7aEu>6LZ9!P^qv0Q^7QormSjALWh1UIbuca%cC2lbU^>8sq54UP8xbB{rJoi( zv5)jG`|p`hT_H~IZNLt&Ou^uZpj=*c-#2H`E*7^(E91I>Rv@UGgYJWex?lB?&lnhV z+|&XWr;Y9UA;N5U8I;>stE7*+Sym{l*7-~#E^rNp zm2GZACG_Jk5k0L!v?U93kMH!m+Art1IRAT&&|6r8t-Mf|!EO*&nPiX&T+(P?`uFzL zXRiwqSIt&G^74wm%ymUNu9UMxr*PH#slVqc;wQwHFD^BFL*rHJhY~5Cem_ zVb0or99_#FM?uDp!E5goP2QuG;7s}Oej*qt9iaTzY{V571eIpavecJ)NQDKj&0gWIR}PE<&{hO3F_ z5+-KDX5L!;@b6%PmOhR}I z^0{|uDe;uM3i_YJCnx-XjB4$Zg|v1XIVb1*YkWh$9LYci)OWlA7QiZ@Zm;#hS|Fc- z!5uI$6RYHE(y?JIKO;$^9&;#seY2+D6;>{cv=cZ9|Kzd>fKu+rJC3;^bQHXs?^#Uqzt-R|Cf&frpv>} z5VKA~BFx&`+LVtPlbnw_Br6c06+io3K#Le>zcYDT(AwK?h%`g!#yEUfd#-H+=BIn$ z2%1{7JO3y3!Iyx?IX2H0( zeQmjPq(Y|7r2S#l=Zh^)5S7!mGYL!^Zc{MVP}N}s!_ zsTCsE(lgJ+89bp?<=tJRX73)I zBFrJ4jzEUHoQ_($MhYd)=URwt(Gm;Kj@@IuFSH4BD#W2|SS-eHo{3q^xlZ6c;cxhB zM$ttOkr;@9fI1qZj%32VV993%9LZzFb9TrQ2qzCno1Q3muEByJr9eM`z|MB-dyL8z z_tnnR5-yTi1a>puyrR^KCU4IccJ?y|MMO-MqXcw1p$eq19?CnuG`+OgEq&?hO|*}v zp?0+PODzr>dx&lPA_;2>++w+G7|X%*){GxUf7WW#SqNSFZC5MCOWN{-+TSKZ!lH`WK%N5ntRg+B+J$2{=9siaH=75(Qea zW`r8z{z3oPj*UP;*!4R%t%a9Xt;^Ehgk9Lw)P!A#ux%>o-O)@qCTi1KEeZho@W@E= zEA=udFT30Ll@SbHYE9IPpDbByU24SC$5b3`mis**xywUp5oB)2NabKn5mI(k(aCdPuucB0*F|i1l7L#~SOi$U<-?mXLNr&$tWX zR;dn6Ui(eRP7YmB(*piH;P+W9_joFCoD>5i<4F4AaQfuK0Jpxt0AZXt1iYDvT(QwM z9xp#I=?|E-{<|!?pWm|xV1(hP=C;sE6)PO0Vshrdex{SU+nDM>JQ}3QtO11kbf-rr zhRpBS4QZooxEaTW+brv8S?*OZ${H4zdJI#s1)scE}2Kf!foSfW zib3Q}_FQQ7bgv#0T}G`MK{<4Z|8=s<7LiMLrobstQBlzeMG(zZ5t$4eVCwK>eu^Vk z{8KmezWxl-e-bSSYD-__=5M=p2U@}-ZSh%MDnXNH`R-y?GG^Y|RY(2Mz&3^nN2^=B zu8Y7Vq;#fEaJ2m$&zB}V7f%Tp=BvZlTF^8G+cC&hnMhxnP2ZKW3@1$8+zQ~5&EFGo zhVT;7j^v%epIuXfaXag2tMZySEe)EPmH}1{WWoy+lZD`^vF>zY_CK{)s3~)pwsap& z-jFg;&quX7=e3N|K`>e9LW1+pb}|qTCtIPl9h57GGVP}BP$u=!pxd7*+6Wr-KxqT^jOZ* zqs{90|IQ9?=?{eIz+SbSqZM)-$>z0>Ul8JhSz=tJ<~_#yiELPE)UT4QuLo2!)77B5 zZG|E|5paZ#i%~0+I7x@#wd@^STz;z(IO4T>^b>TAG{p-lX-Gc}X&vD<8P$Jz{tm$e zfZJFM6nX_nbXm|2`QsxyGo8nOb|~fFNEsSwR)ES6+V&UXa=Ujwb7k^VtjgQUskWDu z)Bfl$L~6nXwr*W$*h-npwZUOhmhaY;UVi;Pj2EYiQ15b^#ok5OdF+u}ZK2)J)|LoK z-BDfRYZux|FW58%AG-H9Z~F^p9`P)u|HYX{u>eco>lRbK7g64SS}7UFv!x@zuX0TY z*xII&xvNVj3D?1Mt?!|0w~kQ;wt^LnWKgU|VlZBRXm(%5`<|Ytl{dUleA$yM98Ojw z_{}s7mxZcgE-*lD?t2#O^e%uQ!1Hoex(w5&wh`!%h?_{hvJImZ#_3gGQHu20wZq`K zdo>w3{6tS$gNU2OK@leVCE(r6mzq7cZVjjFV};^2x^F)3+-@AGc;dva zr}w|mfGW?}R95TukSNuSK2CU`#K(NEg8Zrr0ZOKLSm*sRO25lOWZEPD_rg0zdvE-8 z_j+ddHIM3qa`B4|7}|8pdThH9S3DJWB7aJ5AsZt}j3xS59cPm`%NV@0*VwWC2d3yp zJ-#nWYb`A(PN+wTbeuRj&!q%O@*lVNCmpn+{KX`y+JB5rfGqcWwzWidD98FNSq5b} z?6vy`WBlGq*-!uO4H&sW$5W50(tEp@P)LqZWDzQUQ%PxPIBUfyM-pM`OxcKxt}fNM zNZOpb3WbGhMO~J<+#FwOiG0*Hy1c*L=h5R7^)gc`SCa-(#_`@NXY}8U#B5ziu;d=c z+L{d?+40cgQz9Ms2Gx+g4RG2~D9?SfN6q%V-94SJliHHR_F7q1y8~2`DrTpBY}Zae zw}X|e?o||ujDHmq5qH^yV&9J*v3hD|rGqOEgh4H@3cX0&)mh0Tk`?BMC5cG5Y#?BxW2s@HC)=mi`zt9+wv~7QsRiIwBMZ&%X0L#M~j_NOhP!0js z0y)cJ9!Q9%G|f+PbVMQf$<#|Z8_$D80OAjs#oxWy8&8R-fyCBXzg0Xb`04#DJJJV5 zhb$ebh}vT76Tzl@o7m<0>~0Y^@2Cd*j~yNi3rP}RhU(ER2jgzYN7*<$*PC{dT%G(nxv6&#T!X85+MUm2JHOyt!T19Rwr80KfU)VYOTnew<8f_7crKI`$D%S&aD@Ds9Y z6|r=+qnB9XM5$4yJFe5Lys=i3(aLg6l$)2AH&;f7_uP6`QWowv5Otk+jl@SF+%omZ zcaA-e>ozH{B{CAiqiKf!32$n?^!*Q8f|1d32Q`Emehh8|(CVd<}T8fJ&z0dY- zA|0*|1=tMc*ID48INgO9I*bIX@U+S_*bC( zGCgOgc!tM>&p*Ngw)|uXF~_Der!~vedvj9e+vsSm9P|bUm6y6v=%w3PG2&)$q2WPj z53Q-|8arnZ35lr+Vph@jKP4f%&(bvm{~9B~0LE4ihAl>TPS{Ttmdq9QmesCTbhg;W zqz(~0eAl>(o7-?1#A+oWC*!A;+l|NOlK4VvES;RPyYfy;V#3({vXvr2G)Q(aAQC!NCY3W zW|i!)JPj3>sFk)AJQ3^T+?KA;qmf9GL=&3~B7x z{Kqj1^kQuVIjUxTPX90!!_f{@H2Xk8_aoHF7Auj&XDw*3cVP0?YrDLNTdzr0<$@=k zUdU?GCZfgTjS2gzEI1B5Rq*{wjT(6@_ev15g6gs9hyq)70$&~v;6BvyK$G#VPd_?r ze)`AmM7%Kz40J9&&?Hrq&Y5gSvO40BTyma2=#I^D!jpRUx1hWJVIs zWbN^09}98m;)PEZ5FxSd)qBv9arUTwV*wJoV2+Z(Z|{| zhc8a@B~uMQ|3zcSpvy5Ql;~Y~Jf&8fP(BHd6`e@{k+RF^b9Y5i>MFozGN12=yNS*v z*Q3S=l?kiMQbpJQm(<(NwE;DfWp<|3_IPj!+xN=^DqXqBQFjVgW>dr)7kv&&2xH>K#XN`!?buQJdH zvOQFX`ct2oSv{E+%TkYSKNxq9O}GWqBT|TI$8p+@9NJ-j*gQ2+DsgIAg(joEhk=t= zn@vkY>Jc!ZWc%F=QO+AXImrK;VB2)3on!2jv;Pn>jr1{(>B43HDA^Pq_78tF?(!ND z|K^*sAa;Z?(k8blFyugQ^Qz?f2cdA~Nk<*55Bs1Y;odTX;aW62HYS;>9^J^*gwgpX z$fx#GIUm6gnd$vb$%qWxm)I0D`VMD&HKIGuGeYHshlxf?*EB^5Pdor7;@!F^f!7-1 zaerts76H`gE6z35ZA8fOn9K7t2o#4RQZw)P(dY+hMN|5aEbQEL=hjnK90TWEq_Q2md@FRKcJE$!rh^JPZ-%K!*i$58c>hE`OnUiId z_%=yj`5uNS{Kobk>nWK}dG?W5%kE^~I3B&SYMIZm%f#5G&ROb+W?)P9 zFydj~<%1_~<48dX$m?9YX}xGqI9QuvBbgj_pLJ@v?_nJZJV%^qZ&@pfL^qc>bw@eS zvfJyvzz6wlBC^z|jUCs4)`?63Zo*DAzG+E6km`9!sB);|1&#!z7Oy5T`1iDYqSZ`n zo*kk|vI20!W>QO5KZ{YLacM6x8faWQ=VF*EF&uYmAZG5_eD}EIpUN-ZXRC=p@zB@E zuj0)=P@Dn5UX{PX>KL)6;Y@>2V(V^Zyzgl1$G_O<qSk|)J)LpCN%u2O zdjg;T2u^@U8Cu)3NIXOG=x~xOJqdJw2-lJ;w8P+cX^b%YPBih%_)0;J5vF!#|@kAfv%gPT&@Z)~mZyJkI@n zJ^Y|~dNgSA_|a3Xvtj*u@*#C?UJk#O!?2PK3^XgDbO2ZeddWFgLH`t$A8WFV1sD1y z{q6n}JU26SKGwvEhccAb*3i5d^)eg~d94QOkpMPMLSeIx+v>voCW072qOf!~_BgU< z;p5i>Zj~nyv1Z?n`~!*T7H~ila7X3^j%B6FKvJb0oc7o8-@luE6c1JL8$EIT2}M+~ zpyhFRR%MOnUDLj*7sS|4o;@(Iq9TDqK8 zWQfP{tcRjV9gpCWsFl=}heJ&P7jgdv5KYXf9g16zne1R|kMGzV;K8DM7N-ZrVYPqt zDaY}Mv&W|wAe4FC=xON#xks$lZq}^aT`8hfPQc^h{D$To-wd*AdGVeiXP zmVQ(w%(edfldfg2xt=C(fbDNe*^aJExDaSygK^go_w9J7F3!Q-jZ6qm7^m`ViFAE{ zKG;p8GLJ)=IDd(iFnjTxHt$;bvh8~)PCi@kL<)T}`5w!>hv(5}MuH(o$LW2=F@6YU z#2ZnY#%%ChtU;s()k~K^9ziPR4EF5RXrBa_K(p|k*-y-&eNB;?j z{tClm4%XaX&>&>TJEfWhDAkh~|4c<$zpUA(r4I-MN*pVoqG?-F01b`iFe|WCJdcw8o90!IpqleHaUS^=bz8be9G3?-#LTs23tnsLbgGun zL#20P(?kVY`r5C)TrC0T;MkVb?9y!Hhc`s^yueNC8xW_l8$b}oV3MGInA$_Md-7RU z6Rjv;xi|&3aC1{WebOtkkFi5+2YoNKzV0`xBmwWiOWE~JZ39zFWJnmwdHGo5-RS7; zk)K$P2QQ;&hfUrFBb)?4PdCUr=_gUu9Ojw<3V7MP5y`DYsU*!~M~w-GNVh%z;8DUj zY9YfMn|q*TF$My~1&32iCD(WPB+?~>!+C9%jc{@Pzi#a|zN{n> zVMH_x+DLKbj*2406IodYh%Mnnt>HIpaXh5B%fN#uTASnBs$xOa$1p;fpf#eg&4^|# zW=%#@(Rj%|+hqYp4~a(dHbz^FU@$?UPFew^iJ1O0(3)-%8JK+$4c0!-i|B0RAFfQc zlTYT&KUilhH8R+ z3s(~waljG@>1Qip%8lpo#vO4yQN~!EVfS^;6-k`+?Q85d1piI{;|`rJL-hTh-mUym z1dWyaQDg8OsrP#Z3=xs2#BpM3j%3uvAoPbdmi%>P@;(l~&Jfg5s$b85DZxx?2?Re@ ziB|ZRR(FE`G8-<_t;pTY@lTLX#M^m|sNjvAPi#eks@*PO^n(hYz?dD!s0@MMucIfe z>vVJxohD=bgI_bR#lp$NE<>$KAN_pGS#^?D0@J+;koDf31dbakSz7c&5n2~-*}?(o zj;g~d{mo?ze`PegStF!wB%L2F^Vbrfo>l%*(8(u)5O5MPgj(!ZfYHS2=&*q0c~!5m zdl0+a;(&wSpK_wY43Zf$4~Lq43UTj`i7<_=p3O55BOizo=~M;g>U6WOr#*y*q=-{& zC$BE`zk8>Y-8D_y{GRZ4Q(JH@d!m*Knx?w)R+jRmkD zn_0w&NYc(oM&&Sds_#uvxE@f#JStPa1I{`xE2}9}&|h8yCg|rwbkyQLA3N; zDI9Ue7i+XdCsxDnVC3#0%GAevyCrRq$zEDRe7whFsUmv^1 zj>J`6-SJ`*wsqDH{1hK70@GIzIUh6C>684iD~XRFNOjm7pGOoSW@34xb{0BaaETet#70)mi=>}dcz`D3B{N_y~MCrAh)ac!f%SK#S%k>XmJ?tE$k+MDO0Cc4`1UL)#4dB*m2i52M@vuMU`tcyhv*V>?mt*1Yx*&N86t zC>+*Fmw^@X3{MPWw_R#sNMOU|noXUYnj4N2jgHtC!(RBi2RPW-6Q_m#M}TzTBEIX|N4?Y5$n@G<}jZi z0GgM>w4ZL{T1|-3aH;xZ9SNMcMW6mYgE4)@edA*EWq;U@!@)8lwPS#8Vp(|U6&yHIVoQ|mkeqE2)gfx<+ zZp7D=WFxOmp2_=n>wAS@%}MJHzKV}HhR3lXzN5Zumw%{u^4qMnq`d=uqZ)Uz?7YH> znr(!cCeCK-Sw-B5>#fCpfY&5%uG>b+co=lOKp8u(3HzSJ+3=tht8B_aTzCI2I>|et zdZkXp6)qAMYL8T00>6;3YFByz#;w6B5;o#;!`p(Yr3wzLfxEE9-&EiA2TDugNC@m2 zD_FRf^jV6Zwxns&^2dMt6sCSMT)VO7EBh*vb6=k_JseS~7H&4m-{PI>QDaj9;=AV9 zG1%^LxA3Z+37QMrJqhpEi}ufUKY%aQlb&>Oz@W50Q$+$hw3hCwaAf4O~erUR%n4X?%=(!&`RADCf63 zXNKK3d#Sw+q#beJOd>T4Y|DMrvtD*%JBcK;ZOOU)$IOsfk-H8`ZyXnQP1!-tx(z%;9{?^5pXOH%~i1c^GT6~$N+TIXy(av6MXiAG7$@of|KI;-SDvkU2 zl>g}K?Et{NkG`~C3~=?w9R~n_YhV0w?{@&e&)c0~)*Ant@2&U$%04aP0|4OdcmHWh zur>Y9AZ8*qrl|5LcTi?tvzj&m0&-h|MeQj6T*=}{XP1w*0Y|%INW>e8Ye1THnsPkS zFr?87bzt0*0s}Jk8@Hf_c_CL)b30gVR#0QFut>}KJm$JXj2p2;0W~A%?XfPF;1r=A zm{aU<@EaoT`>*-`%eA+j;t>lNA5$8-u&{Dzz3I#V2+W0Vp0gy#{L_0FKeYdT@-nG z3+h8YIVyrRx%A<~W`aAOh%OafI=CcpxOpxRh&qNjhOKF=itY}emLd=huO4S558;P& zc{+1o2$TAgge5J<;UGg4W#vlo4LmEk9gS1r;Y3$7Ap_i(O5q)4QXW@VLW`BzwUziG zV07DSe&ZUajZyyV39^p^P=lUgq!7||#DwfWvnrwo|1tZ(mu*)f6BItd4QI3zGs~rZ zq-LP=CsK1g9N{E`E0{Yuu|kHltm8?DzOd(F{81jxb+J}yd=GV#mqlr-b4_V1H8gI{ zA&xr>&X)V&RaK3hifwKSTy_l{&i0&=(xWRhf>Am~==tk#mr>M`;)z)s4^3oD`%j$a zJz4GSi8FPY$Pcb96J@aBxq6V9j+lN^c z{6q0Rmh7MI%%@X3WToAzp}sl+gG_@fXRA;kUF#v5V8%W*#* za`q2x6QLp86fFD*HayG=c^DhwPR0}KAI=`Y;2`O22lrlBf2x8-sVQQkco(wDq60c8 zUgAizQ&AFp!74LBjE#$69;%y~kg_kp(0vE2=w*+}&*2hb9 zdF@$>GVU<39Tf!m+nqyp3?16QD4gC7eR0Zu>zF{47u;@6Tl8nbI+tUS=(QnqSgOD5 zh*Xn_C;&_SJN{xn?c$M3n^-ZZtnS+Csn-}5<}&2P5@B`AI}cy_uHTUceSo~B)FAV~ zBy!KRWwW#v**K?XM$AETP1he>-B|rfNJ==p2{r9VN~m2Pcv-nK3FHzNBLn&%9TNkd z>B>FJ_^y&w@pDu4MevnnYnLgx4uBo`#rTiewwwGN|_*9uL;=9cp0)UkT2}w za^EMrLY?6;eW@P9@3yD$$vOX7Ti0 zuLt`Bo9SX5v1cu(B#qomp&YuIT}S9#UY+keZ6Wwik~O2p(&>!-nyran4iB-i3S~+U z$u#Z_qcE|AIa)g=oRvC%4($1sGyYIN5gT?~>xY_Zz-%S~?<>j@4c%--w38$s=_gH? zo*tZdv}B#cMxf%EB}l(~bNmG@kMYc3Q?(lzi$;SMp}7>!<&S$7jdiB8M>Kf}GVej| zaWUjL#t6@aUhYC=qMW#^sKr@XhQ>IOHv!KLF_)& z)4T>ANmkON7tg63r3$Bz)?6_|@~NWd@S#TKAYJwOQm_ZcqMyhS2Bj|&(df-KuG(ey zW>U4lWbRq4s!&Ap?MbWB@Lv(efRmOhMLqPbRn1SO>}SPoTj>e9RV}}DWaPg8zEX7> zO6nBbsUBHLtCP|2axa-=2N024@wKAGtbTVztAr09j>%Q0YaI&K^V>DR0I6`pbP`X}R$~gfi~^pao3MCA6o*3> zJY<$1?oVQNr zx9+ztGSAH+y8XI6K#?1`cZN5;sSc&@v2G{<&{Suo7TZlmY|RVK1#HgOE_bi}-ny;4 zQ&MiiEEelZV+)&rO~58#6R-)`1Z)B}0h@qLz$Rc5`2Q5x=mz=z@wcb#U9}Jbt)JPp funGJZ0qh6fuYK#=FwGmk9XNkB4AOe$oA3S&A?5Dm literal 0 HcmV?d00001 diff --git a/addons/event/static/src/scss/event_foldable_badge_report.scss b/addons/event/static/src/scss/event_foldable_badge_report.scss new file mode 100644 index 00000000000..c63217e65de --- /dev/null +++ b/addons/event/static/src/scss/event_foldable_badge_report.scss @@ -0,0 +1,70 @@ +.o_event_foldable_badge_container { + .o_event_foldable_badge_top { + height: 148mm; + + &.o_event_foldable_badge_ticket { + border-left: 1px dashed black; + } + } + + .o_event_foldable_badge_font_small { + font-size: .8rem; + } + + .o_event_foldable_badge_bottom.o_event_foldable_badge_left { + border-top: 1px dashed black; + height: 148mm; + + p { + margin: 0px; // to match editor style (.oe_form_field_html p) + } + } + + .o_event_foldable_badge_bottom.o_event_foldable_badge_right { + border-left: 1px dashed black; + border-top:1px dashed black; + height: 148mm; + background: white; + } + + .o_event_foldable_badge_ticket { + background-repeat: no-repeat; + background-image: url(/event/static/src/img/report_foldable_badge_background.png); + + .o_event_foldable_badge_ticket_wrapper { + background-color: white; + border: solid 1px #939393; + border-radius: .7rem; + margin: 0px 8px; + padding: 10px 3px; + font-size: 1.2rem; + box-shadow: -3px 3px 9px 0px rgba(0,0,0,0.51); + + .o_event_foldable_badge_ticket_wrapper_top { + min-height: 80mm; + } + + .o_event_foldable_badge_event_name { + color: $o-brand-odoo; + } + + .o_event_foldable_badge_font_faded { + color: #939393; + } + + .o_event_foldable_badge_barcode { + min-height: 35mm; + } + } + } + + .o_event_foldable_badge_step { + position: absolute; + padding: 3px 9px; + top: 5mm; + left: 0mm; + border-radius: 50%; + background-color: black; + color: white; + } +} diff --git a/addons/event/views/event_views.xml b/addons/event/views/event_views.xml index cedc15b5e85..10cbc527b37 100644 --- a/addons/event/views/event_views.xml +++ b/addons/event/views/event_views.xml @@ -64,6 +64,9 @@ + +
+
@@ -222,7 +225,12 @@
- + + diff --git a/addons/event_sale/__manifest__.py b/addons/event_sale/__manifest__.py index 3c10cd21b4d..58c086685e8 100644 --- a/addons/event_sale/__manifest__.py +++ b/addons/event_sale/__manifest__.py @@ -2,7 +2,7 @@ { 'name': 'Events Sales', - 'version': '1.2', + 'version': '1.3', 'category': 'Marketing/Events', 'website': 'https://www.odoo.com/app/events', 'description': """ diff --git a/addons/event_sale/report/event_event_templates.xml b/addons/event_sale/report/event_event_templates.xml deleted file mode 100644 index fa17929cd64..00000000000 --- a/addons/event_sale/report/event_event_templates.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - diff --git a/addons/website_event/models/event_event.py b/addons/website_event/models/event_event.py index ab278a7e980..9b138de5cb2 100644 --- a/addons/website_event/models/event_event.py +++ b/addons/website_event/models/event_event.py @@ -395,15 +395,6 @@ class Event(models.Model): return self.env.ref('website_event.mt_event_unpublished') return super(Event, self)._track_subtype(init_values) - def action_open_badge_editor(self): - """ open the event badge editor : redirect to the report page of event badge report """ - self.ensure_one() - return { - 'type': 'ir.actions.act_url', - 'target': 'new', - 'url': '/report/html/%s/%s?enable_editor' % ('event.event_event_report_template_badge', self.id), - } - def _get_event_resource_urls(self): url_date_start = self.date_begin.strftime('%Y%m%dT%H%M%SZ') url_date_stop = self.date_end.strftime('%Y%m%dT%H%M%SZ') diff --git a/addons/website_event/views/event_event_views.xml b/addons/website_event/views/event_event_views.xml index 4de480e95bf..42736b97e1d 100644 --- a/addons/website_event/views/event_event_views.xml +++ b/addons/website_event/views/event_event_views.xml @@ -14,11 +14,6 @@ - -