From 57318d8123628f371f7dc9658bd449e1b0e58402 Mon Sep 17 00:00:00 2001 From: ilo Date: Wed, 7 Sep 2022 11:56:28 -0300 Subject: [PATCH 01/12] base_user_signature New module to allow user to set their own signature This module by itself does nothing. You can extend that to allow users to send emails with their signatures or use the new field in documents. Fix ``tracking`` param for ``digital_signature`` field --- base_user_signature/README.rst | 94 ++++ base_user_signature/__init__.py | 5 + base_user_signature/__manifest__.py | 24 + .../i18n/base_user_signature.pot | 35 ++ base_user_signature/i18n/fr.po | 33 ++ base_user_signature/models/__init__.py | 1 + base_user_signature/models/res_users.py | 28 ++ base_user_signature/readme/CONTRIBUTORS.rst | 7 + base_user_signature/readme/DESCRIPTION.rst | 1 + base_user_signature/readme/USAGE.rst | 3 + .../static/description/index.html | 436 ++++++++++++++++++ base_user_signature/views/res_users_view.xml | 54 +++ 12 files changed, 721 insertions(+) create mode 100644 base_user_signature/README.rst create mode 100644 base_user_signature/__init__.py create mode 100644 base_user_signature/__manifest__.py create mode 100644 base_user_signature/i18n/base_user_signature.pot create mode 100644 base_user_signature/i18n/fr.po create mode 100644 base_user_signature/models/__init__.py create mode 100644 base_user_signature/models/res_users.py create mode 100644 base_user_signature/readme/CONTRIBUTORS.rst create mode 100644 base_user_signature/readme/DESCRIPTION.rst create mode 100644 base_user_signature/readme/USAGE.rst create mode 100644 base_user_signature/static/description/index.html create mode 100644 base_user_signature/views/res_users_view.xml diff --git a/base_user_signature/README.rst b/base_user_signature/README.rst new file mode 100644 index 000000000..988dc6346 --- /dev/null +++ b/base_user_signature/README.rst @@ -0,0 +1,94 @@ +=================== +Base User Signature +=================== + +.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Production%2FStable-green.png + :target: https://odoo-community.org/page/development-status + :alt: Production/Stable +.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fsocial-lightgray.png?logo=github + :target: https://github.com/OCA/social/tree/15.0/base_user_signature + :alt: OCA/social +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/social-15-0/social-15-0-base_user_signature + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png + :target: https://runbot.odoo-community.org/runbot/205/15.0 + :alt: Try me on Runbot + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module provides a new field on users to store the user's digital signature + +**Table of contents** + +.. contents:: + :local: + +Usage +===== + +#. Go to *Settings > Users > Users*. +#. Open one of the existing users. +#. You can set a digital signature for it on the field "Signature". + +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 +~~~~~~~~~~~~ + +* Jay Vora +* Lorenzo Battistini +* Pedro M. Baeza +* Vicent Cubells +* Mayank Gosai +* Maxime Chambreuil +* Italo LOPES + +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. + +.. |maintainer-imlopes| image:: https://github.com/imlopes.png?size=40px + :target: https://github.com/imlopes + :alt: imlopes + +Current `maintainer `__: + +|maintainer-imlopes| + +This module is part of the `OCA/social `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/base_user_signature/__init__.py b/base_user_signature/__init__.py new file mode 100644 index 000000000..063c02516 --- /dev/null +++ b/base_user_signature/__init__.py @@ -0,0 +1,5 @@ +# Copyright 2004-2010 OpenERP SA () +# Copyright 2011-2015 Serpent Consulting Services Pvt. Ltd. +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from . import models diff --git a/base_user_signature/__manifest__.py b/base_user_signature/__manifest__.py new file mode 100644 index 000000000..25ea52481 --- /dev/null +++ b/base_user_signature/__manifest__.py @@ -0,0 +1,24 @@ +# Copyright 2004-2010 OpenERP SA () +# Copyright 2011-2015 Serpent Consulting Services Pvt. Ltd. +# Copyright 2017 Tecnativa - Vicent Cubells +# Copyright 2019 Open Source Integrators +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +{ + "name": "Base User Signature", + "version": "15.0.1.0.0", + "author": "Camptocamp," "Odoo Community Association (OCA)", + "website": "https://github.com/OCA/social", + "license": "AGPL-3", + "category": "Social", + "depends": [ + "mail", + "web", + ], + "data": [ + "views/res_users_view.xml", + ], + "installable": True, + "development_status": "Production/Stable", + "maintainers": ["imlopes"], +} diff --git a/base_user_signature/i18n/base_user_signature.pot b/base_user_signature/i18n/base_user_signature.pot new file mode 100644 index 000000000..4a80314a6 --- /dev/null +++ b/base_user_signature/i18n/base_user_signature.pot @@ -0,0 +1,35 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * base_user_signature +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 15.0+e\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2022-09-07 10:48+0000\n" +"PO-Revision-Date: 2022-09-07 10:48+0000\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" + +#. module: base_user_signature +#: model_terms:ir.ui.view,arch_db:base_user_signature.inherited_res_users_form +#: model_terms:ir.ui.view,arch_db:base_user_signature.inherited_res_users_preferences_form +msgid "Clear" +msgstr "" + +#. module: base_user_signature +#: model:ir.model.fields,field_description:base_user_signature.field_res_users__digital_signature +msgid "Digital Signature" +msgstr "" + +#. module: base_user_signature +#: model_terms:ir.ui.view,arch_db:base_user_signature.inherited_res_users_form +#: model_terms:ir.ui.view,arch_db:base_user_signature.inherited_res_users_preferences_form +msgid "Signature" +msgstr "" + + diff --git a/base_user_signature/i18n/fr.po b/base_user_signature/i18n/fr.po new file mode 100644 index 000000000..647da65cc --- /dev/null +++ b/base_user_signature/i18n/fr.po @@ -0,0 +1,33 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * base_user_signature +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 15.0+e\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2022-09-07 10:48+0000\n" +"PO-Revision-Date: 2022-09-07 10:48+0000\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" + +#. module: base_user_signature +#: model_terms:ir.ui.view,arch_db:base_user_signature.inherited_res_users_form +#: model_terms:ir.ui.view,arch_db:base_user_signature.inherited_res_users_preferences_form +msgid "Clear" +msgstr "Effacer" + +#. module: base_user_signature +#: model:ir.model.fields,field_description:base_user_signature.field_res_users__digital_signature +msgid "Digital Signature" +msgstr "Signature numérique" + +#. module: base_user_signature +#: model_terms:ir.ui.view,arch_db:base_user_signature.inherited_res_users_form +#: model_terms:ir.ui.view,arch_db:base_user_signature.inherited_res_users_preferences_form +msgid "Signature" +msgstr "Signature" diff --git a/base_user_signature/models/__init__.py b/base_user_signature/models/__init__.py new file mode 100644 index 000000000..883516533 --- /dev/null +++ b/base_user_signature/models/__init__.py @@ -0,0 +1 @@ +from . import res_users diff --git a/base_user_signature/models/res_users.py b/base_user_signature/models/res_users.py new file mode 100644 index 000000000..b8ddef0d8 --- /dev/null +++ b/base_user_signature/models/res_users.py @@ -0,0 +1,28 @@ +# Copyright 2004-2010 OpenERP SA () +# Copyright 2011-2015 Serpent Consulting Services Pvt. Ltd. +# Copyright 2017 Tecnativa - Vicent Cubells +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + + +from odoo import fields, models + + +class ResUsers(models.Model): + _inherit = "res.users" + + digital_signature = fields.Image( + copy=False, + max_width=1024, + max_height=1024, + ) + + def clear_digital_signature(self): + self.digital_signature = False + + @property + def SELF_READABLE_FIELDS(self): + return super().SELF_READABLE_FIELDS + ["digital_signature"] + + @property + def SELF_WRITEABLE_FIELDS(self): + return super().SELF_WRITEABLE_FIELDS + ["digital_signature"] diff --git a/base_user_signature/readme/CONTRIBUTORS.rst b/base_user_signature/readme/CONTRIBUTORS.rst new file mode 100644 index 000000000..e8b219cb1 --- /dev/null +++ b/base_user_signature/readme/CONTRIBUTORS.rst @@ -0,0 +1,7 @@ +* Jay Vora +* Lorenzo Battistini +* Pedro M. Baeza +* Vicent Cubells +* Mayank Gosai +* Maxime Chambreuil +* Italo LOPES diff --git a/base_user_signature/readme/DESCRIPTION.rst b/base_user_signature/readme/DESCRIPTION.rst new file mode 100644 index 000000000..16e006329 --- /dev/null +++ b/base_user_signature/readme/DESCRIPTION.rst @@ -0,0 +1 @@ +This module provides a new field on users to store the user's digital signature diff --git a/base_user_signature/readme/USAGE.rst b/base_user_signature/readme/USAGE.rst new file mode 100644 index 000000000..1533be616 --- /dev/null +++ b/base_user_signature/readme/USAGE.rst @@ -0,0 +1,3 @@ +#. Go to *Settings > Users > Users*. +#. Open one of the existing users. +#. You can set a digital signature for it on the field "Signature". diff --git a/base_user_signature/static/description/index.html b/base_user_signature/static/description/index.html new file mode 100644 index 000000000..dfc9395ed --- /dev/null +++ b/base_user_signature/static/description/index.html @@ -0,0 +1,436 @@ + + + + + + +Base User Signature + + + +
+

