From 8a379e67b0c8aa4bd79adce6f2a5481524287c5b Mon Sep 17 00:00:00 2001
From: Simone Orsi
Date: Tue, 20 Nov 2018 11:35:37 +0100
Subject: [PATCH 01/80] [ADD] web_widget_url_advanced
---
web_widget_url_advanced/README.rst | 109 +++++
web_widget_url_advanced/__init__.py | 0
web_widget_url_advanced/__manifest__.py | 17 +
.../readme/CONTRIBUTORS.rst | 1 +
.../readme/DESCRIPTION.rst | 6 +
web_widget_url_advanced/readme/USAGE.rst | 27 ++
.../static/description/after.png | Bin 0 -> 6912 bytes
.../static/description/before.png | Bin 0 -> 7637 bytes
.../static/description/icon.png | Bin 0 -> 9455 bytes
.../static/description/index.html | 445 ++++++++++++++++++
.../static/src/js/url_widget.js | 29 ++
web_widget_url_advanced/templates/assets.xml | 12 +
12 files changed, 646 insertions(+)
create mode 100644 web_widget_url_advanced/README.rst
create mode 100644 web_widget_url_advanced/__init__.py
create mode 100644 web_widget_url_advanced/__manifest__.py
create mode 100644 web_widget_url_advanced/readme/CONTRIBUTORS.rst
create mode 100644 web_widget_url_advanced/readme/DESCRIPTION.rst
create mode 100644 web_widget_url_advanced/readme/USAGE.rst
create mode 100644 web_widget_url_advanced/static/description/after.png
create mode 100644 web_widget_url_advanced/static/description/before.png
create mode 100644 web_widget_url_advanced/static/description/icon.png
create mode 100644 web_widget_url_advanced/static/description/index.html
create mode 100644 web_widget_url_advanced/static/src/js/url_widget.js
create mode 100644 web_widget_url_advanced/templates/assets.xml
diff --git a/web_widget_url_advanced/README.rst b/web_widget_url_advanced/README.rst
new file mode 100644
index 00000000000..8bee5c8f0d2
--- /dev/null
+++ b/web_widget_url_advanced/README.rst
@@ -0,0 +1,109 @@
+=======================
+Web URL widget advanced
+=======================
+
+.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ !! This file is generated by oca-gen-addon-readme !!
+ !! changes will be overwritten. !!
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
+.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
+ :target: https://odoo-community.org/page/development-status
+ :alt: Beta
+.. |badge2| image:: https://img.shields.io/badge/licence-LGPL--3-blue.png
+ :target: http://www.gnu.org/licenses/lgpl-3.0-standalone.html
+ :alt: License: LGPL-3
+.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fweb-lightgray.png?logo=github
+ :target: https://github.com/OCA/web/tree/11.0/web_widget_url_advanced
+ :alt: OCA/web
+.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
+ :target: https://translation.odoo-community.org/projects/web-11-0/web-11-0-web_widget_url_advanced
+ :alt: Translate me on Weblate
+.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png
+ :target: https://runbot.odoo-community.org/runbot/162/11.0
+ :alt: Try me on Runbot
+
+|badge1| |badge2| |badge3| |badge4| |badge5|
+
+Extend URL widget features to ease customization of anchor's text.
+
+By default the URL widget will show the plain URL.
+You can specify an attribute `text` to provide a static label too.
+
+With this module you can use a field for link's inner text.
+
+**Table of contents**
+
+.. contents::
+ :local:
+
+Usage
+=====
+
+Use `url` widget as you do usually, then add an extra parameter `text_field`
+to indicate which field (present in the view already) must be used for the anchor text.
+
+
+.. code-block:: xml
+
+
+
+M2O fields are supported: `display_name` is used automatically.
+
+
+For example, in the partner form,
+if you want to display the website link with partner's name as anchor you can do:
+
+
+.. code-block:: xml
+
+
+
+This is going to change the rendering from
+
+.. figure:: https://raw.githubusercontent.com/OCA/web/11.0/web_widget_url_advanced/static/description/before.png
+
+
+to
+
+.. figure:: https://raw.githubusercontent.com/OCA/web/11.0/web_widget_url_advanced/static/description/after.png
+
+Bug Tracker
+===========
+
+Bugs are tracked on `GitHub Issues `_.
+In case of trouble, please check there if your issue has already been reported.
+If you spotted it first, help us smashing it by providing a detailed and welcomed
+`feedback `_.
+
+Do not contact contributors directly about support or help with technical issues.
+
+Credits
+=======
+
+Authors
+~~~~~~~
+
+* Camptocamp
+
+Contributors
+~~~~~~~~~~~~
+
+* Simone Orsi
+
+Maintainers
+~~~~~~~~~~~
+
+This module is maintained by the OCA.
+
+.. image:: https://odoo-community.org/logo.png
+ :alt: Odoo Community Association
+ :target: https://odoo-community.org
+
+OCA, or the Odoo Community Association, is a nonprofit organization whose
+mission is to support the collaborative development of Odoo features and
+promote its widespread use.
+
+This module is part of the `OCA/web `_ project on GitHub.
+
+You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
diff --git a/web_widget_url_advanced/__init__.py b/web_widget_url_advanced/__init__.py
new file mode 100644
index 00000000000..e69de29bb2d
diff --git a/web_widget_url_advanced/__manifest__.py b/web_widget_url_advanced/__manifest__.py
new file mode 100644
index 00000000000..61cf228601f
--- /dev/null
+++ b/web_widget_url_advanced/__manifest__.py
@@ -0,0 +1,17 @@
+# Copyright 2018 Simone Orsi - Camptocamp SA
+# License LGPLv3.0 or later (https://www.gnu.org/licenses/lgpl-3.0.en.html).
+{
+ "name": "Web URL widget advanced",
+ "summary": "This module extends URL widget "
+ "for displaying anchors with custom labels.",
+ "category": "Web",
+ "version": "11.0.1.0.0",
+ "license": "LGPL-3",
+ "author": "Camptocamp, Odoo Community Association (OCA)",
+ "website": "https://github.com/OCA/web/",
+ "depends": ["web"],
+ "data": [
+ "templates/assets.xml",
+ ],
+ "installable": True,
+}
diff --git a/web_widget_url_advanced/readme/CONTRIBUTORS.rst b/web_widget_url_advanced/readme/CONTRIBUTORS.rst
new file mode 100644
index 00000000000..e8b01820bfa
--- /dev/null
+++ b/web_widget_url_advanced/readme/CONTRIBUTORS.rst
@@ -0,0 +1 @@
+* Simone Orsi
\ No newline at end of file
diff --git a/web_widget_url_advanced/readme/DESCRIPTION.rst b/web_widget_url_advanced/readme/DESCRIPTION.rst
new file mode 100644
index 00000000000..1dd8b1a54af
--- /dev/null
+++ b/web_widget_url_advanced/readme/DESCRIPTION.rst
@@ -0,0 +1,6 @@
+Extend URL widget features to ease customization of anchor's text.
+
+By default the URL widget will show the plain URL.
+You can specify an attribute `text` to provide a static label too.
+
+With this module you can use a field for link's inner text.
diff --git a/web_widget_url_advanced/readme/USAGE.rst b/web_widget_url_advanced/readme/USAGE.rst
new file mode 100644
index 00000000000..88f6474aec9
--- /dev/null
+++ b/web_widget_url_advanced/readme/USAGE.rst
@@ -0,0 +1,27 @@
+Use `url` widget as you do usually, then add an extra parameter `text_field`
+to indicate which field (present in the view already) must be used for the anchor text.
+
+
+.. code-block:: xml
+
+
+
+M2O fields are supported: `display_name` is used automatically.
+
+
+For example, in the partner form,
+if you want to display the website link with partner's name as anchor you can do:
+
+
+.. code-block:: xml
+
+
+
+This is going to change the rendering from
+
+.. figure:: ../static/description/before.png
+
+
+to
+
+.. figure:: ../static/description/after.png
diff --git a/web_widget_url_advanced/static/description/after.png b/web_widget_url_advanced/static/description/after.png
new file mode 100644
index 0000000000000000000000000000000000000000..fff2176e77f8fe22962321b0e8cd9b82c80b3458
GIT binary patch
literal 6912
zcmb7}Ran$vl*a!w0wP@^AxNhnIfR7tP|_(ODb3I=jnYG>l*9nSkP^}%EgeH69V0R1
zvit0_S9`I0@%6blH|P1C_x++ZzzR?CXz&04c&el*rv(6LdXIZmT=d6T_l@PZ$K{EO
zqJcXA;FJF6Km#(fsU9zJJe1Vran|w4am2(v6sIi$08O5f+}row3x_#D8p(R?4~W@K
zB@Ca}%!HWZR(5VmmMx!!lzs$A#v*C}i`#KH?swDOEh|${DIp4Qz$o6|6CHeZlg?dvc2_=MVCs9RqI%Cg*HMEYlgf3
z^_U62yTYlkBf4j4T6PMTd3zml0yI6-QD!i6(pbtUE3{tkSWl=|?#M29Z?z(o(-TI(
zNrqHX0C`dn?Kb@Rlo)sk|2|diEI}sZ#P|88ijbajqRrUu1d?0R?4Ll>Ff&^XMK6eD
zrO8xZlt6=$aOsfi&g$*=;xlNKiDzZ9zTpT26Sg9y5wC}Jxp)>A^$W?
z`J3Hx(q6)%t$5jrD;2q|T=Vw9<+ymQHe*)<)VFoA%iJv1Z9Al>&d_$_%}rE8{|R@g
z-CO0$Hr}1F;A-7`det;Mb2I{qA9>O2vAriIt3JhOgwzaMGYQ)n&xPU-a4Z_KLp&Si
zxkgyyA}i7o!9g+6@`bgL+|P5aZjJXD`fW`=B#m$~c-u9d{~@dLfz4$zsjX>7;jos{
zV!&otjydWWg~MfiuTBjZ4w}a|nv*GrQn~d31M=zprxp>3jdKcV6q%f=F>LL&wPq*$
zA5H{4>0gwaW07DQgCgg)KcoY@r>q>lmy40yZOOATr&MWqB`8$i`D_05WDMETO6{ov
z5wnz}MpNe`WLSXN{Y-|YS+OEOL@RZYr{}&Rv`f;(#ER3BGb_vgRgs08XSN)pyQ)o<
zOXzH^KXIh`yBz6;4Y)OXiYpB~N!IZ`iM!}XD|ko1C@ajY{t(tY64z*iPUEggH|w`;
z<+TVmsyEE(f6=(ss~0PwAn7@D&lKBWBvsGSrgbSJ2FNLV4RA`Xs(d3MFmVa*_4O1(
z4?H8;xTZu}gH-PePEWq9HzNO#1xxFNacda2oT8|Q@7JP|q}G~7r)lhCP@`WFUgEGw
zi}ybab#$TZD$?Tu_M!nkpiZ}4X3r2v4p{D&^Sl(TW^8(GhBPynvo2=q-gMuCfsE4b
zJoN#}@-JTKMLUo7J60CwUJJ#s*@t*zVyxfbxIC1j|A8Sh_E$w7UhXk1yp2(Hao=Vs
zQdB7n%c<}0rp|LW_o-^H1F0QeQ_In9w9ZX>8Y3r)j*N=j
z#K9e>)anK=hfflP(o@Ke<#d3b4ZNw?%0lLvGh?^2O*g&Gk54S@*BQ0ZQN2s6t8s_HaA={kZVeJKd
z`_w<`RZ5mtGN#ie3b{63H(Ec<3W|UjsuCSWUf#wT&rMGOB$g&@7nnH=w
zjBAvF2Io^)Zslvwi280((5XxdL3$4D#rT5O2bWFbiZ|`{Qw#p{h0*Qz4bZpu7vwEB
z5u63J!Rx7p5_u{n`+E`siS4efN`p@g7ab2xl$
z1`3+2(aP_`=sAwr(W*o3;V
zjqIqXGd1y@>XyqmCefww->WA*a#2Go|D2tj6~7&U0g+|IBy}+=mb8<2s17ehI0qvT
z=&Z8aM?s#Y{%(^zz^!TI{0$~lW!`bPBAsz=PqqH^oBWjq$RO|?jj$$k6a#bDF81~w
zmt@j?tJ2*HTYB7QK8s5`_M2sQpkY=H?*<0Qpj}9PlOFQ!=)p#NY{l|tdJ&lz
z2`(CN#qQ%1%MQpGGh4@>u6-~7S7r7k(GvL;|c`nzAQH8#_UYyNbbaxm2Po*
zBC+NrtwZ{@~Ltz8s;bM5*XYK)hBofJfYsonscgHbn|BJDNf6%
z-zrHtHdUdN#2RaBYQD;Xg*bopAaIi(T+j;GMTRaG%LEDuNvzziT;;?J;o?gMrz^J1
z-^wiXNV^*al~(3E^6-jC2;?NaEDjCJjS>uEB&V`uGEU^8mIjeopxp3Qt?aceU!<|d
zkg`Trm+rdtHtpid6e$^ts1_*Y9;PwaS@$}h!d)t#&Q)V%X=`>spR_Q
zb#G~VRS#MMTCeL1t7%80ShjwUstgr3F2?iyGAgKbZ;d>rRi?2(Bm6w+zol4_EM&hu
zbx_;+e#d5~uf(98js45;3Mv`pe}6bXy5$nYhYV6S1<1Y$NPWg4BY$Ik6fp`lagHt$
zYkTL`d*tc!;bro%(%{ashxTRmIenvY3OAr*D+m<^d<;W#+7okU2`_tyN7OeyTTJQo
zF%E8f^YA_9^9~OK7ir8ukkjb2g%IfD3)@DK>9G!v8wYwrRo7wz=bupa?6F%M*(EtV
z;b3{Y`HVBn)n>|JxEVZ9?4RQ&(*~k+Ys)2h;~pk{mu94U=kW=c)kcv$`1GF|*C_i2
zke?!@-PaC@d!+_uu@gQEk*_C0d-xKrfqch+YdC@<61ChSk@ixGfRIfxZ!99zH5da(
zJ|c|Q;4HBS`bmuW8OhW7%OqV!N@nw;3&kUipItHeUsDeqJ2w7itB5JL@@F^#LHf?}
zuVub`Z4iZhjV;L^O-0mV%CmAQj~X=xj2O@Mg{fi+(gWiBll<>^lM%O*>$+Lw7FVtD
zU$BvS?H@>90lz|c`*G-WAPJ^-zcQvT10C)nZDtTW@Eb6DcWdeBZ>c|eK_`gmM$SJY
z4@Nf#8~Yu)_1XErRzH!X9d+=YmyeZB;p}XG2YnovAK)AaXm5m&B#C
zT8t$K%GAQYBrf_w1(WDBuHpP_xN&z{rd@FWEo~j$n1_f!6=%wNkHGHuRjfp_G3)yE
z@?oUHODuVvW`u$2kc!z*R!y!Qy?XVKDzRkuvlZMA(OTfA7orlcMZFHPwA*G2jL9;n
z8nbD4D4*Buyu{>?uZYXrqlq7U@9qlM%9@<#pS=9ZXciIOo`?+TmA98{k|E|5
zspsKsajk~&{T-p=Wchd9{W67%(Cp`b_pkag9NAu57a8<(Uu?SN@NK(7MDn@ROI+?4
zxmF*3?3e!(Bwv{@WmWhDerxp_J7!y38uXVM{&hK&)Fa&*
zlYMHHTXpV!++0o3W7||h+jzmNUe$fEu|bJjqI?VYsC7MjE$aej+PIp5f`FGXxVCPY*kzYl&1a?jU)j#TaX!6!`*tECXo`uG
z%%6_mN}mW4$Hip8MsQJd#U3#*WupGIqz5er7k*bXoBPgdr!G
z`qJgIQ9yh*ITn%IzgB&~W$^_gpqbW`O1~$|B0>+0amV<6i%bJ-9o~xGgA<_BZX#)T7
zmO!)QVHFlZ7a5;K!?C}oOa_u`GZPf1J@&fkB2px4iOFms!Ft9xJ06Y?at#+gxz5Gs
zTD3#zG+Qd{JCTmv$h&vDRt)1LE@^0L*9B6my*r#B@eI87$x7y#Z|8V`8JS`8et}&0
z_QRH=f=P;B?U323jh%)JbgtFy6gM^wp%Hln`u26b`Ps&J*bZlTILT9cIL5irVcnjF
zao^qZM7`Y)Iv4SjUp(6p5|33ktWv0Ktj~%ocKb2BWjTa@BIt{?>fTJ%boiBT^Ie@Q
zdlygZ^SI$HjN-}f-r6~S5V$e!uu6k24JO@iu8G1j{y7Gv?^4nVYfHqiB?<0@qxTXRU)<;*}X})4uhn-6Ch~WRRRXX`WHMzUVsv%}&cNSPZ(>+~LEAF2+_7{s}46
z1Q9iVHx2sBj65fvDtgi^IP81Wroen{;L#CuM`rLjUmmB7)S1I0&UQOa9znvW4Aa+omd0sSe-w;R-btv*?=5}d7i0H7eQqE;
zFyrqgdD{8sV?4R=2y2kMK9k5IBB*Pq#$5^RV+@+UU-$MI_U}V&Ri6M&ML?PXIu3NI
z=qQ>aBhqc{mDIje6!drBTNf0R
zcxQXaWQ*L12FsmR?HEc5T;YCjp2PE!n1<>B@??JBTZ&-g(tO_oN*+uGeJ2exQ0iOx
z`GW@h;Lb8_p#42R(TvV<^~4jR3m<9@or2Y0Pk|5Bk-uK^7iv4vGZ4l4Oz^3jYSncZ
z(t3&?l_{|
z&AQIl9-d^*YLf`H!6Wv%J;9}q2S9#k9TVK>zKeB@`aQrfQy>e;rGL{C1EX6aRiocBQhD|(;3@D0_
z(OG2dkA{Mu1Ro(Y=PCdOsrPJ|&Se{RZEHV8gw>}4yd&tPm%jg_0i+z3jt+##
zy+l7+P)aKF37++>SJKe@#Kj-QGw0Z^u86;tI|`+XZ*oK^Ob-vdJe?qVXc&8r+p~Co
zxw$l@xVepbqVt_VIy+n=r&?zRBT9fy{c!U-q8}7jdZ>g2=KoEQeoo`8URG;L(x=oEL%
z5@3ktWIK^LOS=ZydXMJj1_+$$F?F2`gDpwdnNbb5jf<8&Yf$Iy5uqU5!02LLUzyp=
z30CnYK)7?345stc!1&@mP}X{IuVs1BXQcneDAUiIL}%?n?6G#4EN2#lFH}ua2h%~k
z;ruGjUWn;JGcMGHm4e@9udvV{2@uQ#wSi4GWwp)PFp^AWYcPOfd!OJ_o;w7N|BwSL
zFRN2ex+`MS*Olv5yt&<-%p`@V2wX|omjH@lYnvg`;2l%0*}&=R-SIlO&%DfQ!ywrK
zLTh!=XLAK{yEkXDe##?3R?A>iZ5npqA_cqeRMC^$0@O*~)j}TSW(hNLqab?Nd~_KlR=v1ok(O}iu=
ze>7mEu6IWl-Asw0h2={|2vkWz&aRmG3)KN%IEO%Z+}1`M7Opyb*v0M)ZDE3bhVOjh+hAWG&Iugkmtpg`AT||2^R5Bu;tLj2RF`XHPS6~
z(3K(9$|34pgLkExF3sa(3yLC?O|DjzB0u&YL$bWn
z_oU`rYWlZg@t}J%vopH3Jyz!QG52j-evSuTX2a!ncln#VyV45XywA&WA{}-~t2+W~
z&;GPV_|fko;*|rDrxZW*7N)GwycSnJ8cCbl!cx@FX{G!cntRR5W-$PmzBu{z-iz>=
zurCeCIOI!ZnI
z)_P&+pR{FdRJ;OK8HP!O#$TirB^3m)d81pJSi-kq%d70a)IG|2G)(edy)wC0w?gZM
zJ~Pr2Ncl|ZB5qt*2je6lHMyetZVEGS&S!MZuF3g_^2hb@qy6w``Z?WEu$$+%85x0s
zd^WW2geYSx_i{X6SxEQl9@g*yF11sTaPmhF+<5|-kNa>oYa{+i`xUty#xtB=(xR9k
zzGGRlpLKAB7U<629bcdn4j|+l93S-~6)1TBsB~9NwVCRv&n^s^NS3-{D-2_M&Ug
zlmu`K@sfti=`XTakr*G{w(l610
z8vMjp>Rcsg!3sz~E`+bUCSR-AeM_sD1n=^PbV`8vMqE4^rbV=O0eLVQ(NjKx&Wi(-
z*ZyJM$#o#}9K)^1hqTz`yR7&(f|daf=i5+5*|yx>rPgXGILx*2?W#nZ^DN_%KzsZJ
zy(6S-MZ7+U+Igtua#oES+aw1&>iXUC*`;JFqu^aTTgiQ0
z$GOH1H)`u;c=H6|UVG~>KBfg;E_?j5e6(Zv<4weWlJhNHR^fkBDaGsIVNxxS(E;hx~RdPC2@
zWx@av{;jM*FtykUQTq#_7y{ljxnJm-LchIl{6@v}gRSRprc2Jl#X|06c5+QL!+I7G
z?pqCX%p_>WFwzlL{qWYh9lUMb>j^)hTzkH9Lt_}!-xif=R^yuVI}XPqFQ`J=Pn3milIK=zV~%pk_wAnJ*inkOfPATrL1zOzQ7F&FADHJR2ZpCFO?q0k=v0YeXi+8cb
zU2eboB{%us7FJ3+qC7wq&g98Axp2~94+CK2Zyx>np
zI*(TfGk1_5&?O>V8K>VGImtKsPMQ=GgO>L>r_o~Q)GR@@CkHL-Ub-DeqXT$VL`&2P
z_5ck6$DDCKR(O?&4y6HaB=8xvi9C~msupM&pXP7~>j~>$hrdR?4P9O-xw}W3hsqxw
zeeYZluM5Vx%J(>G-_5_e2{^)ExeC6&s0$v7k&_5`oGGg}YF%wEMPAT~JR!@$J=pHZq5{zqtF*pCcn)>~iJR
zNts?ezx{vjJ6J{abcJHA`&+oXYnIOiPEN_0`}~CN=ET3jSmNzSF9ct
z#J#1=YB2YJq*)E@O5BFAduZfwy^`|Th-(PC!rW?%ARFQdCfQL
zIq-qHeCfQiRWgk!C;P9^q4(r-vK&i}z(Nj16-K8glxc?VX3E#5-9W|alqG$;F};}d
z4$@p9Zzq-BNkb`LQT4d?vbsiWSv39=;-g?0l^t2V$Sxjh9?6d
zdAI4p?yz*2DWb^0;u&X>65w|eWr#7;GX`=D047?Lv3pb30vtskoy;7K7De2?s*Gvu
zoTqouELl4jgH>>MD5yXy3|AT2o;s>H8FQ~D3H7i;h#f)&*IG9=*aJl1@0pe#e+?S4
ziNG)GYc;yPzXAQ-{w}z!&NXL^txs@rx{y&Euzrm8A2!s;MSV_BucoLrrIrkA@d{sS
z^AGH~SMYzYcZI2QpP1I|zA>ub~SYvD)r#iVl2?)TunB0nQX!{Z26fj?Q~_D3l#(
zIfh~(q9XazR0qG?B`lK?f|j)_)Urij2srQPfhp**qcL7_Shiz?+Wl2b{?XBXrluaM
zWv}u__reS`?=<$pVIP;G4p@qOjFT|2xNHA~#UHg>^~`g}|F)8fQ(G{aBe@5rE!>5)m8_ht<_FV}7d@e@@P6{jKjAW3p&UFL8@-QBNPgd3L#`xMM)izB?kT9M
zyi&SB^|z{8R_Wbs;00Wz(W!oUTOrBORTm(|R6912iji1e@hW>_A`v~Y{GEXW85)3R
z{L2?@st|1>^AJZNK#5BYJA^fLMuvk%`G+Pkz42b!$LUukfS*)>&%dnW6bjh=&@zRg
zhqM#x$$)gZ2yHjc`q_DGGu-j;>sxr1aS)?E=!u!t?z7?rUA`MnywH2iW*nkA&R}~z
zow8hY4ou&eqI#ZQpDxh1wW4(}L1d5d0J28y!sZlIAn^t8(^7`db1bOAkwl6^VdErlY%EI|K41UkQA=oc*?nL4i1;
zDY1U8heQx&wXWa&}{4!46q!Hz?JV
zjeI8FRrV>b%abFt+}aQ;MDFby9vb{8Xtwsr)Pz=Pbs(eO+~keBu}8$~4-iv{Uk+Jh
zNeqOCG2PgSZ`H`rLi!YaveUQ_R7y66=4|gi9XKG}KkK%$Nlcs-qKOFmw!cl2n<=h~
zXKGaGs8Lc-IctPrGHkhd(VeNCDc8shpGLP?y7fj`_88+<4)w5pP-{rY<65ieI*?IF
z+fld+;0X}t4f1{(&4`?p!<53TEc+zsw=zWj%0_jU@)X=1>>Z$MZq15JCF(^IA(ZAl
zieMgdrxbj!wTLb+Be0G--I2r6Rn14MDgLs+_Xl477EDzgvN#F%?UPKEF7E`DznvNt?D^
zv?Y9tQJ_l7Lv=ZnOGO?hl5yUF>P$-0Z_1GCRomSo+uXCdVuqJPe(*m(K*h|Y6!R3@v*&)iCSj!x+l`Knfuy!(125&x5)`X(T
zMVa-!CV2!63QzLH65+A{hymBkqT-qZ0p4OLg`?NzXe1C)+7?h1H-EN4GMls05t80~96`6Y!?*}Zw?~n8**0=gPJ6i%ullovh}tb3
zPu!QG86J4-YUpwt7z)fqwsk^*l4B{83FkMqo7HH?`SnnVvb{0mu+$`F`9k~Wh3^<>
zvhk~%BR;Aj>{=}3(+m`_n3v<@PKT)XPeJWP+2%Wzv*Oj=-mAGY1@9f@}&8ehF%&dtM!)!Ur+Wb-)sy)tE#M5Os%ckP;
z2}@o0cnV8+jp@82U{pxtSwWm4$%@`Hh9T?1gyj)2_?-}&C*-VH)ndth@?)#UV#G@w
zTj0v(o~MjiX`$PNz!vRw#oco~$QN+UG!ySUTmRigp+N*TiN$ng;Jrv}G{|1cWuEPp
zxdTHv!nqPa9-t?&s|9r@3CypW5b!(7zn9^pz4zSmSFp`Iku9^&(PwL@Vu9LMrk+Vd)4X3!1;e&?Q-AeBDXIX&OMKaI1quVPoZYPA*Hbs<`EbW`NLP
zc2B)v0#3ryPUxQVm&1p~XU^yq3y!B83pXST0gm?{IUnR(cH`<>2sI1d=>i!k^7=U(
zfkCGGeJ9KbA3;8CnW(>Xfgchb*f`;%uPN0>OW#QS+_p3SS1|{xrEZK}Ss2xOCRM^|VrF~i;Xn5jAEGR{HJ{23G&Inf
zYz2!Dz)AkoLYbMlO&^NCFD}_@>%8fc%2j)>3*nxN3F(|r!)Or{p(%Xzb=Ll)Fnu;*
zu+}{^bKZ(}y?Ma_kV#7k%;CSUQfKLA0sC)}E=PY57kei#q_1=QLu5x-oKMD0gG>bt
zXt2G#b6JGeeX;HiG6GLOsuK^EQR1;J{RvPC!MjeVd$5c>wtBQYAn;ENKKkCOn6|v%
zuyBr8Q!)kyTUi%1SsM{x0Hm*|LB9+NSb2Vfm0%;J~RTy(50&xuZF*EPa0kGY+z|J#%w@EJfNf;sVGT4f}1#=E-*}h5!t|
zE@`M;>$9ui=k!S(#O?%q;ORP66Hs#SRb0we?%UmPdQN3)930FyAoNhFEj0$Bs4iSg
z^d!MhDTY&KA{@E3|0@X{&5>dt@+JN6iT{yEZQ%o?dkeaV^Q5j#w+{n%D`R3}c00d(
z%f36lsrnbk*lFBR1f%>~ii{8uQrYiSFKEw0CdUJhr9H@B^erQv7@6m>9JGDjl;
zj)+Fj`8=b}OPz#y@!%#z@R=A=vIAAASXD*me`^l2#sgTc5fVxoT`B3v%P%l`O>=?b
z+9J7(DZLfDSPCRur2%4`y)|&V1P+S2s)`D~17uh^w|vxPk0`p8qN$iDTY!zD<$ZU4
z3o#u4{irp;_IJ2S2ZHnUA`@A0ta$NtUu<730nj6ZN>
zV?r4DZ2w9?-$2{p%d(j#p74qfA2!-&)Zz~;pN=?efpegC5=_1NAxcmY&D)t3*9MHl?#FZlgumJ->dioal
zxstAy7sV8O-5oz9AUsmuszolI_#r88c(k9LC{+?er&_n2ZeA_6H(J(?hvx
z&F-r9QC&;PTvWdQLl_-!4b%z*9%GF7<(9>H?buA$9Y6Pm;+P?ws6B3Xe0h-AvN|?p
z$@wl%4=nR7L+Y0I^LGMOf3hYkUuYd&YLOO1V)AGP)+2Xss`EI*rlLa9uNZZ5s!;ui
z4hKZ)VB{1nSST}>rNw6LerMyyh_ipNrKN7+;yjav{A)fZ>KpqRtiZ7i>K7Q7l0tep
z71f()`H?k+$(z%i#-TSjrHgHxPpX4wD3i6{+mMvJ+W}`u;WI32rgSe$llgbTbBN$s
zIx=!lSJ)#110MaFsTbupNMRG0If4(6I69{fAgcBRy81BoXI44ExUSa8BL{c97Xi3>
zvu(XIr~KUDc?fT$y)0tFbzBcW{-l;>n0bdW^t%;jW8V!J4
ztcM6JI5O$@hBTjH{Nc_Or4G(jUJ9iWM9sq?DIoE->W4^NSSSG+V_FMmd6&-b5aePdH^bG
zFop0C8Z)esC%m@DR>cmled()y(R6vE);n7GWN?aY2c792q~Ho?@co^P71hXL&}6mf
zhL%W{<<%FfLLfJJ5$T=96gA}&)}&HSYDEGlHq{{7--^0nu>(XKbH&RK881O(FHRRr
zJlghG(_eJgb{laT=}EN6aTSF&srj2NRuz3MgmI7Z)A$0fz`ontSfz$GynV>n=hNEP
z)M7_+&r|vtuoyIVk+XNqCjHG{-J`vi&IQGSn5MShp)s7avsdw#zABORR*1P)Ug#hxu;{npj@rl5u#kk=DbpZ6m0!=~Q_(=QoC2RqK*xn2B`f(+>O*
zeJehI?2zf|(RWY02#Wu(iGnF@&B1Q+Q*jjPbksgsx~|5d=K6N7$bjwrey(dnmfulN
z1Vzs+;D0*|!o5uifDbrrwl^|v;&zh&Bxh}(#43D?rOUf?zP{MZkj$_-8qZ+DXxn`p
z**+uNM!EO59ZIM_m$K#R_224cHV&;33(>UR0uBLYn>EMF4ex7yL*hk!>8^Ljawd8A
zc@D7ua;UaY0vwyHX9leXHsS;e>r<_pd$z@vX0cw}8foCa*jcSRH1m8U8#c@j9&=36
zxD+W?TGmefI+mW1-#EFVqitlBGzVZ%R!u=m${8`i^EpJ(BstY`vo(%#3DKbP=Tlwt
zA?c)!S17u&wU$R_|&$D)C}R%tjy
zNPMRRb|TyRxxHBT?&BRFhF{m+4qiIEg)^=vpEJ0B`SdwI;-X&BUVZ(8*2?sf&v8D8
z_iwa&kFYMtKv5W5{4+{BqFxwjG
zWTA1Uf6~ZR7qr&VsqG$HK5#T{PLsOdJO5%#ewy%+Wgc$S@K;GLM7tx`AZFX)J^9Xn
z8}ma1dxK|lE{V)HkH96pOmwN}3edv()mu2AP7Xx0JbJM{WD?@>Q|
z7<<3Ay`|n-3z|47zJdT%vM&E_3vO+@S$$03F?BQ49XlE}EItf=nbarN2avLspfqdV
z*_mkh1IE&NF^48~YTbru0co{Tcj^iz6uUyzBFl;1(dQ?
zH;#7tBP9539okT~t+MH*#5;`Nm=S+Q4v(<9HC0ZEKB2o41HyO1+zhADLq)e{r~rTW
z61?USUDAyg3-Ly?K;NVIhjvky+Gfc5VsadKi8F18%JE?W>KD*_jz0&gcN-~^3|h)`
zk==Z4iT*epUe@;vf=xjw%p{Xbh7Y3UR}M+spD*Uninf5g0ZPUOasM!CFO
z;CRy^uhpoTlU&vGC(llWcV2Pmnkr2Dp2ADNMiu}hXwzvp)f?9Aa08aE%OIoswUKHs
z6thOG%Dbq)(aejb6`Ee)zri#8z;%yoaaNQN9}`erg>}o>&Ql`O|xT
zWtj8eUl3shtie_ViXhAOu9K{>S91WK-CRq&AwkU=ZAQfcaOvIxK=Z=Om{j!Ds`|M_zrpY><;r&>~N})
zvu()RFbf?cBh<-hoCf)0ZS|$v=L}t!nqT%Vv?3rbR-CqF_^0mHK86Jy=bYBO$7^s4
zCZkq%)!A98r8b1SF|J9_OKzh{roccerxf#XELcdE12ecOK#}|lF3dk~wV`<1I_+5Y
z%l!!Df4vZ7pZFg~VE)6*|BDL$LB#)b!~c=S|1Ue%ee?
zJ%x7CtkMf~8|ow6>$+foy*2aw|NhNi5wlz5`T+dFE)dU1Qo=
z>GxsZtg=gkG+H9?kO|Uj9kg|H2%?g?pGC^$M&82@@;sDA`Sb<}M{p;Lq#ZG&5dVh{
zVNtEHS3@R7ri+cT82b9CDe`FqqOBLPPM&De+gksTz#7+Udg%+mwQ}O*D+7BaqLEP#
z&*Z!wk&kr0o@gNnM9?+q7bic(6*AIG^fu}>DjytOVSoR$4V8ekWlG|Ad;GYG6^-IM
zW40O<(7GvqfNqO?cu*wdQULWnjIwhQfOsOBYLaRF_c+}FL|xsH1*>)iu_}D&+2V0F
zRF?BWBjchw&8>94u=fI_X(gQ53eP8$^Yyvx(4>CFp#2Q7=Xn>R3nZVY!sw`+5C2mUYE%i#5o-zTSPDE_@B^@CRW`@eo2si?d_eIbY6A*9F4ZR15bw7>8TIc
zrxOTIpI;6pI|r^W#{K1DuUhI-Cm5}zZdmghp+=ADLgD#7i(C_@=}zh&<48y!VgS5<
zO?7^GmGAaEgaOA)FK3eTy=nxvC+#9dV~Ovbe{WmST@xSf%2CQB3)ZT&9*RQ0D<{5o
zv29#4bz#H1^}rv~AwRme}d0jUxM@u(PQx^-s)697TX`ehR4?GS^qbkof1cslKgkU)h65qZ9Oc=ml_0temigYLJfnz{IDzUf>bGs4N!v3=Z3jMq&A#7%rM5eQ#dc?k~!
zVpnB`o+K7|Al`Q_U;eD$B
zfJtP*jH`siUq~{KE)`jP2|#TUEFGRryE2`i0**z#*^6~AI|YzIWy$Cu#CSLW3q=GA
z6`?GZymC;dCPk~rBS%eCb`5OLr;RUZ;D`}um=H)BfVIq%7VhiMr)_#G0N#zrNH|__
zc+blN2UAB0=617@>_u;MPHN;P;N#YoE=)R#i$k_`UAA>WWCcEVMh~L_
zj--gtp&|K1#58Yz*AHCTMziU1Jzt_jG0I@qAOHsk$2}yTmVkBp_eHuY$A9)>P6o~I
z%aQ?!(GqeQ-Y+b0I(m9pwgi(IIZZzsbMv+9w{PFtd_<_(LA~0H(xz{=FhLB@(1&qHA5EJw1>>=%q2f&^X>IQ{!GJ4e9U
z&KlB)z(84HmNgm2hg2C0>WM{E(DdPr+EeU_N@57;PC2&DmGFW_9kP&%?X4}+xWi)(
z;)z%wI5>D4a*5XwD)P--sPkoY(a~WBw;E~AW`Yue4kFa^LM3X`8x|}ZUeMnqr}>kH
zG%WWW>3ml$Yez?i%)2pbKPI7?5o?hydokgQyZsNEr{a|mLdt;X2TX(#B1j35xPnPW
z*bMSSOauW>o;*=kO8ojw91VX!qoOQb)zHJ!odWB}d+*K?#sY_jqPdg{Sm2HdYzdEx
zOGVPhVRTGPtv0o}RfVP;Nd(|CB)I;*t&QO8h
zFfekr30S!-LHmV_Su-W+rEwYXJ^;6&3|L$mMC8*bQptyOo9;>Qb9Q9`ySe3%V$A*9
zeKEe+b0{#KWGp$F+tga)0RtI)nhMa-K@JS}2krK~n8vJ=Ngm?R!9G<~RyuU0d?nz#
z-5EK$o(!F?hmX*2Yt6+coY`6jGbb7tF#6nHA
zuKk=GGJ;ZwON1iAfG$E#Y7MnZVmrY|j0eVI(DN_MNFJmyZ|;w4tf@=CCDZ#5N_0K=
z$;R~bbk?}TpfDjfB&aiQ$VA}s?P}xPERJG{kxk5~R`iRS(SK5d+Xs9swCozZISbnS
zk!)I0>t=A<-^z(cmSFz3=jZ23u13X><0b)P)^1T_))Kr`e!-pb#q&J*Q`p+B6la%C
zuVl&0duN<;uOsB3%T9Fp8t{ED108)`y_~Hnd9AUX7h-H?jVuU|}My+C=TjH(jKz
zqMVr0re3S$H@t{zI95qa)+Crz*5Zj}Ao%4Z><+W(nOZd?gDnfNBC3>M8WE61$So|P
zVvqH0SNtDTcsUdzaMDpT=Ty0pDHHNL@Z0w$Y`XO
z2M-_r1S+GaH%pz#Uy0*w$Vdl=X=rQXEzO}d6J^R6zjM1u&c9vYLvLp?W7w(?np9x1
zE_0JSAJCPB%i7p*Wvg)pn5T`8k3-uR?*NT|J`eS#_#54p>!p(mLDvmc-3o0mX*mp_
zN*AeS<>#^-{S%W<*mz^!X$w_2dHWpcJ6^j64qFBft-o}o_Vx80o0>}Du;>kLts;$8
zC`7q$QI(dKYG`Wa8#wl@V4jVWBRGQ@1dr-hstpQL)Tl+aqVpGpbSfN>5i&QMXfiZ>
zaA?T1VGe?rpQ@;+pkrVdd{klI&jVS@I5_iz!=UMpTsa~mBga?1r}aRBm1WS;TT*s0f0lY=JBl66Upy)-k4J}lh=P^8(SXk~0xW=T9v*B|gzIhN
z>qsO7dFd~mgxAy4V?&)=5ieYq?zi?ZEoj)&2o)RLy=@hbCRcfT5jigwtQGE{L*8<@Yd{zg;CsL5mvzfDY}P-wos_6PfprFVaeqNE%h
zKZhLtcQld;ZD+>=nqN~>GvROfueSzJD&BE*}XfU|H&(FssBqY=hPCt`d
zH?@s2>I(|;fcW&YM6#V#!kUIP8$Nkdh0A(bEVj``-AAyYgwY~jB
zT|I7Bf@%;7aL7Wf4dZ%VqF$eiaC38OV6oy3Z#TER2G+fOCd9Iaoy6aLYbPTN{XRPz
z;U!V|vBf%H!}52L2gH_+j;`bTcQRXB+y9onc^wLm5wi3-Be}U>k_u>2Eg$=k!(l@I
zcCg+flakT2Nej3i0yn+g+}%NYb?ta;R?(g5SnwsQ49U8Wng8d|{B+lyRcEDvR3+`O{zfmrmvFrL6acVP%yG98X
zo&+VBg@px@i)%o?dG(`T;n*$S5*rnyiR#=wW}}GsAcfyQpE|>a{=$Hjg=-*_K;UtD
z#z-)AXwSRY?OPefw^iI+
z)AXz#PfEjlwTes|_{sB?4(O@fg0AJ^g8gP}ex9Ucf*@_^J(s_5jJV}c)s$`Myn|Kd
z$6>}#q^n{4vN@+Os$m7KV+`}c%4)4pv@06af4-x5#wj!KKb%caK{A&Y#Rfs
z-po?Dcb1({W=6FKIUirH&(yg=*6aLCekcKwyfK^JN5{wcA3nhO(o}SK#!CINhI`-I
z1)6&n7O&ZmyFMuNwvEic#IiOAwNkR=u5it{B9n2sAJV5pNhar=j5`*N!Na;c7g!l$
z3aYBqUkqqTJ=Re-;)s!EOeij=7SQZ3Hq}ZRds%IM*PtM$wV
z@;rlc*NRK7i3y5BETSKuumEN`Xu_8GP1Ri=OKQ$@I^ko8>H6)4rjiG5{VBM>B|%`&&s^)jS|-_95&yc=GqjNo{zFkw%%HHhS~e=s
zD#sfS+-?*t|J!+ozP6KvtOl!R)@@-z24}`9{QaVLD^9VCSR2b`b!KC#o;Ki<+wXB6
zx3&O0LOWcg4&rv4QG0)4yb}7BFSEg~=IR5#ZRj8kg}dS7_V&^%#Do==#`u
zpy6{ox?jWuR(;pg+f@mT>#HGWHAJRRDDDv~@(IDw&R>9643kK#HN`!1vBJHnC+RM&yIh8{gG2q
zA%e*U3|N0XSRa~oX-3EAneep)@{h2vvd3Xvy$7og(sayr@95+e6~Xvi1tUqnIxoIH
zVWo*OwYElb#uyW{Imam6f2rGbjR!Y3`#gPqkv57dB6K^wRGxc9B(t|aYDGS=m$&S!NmCtrMMaUg(c
zc2qC=2Z`EEFMW-me5B)24AqF*bV5Dr-M5ig(l-WPS%CgaPzs6p_gnCIvTJ=Y<6!gT
zVt@AfYCzjjsMEGi=rDQHo0yc;HqoRNnNFeWZgcm?f;cp(6CNylj36DoL(?TS7eU#+
z7&mfr#y))+CJOXQKUMZ7QIdS9@#-}7y2K1{8)cCt0~-X0O!O?Qx#E4Og+;A2SjalQ
zs7r?qn0H044=sDN$SRG$arw~n=+T_DNdSrarmu)V6@|?1-ZB#hRn`uilTGPJ@fqEy
zGt(f0B+^JDP&f=r{#Y_wi#AVDf-y!RIXU^0jXsFpf>=Ji*TeqSY!H~AMbJdCGLhC)
zn7Rx+sXw6uYj;WRYrLd^5IZq@6JI1C^YkgnedZEYy<&4(z%Q$5yv#Boo{AH8n$a
zhb4Y3PWdr269&?V%uI$xMcUrMzl=;w<_nm*qr=c3Rl@i5wWB;e-`t7D&c-mcQl7x!
zZWB`UGcw=Y2=}~wzrfLx=uet<;m3~=8I~ZRuzvMQUQdr+yTV|ATf1Uuomr__nDf=X
zZ3WYJtHp_ri(}SQAPjv+Y+0=fH4krOP@S&=zZ-t1jW1o@}z;xk8
z(Nz1co&El^HK^NrhVHa-_;&88vTU>_J33=%{if;BEY*J#1n59=07jrGQ#IP>@u#3A
z;!q+E1Rj3ZJ+!4bq9F8PXJ@yMgZL;>&gYA0%_Kbi8?S=XGM~dnQZQ!yBSgcZhY96H
zrWnU;k)qy`rX&&xlDyA%(a1Hhi5CWkmg(`Gb%m(HKi-7Z!LKGRP_B8@`7&hdDy5n=
z`OIxqxiVfX@OX1p(mQu>0Ai*v_cTMiw4qRt3~NBvr9oBy0)r>w3p~V0SCm=An6@3n)>@z!|o-$HvDK
z|3D2ZMJkLE5loMKl6R^ez@Zz%S$&mbeoqH5`Bb){Ei21q&VP)hWS2tjShfFtGE+$z
zzCR$P#uktu+#!w)cX!lWN1XU%K-r=s{|j?)Akf@q#3b#{6cZCuJ~gCxuMXRmI$nGtnH+-h
z+GEi!*X=AP<|fG`1>MBdTb?28JYc=fGvAi2I<$B(rs$;eoJCyR6_bc~p!XR@O-+sD
z=eH`-ye})I5ic1eL~TDmtfJ|8`0VJ*Yr=hNCd)G1p2MMz4C3^Mj?7;!w|Ly%JqmuW
zlIEW^Ft%z?*|fpXda>Jr^1noFZEwFgVV%|*XhH@acv8rdGxeEX{M$(vG{Zw+x(ei@
zmfXb22}8-?Fi`vo-YVrTH*C?a8%M=Hv9MqVH7H^J$KsD?>!SFZ;ZsvnHr_gn=7acz
z#W?0eCdVhVMWN12VV^$>WlQ?f;P^{(&pYTops|btm6aj>_Uz+hqpGwB)vWp0Cf5y<
zft8-je~nn?W11plq}N)4A{l8I7$!ks_x$PXW-2XaRFswX_BnF{R#6YIwMhAgd5F9X
zGmwdadS6(a^fjHtXg8=l?Rc0Sm%hk6E9!5cLVloEy4eh(=FwgP`)~I^5~pBEWo+F6
zSf2ncyMurJN91#cJTy_u8Y}@%!bq1RkGC~-bV@SXRd4F{R-*V`bS+6;W5vZ(&+I<9$;-V|eNfLa5n-6%
z2(}&uGRF;p92eS*sE*oR$@pexaqr*meB)VhmIg@h{uzkk$9~qh#cHhw#>O%)b@+(|
z^IQgqzuj~Sk(J;swEM-3TrJAPCq9k^^^`q{IItKBRXYe}e0Tdr=Huf7da3$l4PdpwWDop%^}n;dD#K4s#DYA8SHZ
z&1!riV4W4R7R#C))JH1~axJ)RYnM$$lIR%6fIVA@zV{XVyx}C+a-Dt8Y9M)^KU0+H
zR4IUb2CJ{Hg>CuaXtD50jB(_Tcx=Z$^WYu2u5kubqmwp%drJ6
z?Fo40g!Qd<-l=TQxqHEOuPX0;^z7iX?Ke^a%XT<13TA^5`4Xcw6D@Ur&VT&CUe0d}
z1GjOVF1^L@>O)l@?bD~$wzgf(nxX1OGD8fEV?TdJcZc2KoUe|oP1#=$$7ee|xbY)A
zDZq+cuTpc(fFdj^=!;{k03C69lMQ(|>uhRfRu%+!k&YOi-3|1QKB
z
z?n?eq1XP>p-IM$Z^C;2L3itnbJZAip*Zo0aw2bs8@(s^~*8T9go!%dHcAz2lM;`yp
zD=7&xjFV$S&5uDaiScyD?B-i1ze`+CoRtz`Wn+Zls4&}MO{@N!ufrzjG$B79)Y2d3tBk&)TxUTw@QS0TEL_?njX|@vq?Uz(nBFK5Pq7*xj#u*R&i|?7+6#
z+|r_n#SW&LXhtheZdah{ZVoqwyT{D>MC3nkFF#N)xLi{p7J1jXlmVeb;cP5?e(=f#
zuT7fvjSbjS781v?7{)-X3*?>tq?)Yd)~|1{BDS(pqC
zC}~H#WXlkUW*H5CDOo<)#x7%RY)A;ShGhI5s*#cRDA8YgqG(HeKDx+#(ZQ?386dv!
zlXCO)w91~Vw4AmOcATuV653fa9R$fyK8ul%rG
z-wfS
zihugoZyr38Im?Zuh6@RcF~t1anQu7>#lPpb#}4cOA!EM11`%f*07RqOVkmX{p~KJ9
z^zP;K#|)$`^Rb{rnHGH{~>1(fawV0*Z#)}M`m8-?ZJV<+e}s9wE#
z)l&az?w^5{)`S(%MRzxdNqrs1n*-=jS^_jqE*5XDrA0+VE`5^*p3CuM<&dZEeCjoz
zR;uu_H9ZPZV|fQq`Cyw4nscrVwi!fE6ciMmX$!_hN7uF;jjKG)d2@aC4ropY)8etW=xJvni)8eHi`H$%#zn^WJ5NLc-rqk|u&&4Z6fD_m&JfSI1Bvb?b<*n&sfl0^t
z=HnmRl`XrFvMKB%9}>PaA`m-fK6a0(8=qPkWS5bb4=v?XcWi&hRY?O5HdulRi4?fN
zlsJ*N-0Qw+Yic@s0(2uy%F@ib;GjXt01Fmx5XbRo6+n|pP(&nodMoap^z{~q
ziEeaUT@Mxe3vJSfI6?uLND(CNr=#^W<1b}jzW58bIfyWTDle$mmS(|x-0|2UlX+9k
zQ^EX7Nw}?EzVoBfT(-LT|=9N@^hcn-_p&sqG
z&*oVs2JSU+N4ZD`FhCAWaS;>|wH2G*Id|?pa#@>tyxX`+4HyIArWDvVrX)2WAOQff
z0qyHu&-S@i^MS-+j--!pr4fPBj~_8({~e1bfcl0wI1kaoN>mJL6KUPQm5N7lB(ui1
zE-o%kq)&djzWJ}ob<-GfDlkB;F31j-VHKvQUGQ3sp`CwyGJk_i!y^sD0fqC@$9|jO
zOqN!r!8-p==F@ZVP=U$qSpY(gQ0)59P1&t@y?5rvg<}E+GB}26NYPp4f2YFQrQtot5mn3wu_qprZ=>Ig-$
zbW26Ws~IgY>}^5w`vTB(G`PTZaDiGBo5o(tp)qli|NeV(
z@H_=R8V39rt5J5YB2Ky?4eJJ#b`_iBe2ot~6%7mLt5t8Vwi^Jy7|jWXqa3amOIoRb
zOr}WVFP--DsS`1WpN%~)t3R!arKF^Q$e12KEqU36AWwnCBICpH4XCsfnyrHr>$I$4
z!DpKX$OKLWarN7nv@!uIA+~RNO)l$$w}p(;b>mx8pwYvu;dD_unryX_NhT8*Tj>BTrTTL&!?O+%Rv;b?B??gSzdp?6Uug9{
zd@V08Z$BdI?fpoCS$)t4mg4rT8Q_I}h`0d-vYZ^|dOB*Q^S|xqTV*vIg?@fVFSmMpaw0qtTRbx}
z({Pg?#{2`sc9)M5N$*N|4;^t$+QP?#mov
zGVC@I*lBVrOU-%2y!7%)fAKjpEFsgQc4{amtiHb95KQEwvf<(3T<9-Zm$xIew#P22
zc2Ix|App^>v6(3L_MCU0d3W##AB0M~3D00EWoKZqsJYT(#@w$Y_H7G22M~ApVFTRHMI_3be)Lkn#0F*V8Pq
zc}`Cjy$bE;FJ6H7p=0y#R>`}-m4(0F>%@P|?7fx{=R^uFdISRnZ2W_xQhD{YuR3t<
z{6yxu=4~JkeA;|(J6_nv#>Nvs&FuLA&PW^he@t(UwFFE8)|a!R{`E`K`i^ZnyE4$k
z;(749Ix|oi$c3QbEJ3b~D_kQsPz~fIUKym($a_7dJ?o+40*OLl^{=&oq$<#Q(yyrp
z{J-FAniyAw9tPbe&IhQ|a`DqFTVQGQ&Gq3!C2==4x{6EJwiPZ8zub-iXoUtkJiG{}
zPaR&}_fn8_z~(=;5lD-aPWD3z8PZS@AaUiomF!G8I}Mf>e~0g#BelA-5#`cj;O5>N
Xviia!U7SGha1wx#SCgwmn*{w2TRX*I
literal 0
HcmV?d00001
diff --git a/web_widget_url_advanced/static/description/index.html b/web_widget_url_advanced/static/description/index.html
new file mode 100644
index 00000000000..e37d03905f2
--- /dev/null
+++ b/web_widget_url_advanced/static/description/index.html
@@ -0,0 +1,445 @@
+
+
+
+
+
+
+Web URL widget advanced
+
+
+
+
+
+
diff --git a/web_widget_url_advanced/static/src/js/url_widget.js b/web_widget_url_advanced/static/src/js/url_widget.js
new file mode 100644
index 00000000000..51e38e44ac1
--- /dev/null
+++ b/web_widget_url_advanced/static/src/js/url_widget.js
@@ -0,0 +1,29 @@
+/* Copyright 2018 Simone Orsi - Camptocamp SA
+License LGPLv3.0 or later (https://www.gnu.org/licenses/lgpl-3.0.en.html). */
+
+odoo.define('web_widget_url_advanced', function (require) {
+ "use strict";
+
+ var basic_fields = require('web.basic_fields');
+
+ basic_fields.UrlWidget.include({
+ /**
+ * @override
+ */
+ init: function () {
+ this._super.apply(this, arguments);
+ // retrieve customized `` text from a field
+ // via `text_field` attribute or `options.text_field`
+ // NOTE: `
+
+
+
+
+
+
+
+
From 044129a085d4e6d9504570a35f2b4bf26db95e24 Mon Sep 17 00:00:00 2001
From: oca-travis
Date: Wed, 9 Jan 2019 08:33:56 +0000
Subject: [PATCH 02/80] [UPD] Update web_widget_url_advanced.pot
---
.../i18n/web_widget_url_advanced.pot | 14 ++++++++++++++
1 file changed, 14 insertions(+)
create mode 100644 web_widget_url_advanced/i18n/web_widget_url_advanced.pot
diff --git a/web_widget_url_advanced/i18n/web_widget_url_advanced.pot b/web_widget_url_advanced/i18n/web_widget_url_advanced.pot
new file mode 100644
index 00000000000..447d3bb3ca4
--- /dev/null
+++ b/web_widget_url_advanced/i18n/web_widget_url_advanced.pot
@@ -0,0 +1,14 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 11.0\n"
+"Report-Msgid-Bugs-To: \n"
+"Last-Translator: <>\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: \n"
+
From 7c83723dc701a98d6a6cab048bf3d842ddf23d1d Mon Sep 17 00:00:00 2001
From: Alexey Pelykh
Date: Sat, 20 Jul 2019 16:25:30 +0300
Subject: [PATCH 03/80] [MIG] web_widget_url_advanced: Migration to 12.0
---
web_widget_url_advanced/README.rst | 21 ++++++----
web_widget_url_advanced/__manifest__.py | 2 +-
.../readme/CONTRIBUTORS.rst | 3 +-
web_widget_url_advanced/readme/ROADMAP.rst | 2 +
.../static/description/index.html | 38 +++++++++++--------
.../static/src/js/url_widget.js | 11 +++---
web_widget_url_advanced/templates/assets.xml | 4 +-
7 files changed, 49 insertions(+), 32 deletions(-)
create mode 100644 web_widget_url_advanced/readme/ROADMAP.rst
diff --git a/web_widget_url_advanced/README.rst b/web_widget_url_advanced/README.rst
index 8bee5c8f0d2..b6271bd5e22 100644
--- a/web_widget_url_advanced/README.rst
+++ b/web_widget_url_advanced/README.rst
@@ -14,13 +14,13 @@ Web URL widget advanced
:target: http://www.gnu.org/licenses/lgpl-3.0-standalone.html
:alt: License: LGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fweb-lightgray.png?logo=github
- :target: https://github.com/OCA/web/tree/11.0/web_widget_url_advanced
+ :target: https://github.com/OCA/web/tree/12.0/web_widget_url_advanced
:alt: OCA/web
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
- :target: https://translation.odoo-community.org/projects/web-11-0/web-11-0-web_widget_url_advanced
+ :target: https://translation.odoo-community.org/projects/web-12-0/web-12-0-web_widget_url_advanced
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png
- :target: https://runbot.odoo-community.org/runbot/162/11.0
+ :target: https://runbot.odoo-community.org/runbot/162/12.0
:alt: Try me on Runbot
|badge1| |badge2| |badge3| |badge4| |badge5|
@@ -61,12 +61,18 @@ if you want to display the website link with partner's name as anchor you can do
This is going to change the rendering from
-.. figure:: https://raw.githubusercontent.com/OCA/web/11.0/web_widget_url_advanced/static/description/before.png
+.. figure:: https://raw.githubusercontent.com/OCA/web/12.0/web_widget_url_advanced/static/description/before.png
to
-.. figure:: https://raw.githubusercontent.com/OCA/web/11.0/web_widget_url_advanced/static/description/after.png
+.. figure:: https://raw.githubusercontent.com/OCA/web/12.0/web_widget_url_advanced/static/description/after.png
+
+Known issues / Roadmap
+======================
+
+* ```` is not supported in tree views.
+
Bug Tracker
===========
@@ -74,7 +80,7 @@ Bug Tracker
Bugs are tracked on `GitHub Issues `_.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us smashing it by providing a detailed and welcomed
-`feedback `_.
+`feedback `_.
Do not contact contributors directly about support or help with technical issues.
@@ -90,6 +96,7 @@ Contributors
~~~~~~~~~~~~
* Simone Orsi
+* Alexey Pelykh
Maintainers
~~~~~~~~~~~
@@ -104,6 +111,6 @@ OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.
-This module is part of the `OCA/web `_ project on GitHub.
+This module is part of the `OCA/web `_ project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
diff --git a/web_widget_url_advanced/__manifest__.py b/web_widget_url_advanced/__manifest__.py
index 61cf228601f..0873e094dae 100644
--- a/web_widget_url_advanced/__manifest__.py
+++ b/web_widget_url_advanced/__manifest__.py
@@ -5,7 +5,7 @@
"summary": "This module extends URL widget "
"for displaying anchors with custom labels.",
"category": "Web",
- "version": "11.0.1.0.0",
+ "version": "12.0.1.0.0",
"license": "LGPL-3",
"author": "Camptocamp, Odoo Community Association (OCA)",
"website": "https://github.com/OCA/web/",
diff --git a/web_widget_url_advanced/readme/CONTRIBUTORS.rst b/web_widget_url_advanced/readme/CONTRIBUTORS.rst
index e8b01820bfa..7181ef36af9 100644
--- a/web_widget_url_advanced/readme/CONTRIBUTORS.rst
+++ b/web_widget_url_advanced/readme/CONTRIBUTORS.rst
@@ -1 +1,2 @@
-* Simone Orsi
\ No newline at end of file
+* Simone Orsi
+* Alexey Pelykh
diff --git a/web_widget_url_advanced/readme/ROADMAP.rst b/web_widget_url_advanced/readme/ROADMAP.rst
new file mode 100644
index 00000000000..cfe086faec9
--- /dev/null
+++ b/web_widget_url_advanced/readme/ROADMAP.rst
@@ -0,0 +1,2 @@
+* ```` is not supported in tree views.
+
\ No newline at end of file
diff --git a/web_widget_url_advanced/static/description/index.html b/web_widget_url_advanced/static/description/index.html
index e37d03905f2..cefc784b1c4 100644
--- a/web_widget_url_advanced/static/description/index.html
+++ b/web_widget_url_advanced/static/description/index.html
@@ -367,7 +367,7 @@ Web URL widget advanced
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
-

+

Extend URL widget features to ease customization of anchor’s text.
By default the URL widget will show the plain URL.
You can specify an attribute text to provide a static label too.
@@ -376,11 +376,12 @@ Web URL widget advanced
+
+
+
+- <field text_field="foo"/> is not supported in tree views.
+
+
-
+
Bugs are tracked on GitHub Issues.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us smashing it by providing a detailed and welcomed
-feedback.
+
feedback.
Do not contact contributors directly about support or help with technical issues.
-
+
-
+
This module is maintained by the OCA.
OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.
-
This module is part of the OCA/web project on GitHub.
+
This module is part of the OCA/web project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
diff --git a/web_widget_url_advanced/static/src/js/url_widget.js b/web_widget_url_advanced/static/src/js/url_widget.js
index 51e38e44ac1..aaa05db274b 100644
--- a/web_widget_url_advanced/static/src/js/url_widget.js
+++ b/web_widget_url_advanced/static/src/js/url_widget.js
@@ -14,13 +14,12 @@ odoo.define('web_widget_url_advanced', function (require) {
this._super.apply(this, arguments);
// retrieve customized `` text from a field
// via `text_field` attribute or `options.text_field`
- // NOTE: `
From 42c528da88bd0d3fba701f88c00a2aedd68cf73a Mon Sep 17 00:00:00 2001
From: oca-travis
Date: Thu, 25 Jul 2019 06:18:25 +0000
Subject: [PATCH 04/80] [UPD] Update web_widget_url_advanced.pot
---
web_widget_url_advanced/i18n/web_widget_url_advanced.pot | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/web_widget_url_advanced/i18n/web_widget_url_advanced.pot b/web_widget_url_advanced/i18n/web_widget_url_advanced.pot
index 447d3bb3ca4..d2e396f159e 100644
--- a/web_widget_url_advanced/i18n/web_widget_url_advanced.pot
+++ b/web_widget_url_advanced/i18n/web_widget_url_advanced.pot
@@ -3,7 +3,7 @@
#
msgid ""
msgstr ""
-"Project-Id-Version: Odoo Server 11.0\n"
+"Project-Id-Version: Odoo Server 12.0\n"
"Report-Msgid-Bugs-To: \n"
"Last-Translator: <>\n"
"Language-Team: \n"
From 38a11c9443c4355f7712a64e3cce747614b5d7ec Mon Sep 17 00:00:00 2001
From: OCA-git-bot
Date: Mon, 29 Jul 2019 03:49:00 +0000
Subject: [PATCH 05/80] [UPD] README.rst
---
web_widget_url_advanced/static/description/index.html | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/web_widget_url_advanced/static/description/index.html b/web_widget_url_advanced/static/description/index.html
index cefc784b1c4..0b059bdf52b 100644
--- a/web_widget_url_advanced/static/description/index.html
+++ b/web_widget_url_advanced/static/description/index.html
@@ -3,7 +3,7 @@
-
+
Web URL widget advanced
-
From 183a5260de8d59bf036a75467ce62f263fd8ba9d Mon Sep 17 00:00:00 2001
From: mymage
Date: Thu, 18 Sep 2025 12:50:52 +0000
Subject: [PATCH 37/80] Added translation using Weblate (Italian)
---
web_widget_url_advanced/i18n/it.po | 14 ++++++++++++++
1 file changed, 14 insertions(+)
create mode 100644 web_widget_url_advanced/i18n/it.po
diff --git a/web_widget_url_advanced/i18n/it.po b/web_widget_url_advanced/i18n/it.po
new file mode 100644
index 00000000000..c0d5085374b
--- /dev/null
+++ b/web_widget_url_advanced/i18n/it.po
@@ -0,0 +1,14 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 18.0\n"
+"Report-Msgid-Bugs-To: \n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: it\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
From 87e38ba10bb6d0b8f8e160dc8209df5e975431e9 Mon Sep 17 00:00:00 2001
From: JasminSForgeFlow
Date: Fri, 21 Nov 2025 09:02:17 +0000
Subject: [PATCH 38/80] [MIG] web_widget_url_advanced: Migration to 19.0
---
web_widget_url_advanced/README.rst | 14 +++++++-------
web_widget_url_advanced/__manifest__.py | 2 +-
.../static/description/index.html | 10 +++++-----
3 files changed, 13 insertions(+), 13 deletions(-)
diff --git a/web_widget_url_advanced/README.rst b/web_widget_url_advanced/README.rst
index 5b1f997d459..3f155c8a2a7 100644
--- a/web_widget_url_advanced/README.rst
+++ b/web_widget_url_advanced/README.rst
@@ -21,13 +21,13 @@ Web URL widget advanced
:target: http://www.gnu.org/licenses/lgpl-3.0-standalone.html
:alt: License: LGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fweb-lightgray.png?logo=github
- :target: https://github.com/OCA/web/tree/18.0/web_widget_url_advanced
+ :target: https://github.com/OCA/web/tree/19.0/web_widget_url_advanced
:alt: OCA/web
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
- :target: https://translation.odoo-community.org/projects/web-18-0/web-18-0-web_widget_url_advanced
+ :target: https://translation.odoo-community.org/projects/web-19-0/web-19-0-web_widget_url_advanced
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png
- :target: https://runboat.odoo-community.org/builds?repo=OCA/web&target_branch=18.0
+ :target: https://runboat.odoo-community.org/builds?repo=OCA/web&target_branch=19.0
:alt: Try me on Runboat
|badge1| |badge2| |badge3| |badge4| |badge5|
@@ -90,8 +90,8 @@ both can be applied inside the options attribute too:
-.. |image1| image:: https://raw.githubusercontent.com/OCA/web/18.0/web_widget_url_advanced/static/description/before.png
-.. |image2| image:: https://raw.githubusercontent.com/OCA/web/18.0/web_widget_url_advanced/static/description/after.png
+.. |image1| image:: https://raw.githubusercontent.com/OCA/web/19.0/web_widget_url_advanced/static/description/before.png
+.. |image2| image:: https://raw.githubusercontent.com/OCA/web/19.0/web_widget_url_advanced/static/description/after.png
Bug Tracker
===========
@@ -99,7 +99,7 @@ Bug Tracker
Bugs are tracked on `GitHub Issues `_.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us to smash it by providing a detailed and welcomed
-`feedback `_.
+`feedback `_.
Do not contact contributors directly about support or help with technical issues.
@@ -141,6 +141,6 @@ OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.
-This module is part of the `OCA/web `_ project on GitHub.
+This module is part of the `OCA/web `_ project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
diff --git a/web_widget_url_advanced/__manifest__.py b/web_widget_url_advanced/__manifest__.py
index 7eae904a80f..f21aa711bd3 100644
--- a/web_widget_url_advanced/__manifest__.py
+++ b/web_widget_url_advanced/__manifest__.py
@@ -5,7 +5,7 @@
"summary": "This module extends URL widget "
"for displaying anchors with custom labels.",
"category": "Web",
- "version": "18.0.1.0.0",
+ "version": "19.0.1.0.0",
"license": "LGPL-3",
"author": "Camptocamp, Odoo Community Association (OCA)",
"website": "https://github.com/OCA/web",
diff --git a/web_widget_url_advanced/static/description/index.html b/web_widget_url_advanced/static/description/index.html
index acb3a00e9a3..686cb6a7f41 100644
--- a/web_widget_url_advanced/static/description/index.html
+++ b/web_widget_url_advanced/static/description/index.html
@@ -374,7 +374,7 @@ Web URL widget advanced
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:8390450f4787bfcef6bcf0da87974bc964fe6e8621d110430885912514941c4a
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
-

+

Extend URL, CopyClipboardURL widget features to ease customization of
anchor’s text.
By default, the URL, CopyClipboardURL widget will show the plain URL.
@@ -412,9 +412,9 @@
<field name="website" widget="url" text_field="name" placeholder="e.g. www.odoo.com"/>
This is going to change the rendering from
-
+
to
-
+
Or user can add any hyperlink text using ‘prefix_name’ attribute
<field name="skype_name" widget="url" prefix_name="skype"/>
@@ -429,7 +429,7 @@
Bugs are tracked on GitHub Issues.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us to smash it by providing a detailed and welcomed
-feedback.
+feedback.
Do not contact contributors directly about support or help with technical issues.
@@ -468,7 +468,7 @@
OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.
-
This module is part of the OCA/web project on GitHub.
+
This module is part of the OCA/web project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
From 261bae06024dd84ccccc138375af4a0b8b1528fb Mon Sep 17 00:00:00 2001
From: "Laurent Mignon (ACSONE)"
Date: Tue, 20 Sep 2016 17:56:56 +0200
Subject: [PATCH 39/80] New module web_notify This technical module allows you
to send instant notification messages from the server to the user in live.
---
web_notify/README.rst | 80 ++++++++++++++++++
web_notify/__init__.py | 1 +
web_notify/__openerp__.py | 22 +++++
web_notify/models/__init__.py | 1 +
web_notify/models/res_users.py | 46 ++++++++++
web_notify/static/description/icon.png | Bin 0 -> 9455 bytes
.../description/notifications_screenshot.png | Bin 0 -> 56872 bytes
web_notify/static/src/js/web_client.js | 53 ++++++++++++
web_notify/tests/__init__.py | 1 +
web_notify/tests/test_res_users.py | 51 +++++++++++
web_notify/views/web_notify.xml | 10 +++
11 files changed, 265 insertions(+)
create mode 100644 web_notify/README.rst
create mode 100644 web_notify/__init__.py
create mode 100644 web_notify/__openerp__.py
create mode 100644 web_notify/models/__init__.py
create mode 100644 web_notify/models/res_users.py
create mode 100644 web_notify/static/description/icon.png
create mode 100644 web_notify/static/description/notifications_screenshot.png
create mode 100644 web_notify/static/src/js/web_client.js
create mode 100644 web_notify/tests/__init__.py
create mode 100644 web_notify/tests/test_res_users.py
create mode 100644 web_notify/views/web_notify.xml
diff --git a/web_notify/README.rst b/web_notify/README.rst
new file mode 100644
index 00000000000..f24f58fe302
--- /dev/null
+++ b/web_notify/README.rst
@@ -0,0 +1,80 @@
+.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg
+ :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
+ :alt: License: AGPL-3
+
+==========
+Web Notify
+==========
+
+Send instant notification messages to the user in live.
+
+This technical module allows you to send instant notification messages from the server to the user in live.
+Two kinds of notification are supported.
+
+* Warning: Displayed in a red flying popup div
+* Information: Displayed in a light yellow flying popup div
+
+To send a notification to the user you just need to call one of the new methods defined on res.users:
+
+.. code-block:: python
+
+ self.env.user.notify_info('My information message')
+
+or
+
+.. code-block:: python
+
+ self.env.user.notify_warning('My marning message')
+
+.. figure:: static/description/notifications_screenshot.png
+ :scale: 80 %
+ :alt: Sample notifications
+
+Installation
+============
+
+This module is based on the Instant Messaging Bus. To work properly, the server must be launched in gevent mode.
+
+
+Usage
+=====
+
+.. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas
+ :alt: Try me on Runbot
+ :target: https://runbot.odoo-community.org/runbot/162/9.0
+
+Bug Tracker
+===========
+
+Bugs are tracked on `GitHub Issues
+`_. In case of trouble, please
+check there if your issue has already been reported. If you spotted it first,
+help us smashing it by providing a detailed and welcomed feedback.
+
+Credits
+=======
+
+Images
+------
+
+* Odoo Community Association: `Icon `_.
+
+Contributors
+------------
+
+* Laurent Mignon
+
+Maintainer
+----------
+
+.. image:: https://odoo-community.org/logo.png
+ :alt: Odoo Community Association
+ :target: https://odoo-community.org
+
+This module is maintained by the OCA.
+
+OCA, or the Odoo Community Association, is a nonprofit organization whose
+mission is to support the collaborative development of Odoo features and
+promote its widespread use.
+
+To contribute to this module, please visit https://odoo-community.org.
diff --git a/web_notify/__init__.py b/web_notify/__init__.py
new file mode 100644
index 00000000000..0650744f6bc
--- /dev/null
+++ b/web_notify/__init__.py
@@ -0,0 +1 @@
+from . import models
diff --git a/web_notify/__openerp__.py b/web_notify/__openerp__.py
new file mode 100644
index 00000000000..a6e542eb576
--- /dev/null
+++ b/web_notify/__openerp__.py
@@ -0,0 +1,22 @@
+# -*- coding: utf-8 -*-
+# Copyright 2016 ACSONE SA/NV
+# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
+
+{
+ 'name': 'Web Notify',
+ 'summary': """
+ Send notification messages to user""",
+ 'version': '9.0.1.0.0',
+ 'license': 'AGPL-3',
+ 'author': 'ACSONE SA/NV,Odoo Community Association (OCA)',
+ 'website': 'https://acsone.eu/',
+ 'depends': [
+ 'web',
+ 'bus',
+ ],
+ 'data': [
+ 'views/web_notify.xml'
+ ],
+ 'demo': [
+ ],
+}
diff --git a/web_notify/models/__init__.py b/web_notify/models/__init__.py
new file mode 100644
index 00000000000..8835165330f
--- /dev/null
+++ b/web_notify/models/__init__.py
@@ -0,0 +1 @@
+from . import res_users
diff --git a/web_notify/models/res_users.py b/web_notify/models/res_users.py
new file mode 100644
index 00000000000..51147455786
--- /dev/null
+++ b/web_notify/models/res_users.py
@@ -0,0 +1,46 @@
+# -*- coding: utf-8 -*-
+# Copyright 2016 ACSONE SA/NV
+# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
+
+from openerp import api, fields, models, _
+
+
+class ResUsers(models.Model):
+
+ _inherit = 'res.users'
+
+ @api.multi
+ @api.depends('create_date')
+ def _compute_channel_names(self):
+ for record in self:
+ res_id = record.id
+ record.notify_info_channel_name = 'notify_info_%s' % res_id
+ record.notify_warning_channel_name = 'notify_warning_%s' % res_id
+
+ notify_info_channel_name = fields.Char(
+ compute='_compute_channel_names')
+ notify_warning_channel_name = fields.Char(
+ compute='_compute_channel_names')
+
+ @api.multi
+ def notify_info(self, message, title=None, sticky=False):
+ title = title or _('Information')
+ self._notify_channel(
+ 'notify_info_channel_name', message, title, sticky)
+
+ @api.multi
+ def notify_warning(self, message, title=None, sticky=False):
+ title = title or _('Warning')
+ self._notify_channel(
+ 'notify_warning_channel_name', message, title, sticky)
+
+ @api.multi
+ def _notify_channel(self, channel_name_field, message, title, sticky):
+ bus_message = {
+ 'message': message,
+ 'title': title,
+ 'sticky': sticky
+ }
+ notifications = [(getattr(record, channel_name_field), bus_message)
+ for record in self]
+ self.env['bus.bus'].sendmany(notifications)
diff --git a/web_notify/static/description/icon.png b/web_notify/static/description/icon.png
new file mode 100644
index 0000000000000000000000000000000000000000..3a0328b516c4980e8e44cdb63fd945757ddd132d
GIT binary patch
literal 9455
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
z
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
Xviia!U7SGha1wx#SCgwmn*{w2TRX*I
literal 0
HcmV?d00001
diff --git a/web_notify/static/description/notifications_screenshot.png b/web_notify/static/description/notifications_screenshot.png
new file mode 100644
index 0000000000000000000000000000000000000000..1a1062cdc5efe61c456eb7b629b6cc79695444ce
GIT binary patch
literal 56872
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