Base User Signature

+ + +

Production/Stable License: AGPL-3 OCA/social Translate me on Weblate Try me on Runbot

+

This module provides a new field on users to store the user’s digital signature

+

Table of contents

+ +
+

Usage

+
    +
  1. Go to Settings > Users > Users.
  2. +
  3. Open one of the existing users.
  4. +
  5. You can set a digital signature for it on the field “Signature”.
  6. +
+
+
+

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

+ +
+
+

Maintainers

+

This module is maintained by the OCA.

+Odoo Community Association +

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.

+

Current maintainer:

+

imlopes

+

This module is part of the OCA/social project on GitHub.

+

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

+
+
+
+ + diff --git a/base_user_signature/views/res_users_view.xml b/base_user_signature/views/res_users_view.xml new file mode 100644 index 000000000..dcef6ba1a --- /dev/null +++ b/base_user_signature/views/res_users_view.xml @@ -0,0 +1,54 @@ + + + + + inherited.res.users.form + res.users + + + + + + + + + inherited.res.users.preferences.form + res.users + + + + + + + + From b962b2b5e07a27b926ab8ed4a7d0c6e80ae64e53 Mon Sep 17 00:00:00 2001 From: oca-ci Date: Wed, 24 Jan 2024 12:36:51 +0000 Subject: [PATCH 02/12] Update base_user_signature.pot --- base_user_signature/i18n/base_user_signature.pot | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/base_user_signature/i18n/base_user_signature.pot b/base_user_signature/i18n/base_user_signature.pot index 4a80314a6..f1ddb3f08 100644 --- a/base_user_signature/i18n/base_user_signature.pot +++ b/base_user_signature/i18n/base_user_signature.pot @@ -4,10 +4,8 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 15.0+e\n" +"Project-Id-Version: Odoo Server 15.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-09-07 10:48+0000\n" -"PO-Revision-Date: 2022-09-07 10:48+0000\n" "Last-Translator: \n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -32,4 +30,7 @@ msgstr "" msgid "Signature" msgstr "" - +#. module: base_user_signature +#: model:ir.model,name:base_user_signature.model_res_users +msgid "Users" +msgstr "" From 805cea04331efe4f4e3bef746bbd03ccf6d81d17 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Wed, 24 Jan 2024 12:41:08 +0000 Subject: [PATCH 03/12] post-merge updates --- base_user_signature/README.rst | 15 ++++--- .../static/description/icon.png | Bin 0 -> 9455 bytes .../static/description/index.html | 39 +++++++++--------- 3 files changed, 29 insertions(+), 25 deletions(-) create mode 100644 base_user_signature/static/description/icon.png diff --git a/base_user_signature/README.rst b/base_user_signature/README.rst index 988dc6346..63dcd8fad 100644 --- a/base_user_signature/README.rst +++ b/base_user_signature/README.rst @@ -2,10 +2,13 @@ Base User Signature =================== -.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:d6f4985bf90f88dc71d73eeffa039d20d5b0298fb5b772476748557a0e1ffc42 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Production%2FStable-green.png :target: https://odoo-community.org/page/development-status @@ -19,11 +22,11 @@ Base User Signature .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png :target: https://translation.odoo-community.org/projects/social-15-0/social-15-0-base_user_signature :alt: Translate me on Weblate -.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/205/15.0 - :alt: Try me on Runbot +.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png + :target: https://runboat.odoo-community.org/builds?repo=OCA/social&target_branch=15.0 + :alt: Try me on Runboat -|badge1| |badge2| |badge3| |badge4| |badge5| +|badge1| |badge2| |badge3| |badge4| |badge5| This module provides a new field on users to store the user's digital signature @@ -44,7 +47,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 +If you spotted it first, help us to smash it by providing a detailed and welcomed `feedback `_. Do not contact contributors directly about support or help with technical issues. diff --git a/base_user_signature/static/description/icon.png b/base_user_signature/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..3a0328b516c4980e8e44cdb63fd945757ddd132d GIT binary patch literal 9455 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 z z?n?eq1XP>p-IM$Z^C;2L3itnbJZAip*Zo0aw2bs8@(s^~*8T9go!%dHcAz2lM;`yp zD=7&xjFV$S&5uDaiScyD?B-i1ze`+CoRtz`Wn+Zl&#s4&}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/base_user_signature/static/description/index.html b/base_user_signature/static/description/index.html index dfc9395ed..4cada79a0 100644 --- a/base_user_signature/static/description/index.html +++ b/base_user_signature/static/description/index.html @@ -1,20 +1,19 @@ - - + Base User Signature -
-

Base User Signature

+
+ + +Odoo Community Association + +
+

Base User Signature

-

Production/Stable License: AGPL-3 OCA/social Translate me on Weblate Try me on Runboat

-

This module provides a new field on users to store the user’s digital signature

+

Production/Stable License: AGPL-3 OCA/mail Translate me on Weblate Try me on Runboat

+

This module provides a new field on users to store the user’s digital +signature

Table of contents

    @@ -384,7 +391,7 @@

    Base User Signature

-

Usage

+

Usage

  1. Go to Settings > Users & Companies > Users.
  2. Open one of the existing users.
  3. @@ -392,23 +399,23 @@

    Usage

-

Bug Tracker

-

Bugs are tracked on GitHub Issues. +

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.

-

Credits

+

Credits

-

Authors

+

Authors

  • Camptocamp
-

Contributors

+

Contributors

-

Maintainers

+

Maintainers

This module is maintained by the OCA.

-Odoo Community Association + +Odoo Community Association +

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.

Current maintainer:

imlopes

-

This module is part of the OCA/social project on GitHub.

+

This module is part of the OCA/mail project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

+
diff --git a/base_user_signature/views/res_users_view.xml b/base_user_signature/views/res_users_view.xml index dcef6ba1a..9af8a30b5 100644 --- a/base_user_signature/views/res_users_view.xml +++ b/base_user_signature/views/res_users_view.xml @@ -1,6 +1,5 @@ - inherited.res.users.form res.users @@ -50,5 +49,4 @@ - From f6a5296dc4b54e2c4f63f67294d991e903c48924 Mon Sep 17 00:00:00 2001 From: Bhavesh Heliconia Date: Thu, 11 Dec 2025 17:21:51 +0530 Subject: [PATCH 12/12] [MIG] base_user_signature: Migration to 19.0 --- base_user_signature/README.rst | 3 + base_user_signature/__manifest__.py | 2 +- base_user_signature/readme/CONTRIBUTORS.md | 18 ++--- .../static/description/index.html | 4 ++ base_user_signature/tests/__init__.py | 1 + .../tests/test_base_user_signature.py | 66 +++++++++++++++++++ 6 files changed, 85 insertions(+), 9 deletions(-) create mode 100644 base_user_signature/tests/__init__.py create mode 100644 base_user_signature/tests/test_base_user_signature.py diff --git a/base_user_signature/README.rst b/base_user_signature/README.rst index 77186bd12..e7bb83a33 100644 --- a/base_user_signature/README.rst +++ b/base_user_signature/README.rst @@ -76,6 +76,9 @@ Contributors - Maxime Chambreuil - Italo LOPES - Saran Lim. +- `Heliconia Solutions Pvt. Ltd. `__ + + - Bhavesh Heliconia Maintainers ----------- diff --git a/base_user_signature/__manifest__.py b/base_user_signature/__manifest__.py index af7477452..7cf5b67d8 100644 --- a/base_user_signature/__manifest__.py +++ b/base_user_signature/__manifest__.py @@ -6,7 +6,7 @@ { "name": "Base User Signature", - "version": "16.0.1.0.0", + "version": "19.0.1.0.0", "author": "Camptocamp, Odoo Community Association (OCA)", "website": "https://github.com/OCA/mail", "license": "AGPL-3", diff --git a/base_user_signature/readme/CONTRIBUTORS.md b/base_user_signature/readme/CONTRIBUTORS.md index 3085457c3..10c041aa9 100644 --- a/base_user_signature/readme/CONTRIBUTORS.md +++ b/base_user_signature/readme/CONTRIBUTORS.md @@ -1,8 +1,10 @@ -- Jay Vora \ -- Lorenzo Battistini \ -- Pedro M. Baeza \ -- Vicent Cubells \ -- Mayank Gosai \ -- Maxime Chambreuil \ -- Italo LOPES \ -- Saran Lim. \ +- Jay Vora \<\> +- Lorenzo Battistini \<\> +- Pedro M. Baeza \<\> +- Vicent Cubells \<\> +- Mayank Gosai \<\> +- Maxime Chambreuil \<\> +- Italo LOPES \<\> +- Saran Lim. \<\> +- [Heliconia Solutions Pvt. Ltd.](https://www.heliconia.io) + - Bhavesh Heliconia diff --git a/base_user_signature/static/description/index.html b/base_user_signature/static/description/index.html index 66146bdcc..776f92a25 100644 --- a/base_user_signature/static/description/index.html +++ b/base_user_signature/static/description/index.html @@ -425,6 +425,10 @@

Contributors

  • Maxime Chambreuil <mchambreuil@opensourceintegrators.com>
  • Italo LOPES <contact@ilopes.me>
  • Saran Lim. <saranl@ecosoft.co.th>
  • +
  • Heliconia Solutions Pvt. Ltd.
      +
    • Bhavesh Heliconia
    • +
    +
  • diff --git a/base_user_signature/tests/__init__.py b/base_user_signature/tests/__init__.py new file mode 100644 index 000000000..da998a1a5 --- /dev/null +++ b/base_user_signature/tests/__init__.py @@ -0,0 +1 @@ +from . import test_base_user_signature diff --git a/base_user_signature/tests/test_base_user_signature.py b/base_user_signature/tests/test_base_user_signature.py new file mode 100644 index 000000000..bc99eb0b0 --- /dev/null +++ b/base_user_signature/tests/test_base_user_signature.py @@ -0,0 +1,66 @@ +from base64 import b64encode +from io import BytesIO + +from PIL import Image + +from odoo.addons.base.tests.common import SavepointCaseWithUserDemo + + +class TestResUsersDigitalSignature(SavepointCaseWithUserDemo): + @classmethod + def setUpClass(cls): + super().setUpClass() + cls.user_model = cls.env["res.users"] + + # Create a test user + cls.user = cls.user_model.create( + { + "name": "Test User", + "login": "test_user", + "email": "test_user@example.com", + } + ) + + def _generate_sample_image(self): + """Generate a small valid image and return its base64-encoded content.""" + img = Image.new("RGB", (10, 10), color="red") # Create a red 10x10 image + buffer = BytesIO() + img.save(buffer, format="PNG") + return b64encode(buffer.getvalue()).decode("ascii") + + def test_digital_signature_field(self): + """Test assigning and clearing the digital signature field.""" + # Generate a valid base64-encoded image + test_signature = self._generate_sample_image() + + # Assign a digital signature to the user + self.user.digital_signature = test_signature + self.assertEqual( + self.user.digital_signature.decode("ascii"), + test_signature, + "Digital signature should be set correctly.", + ) + + # Clear the digital signature using the method + self.user.clear_digital_signature() + self.assertFalse( + self.user.digital_signature, "Digital signature should be cleared." + ) + + def test_self_readable_fields(self): + """Test if 'digital_signature' is included in SELF_READABLE_FIELDS.""" + readable_fields = self.user.SELF_READABLE_FIELDS + self.assertIn( + "digital_signature", + readable_fields, + "'digital_signature' should be in SELF_READABLE_FIELDS.", + ) + + def test_self_writeable_fields(self): + """Test if 'digital_signature' is included in SELF_WRITEABLE_FIELDS.""" + writeable_fields = self.user.SELF_WRITEABLE_FIELDS + self.assertIn( + "digital_signature", + writeable_fields, + "'digital_signature' should be in SELF_WRITEABLE_FIELDS.", + )