odoo13-addon-shopinvader-wishlist 13.0.3.4.2.dev1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- odoo/addons/shopinvader_wishlist/README.rst +69 -0
- odoo/addons/shopinvader_wishlist/__init__.py +4 -0
- odoo/addons/shopinvader_wishlist/__manifest__.py +15 -0
- odoo/addons/shopinvader_wishlist/components/__init__.py +1 -0
- odoo/addons/shopinvader_wishlist/components/access_info.py +20 -0
- odoo/addons/shopinvader_wishlist/demo/product_set.xml +17 -0
- odoo/addons/shopinvader_wishlist/i18n/shopinvader_wishlist.pot +66 -0
- odoo/addons/shopinvader_wishlist/models/__init__.py +1 -0
- odoo/addons/shopinvader_wishlist/models/product_set.py +80 -0
- odoo/addons/shopinvader_wishlist/readme/CONTRIBUTORS.rst +2 -0
- odoo/addons/shopinvader_wishlist/readme/CREDITS.rst +4 -0
- odoo/addons/shopinvader_wishlist/readme/DESCRIPTION.rst +1 -0
- odoo/addons/shopinvader_wishlist/services/__init__.py +1 -0
- odoo/addons/shopinvader_wishlist/services/wishlist.py +550 -0
- odoo/addons/shopinvader_wishlist/static/description/icon.png +0 -0
- odoo/addons/shopinvader_wishlist/static/description/index.html +426 -0
- odoo/addons/shopinvader_wishlist/tests/__init__.py +2 -0
- odoo/addons/shopinvader_wishlist/tests/test_product_set.py +119 -0
- odoo/addons/shopinvader_wishlist/tests/test_wishlist.py +368 -0
- odoo/addons/shopinvader_wishlist/views/product_set.xml +15 -0
- odoo/addons/shopinvader_wishlist/wizard/__init__.py +1 -0
- odoo/addons/shopinvader_wishlist/wizard/product_set_add.py +24 -0
- odoo/addons/shopinvader_wishlist/wizard/product_set_add.xml +13 -0
- odoo13_addon_shopinvader_wishlist-13.0.3.4.2.dev1.dist-info/METADATA +86 -0
- odoo13_addon_shopinvader_wishlist-13.0.3.4.2.dev1.dist-info/RECORD +27 -0
- odoo13_addon_shopinvader_wishlist-13.0.3.4.2.dev1.dist-info/WHEEL +5 -0
- odoo13_addon_shopinvader_wishlist-13.0.3.4.2.dev1.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
====================
|
|
2
|
+
Shopinvader Wishlist
|
|
3
|
+
====================
|
|
4
|
+
|
|
5
|
+
..
|
|
6
|
+
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
7
|
+
!! This file is generated by oca-gen-addon-readme !!
|
|
8
|
+
!! changes will be overwritten. !!
|
|
9
|
+
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
10
|
+
!! source digest: sha256:659f1a86278f41835a64306a7c85a95392ac9cf2852287596fdcd52019c888ea
|
|
11
|
+
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
12
|
+
|
|
13
|
+
.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
|
|
14
|
+
:target: https://odoo-community.org/page/development-status
|
|
15
|
+
:alt: Beta
|
|
16
|
+
.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png
|
|
17
|
+
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
|
|
18
|
+
:alt: License: AGPL-3
|
|
19
|
+
.. |badge3| image:: https://img.shields.io/badge/github-shopinvader%2Fodoo--shopinvader-lightgray.png?logo=github
|
|
20
|
+
:target: https://github.com/shopinvader/odoo-shopinvader/tree/13.0/shopinvader_wishlist
|
|
21
|
+
:alt: shopinvader/odoo-shopinvader
|
|
22
|
+
|
|
23
|
+
|badge1| |badge2| |badge3|
|
|
24
|
+
|
|
25
|
+
Expose wishlist features for Shopinvader websites.
|
|
26
|
+
|
|
27
|
+
**Table of contents**
|
|
28
|
+
|
|
29
|
+
.. contents::
|
|
30
|
+
:local:
|
|
31
|
+
|
|
32
|
+
Bug Tracker
|
|
33
|
+
===========
|
|
34
|
+
|
|
35
|
+
Bugs are tracked on `GitHub Issues <https://github.com/shopinvader/odoo-shopinvader/issues>`_.
|
|
36
|
+
In case of trouble, please check there if your issue has already been reported.
|
|
37
|
+
If you spotted it first, help us to smash it by providing a detailed and welcomed
|
|
38
|
+
`feedback <https://github.com/shopinvader/odoo-shopinvader/issues/new?body=module:%20shopinvader_wishlist%0Aversion:%2013.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
|
|
39
|
+
|
|
40
|
+
Do not contact contributors directly about support or help with technical issues.
|
|
41
|
+
|
|
42
|
+
Credits
|
|
43
|
+
=======
|
|
44
|
+
|
|
45
|
+
Authors
|
|
46
|
+
~~~~~~~
|
|
47
|
+
|
|
48
|
+
* Camptocamp
|
|
49
|
+
|
|
50
|
+
Contributors
|
|
51
|
+
~~~~~~~~~~~~
|
|
52
|
+
|
|
53
|
+
* Simone Orsi <simone.orsi@camptocamp.com>
|
|
54
|
+
* Laurent Mignon <laurent.mignon@acsone.com>
|
|
55
|
+
|
|
56
|
+
Other credits
|
|
57
|
+
~~~~~~~~~~~~~
|
|
58
|
+
|
|
59
|
+
The development of this module has been financially supported by:
|
|
60
|
+
|
|
61
|
+
* Camptocamp
|
|
62
|
+
* Cosanum
|
|
63
|
+
|
|
64
|
+
Maintainers
|
|
65
|
+
~~~~~~~~~~~
|
|
66
|
+
|
|
67
|
+
This module is part of the `shopinvader/odoo-shopinvader <https://github.com/shopinvader/odoo-shopinvader/tree/13.0/shopinvader_wishlist>`_ project on GitHub.
|
|
68
|
+
|
|
69
|
+
You are welcome to contribute.
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# Copyright 2019 Camptocamp SA
|
|
2
|
+
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
|
3
|
+
|
|
4
|
+
{
|
|
5
|
+
"name": "Shopinvader Wishlist",
|
|
6
|
+
"summary": """
|
|
7
|
+
Handle shop wishlist""",
|
|
8
|
+
"version": "13.0.3.4.1",
|
|
9
|
+
"license": "AGPL-3",
|
|
10
|
+
"author": "Camptocamp,Odoo Community Association (OCA)",
|
|
11
|
+
"website": "https://github.com/shopinvader/odoo-shopinvader",
|
|
12
|
+
"depends": ["shopinvader", "sale_wishlist"],
|
|
13
|
+
"demo": ["demo/product_set.xml"],
|
|
14
|
+
"data": ["views/product_set.xml", "wizard/product_set_add.xml"],
|
|
15
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
from . import access_info
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# Copyright 2021 Camptocamp (http://www.camptocamp.com).
|
|
2
|
+
# @author Simone Orsi <simahawk@gmail.com>
|
|
3
|
+
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
|
4
|
+
|
|
5
|
+
from odoo.addons.component.core import Component
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class PartnerAccess(Component):
|
|
9
|
+
_inherit = "shopinvader.partner.access"
|
|
10
|
+
|
|
11
|
+
def permissions(self):
|
|
12
|
+
perm = super().permissions()
|
|
13
|
+
perm["wishlist"] = self._wishlist_perm()
|
|
14
|
+
return perm
|
|
15
|
+
|
|
16
|
+
def _wishlist_perm(self):
|
|
17
|
+
return {"create": True, "read": True, "update": True, "delete": True}
|
|
18
|
+
|
|
19
|
+
def for_wishlist(self, wishlist):
|
|
20
|
+
return {"read": True, "update": True, "delete": True}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<odoo>
|
|
3
|
+
<record id="wishlist_1" model="product.set">
|
|
4
|
+
<field name="name">Wishlist 1</field>
|
|
5
|
+
<field name="ref">WISH_1</field>
|
|
6
|
+
<field name="typology">wishlist</field>
|
|
7
|
+
<field name="partner_id" ref="shopinvader.partner_1"/>
|
|
8
|
+
</record>
|
|
9
|
+
|
|
10
|
+
<record id="wishlist_1_line_1" model="product.set.line">
|
|
11
|
+
<field name="product_set_id" ref="wishlist_1"/>
|
|
12
|
+
<field name="product_id" ref="product.product_product_4b"/>
|
|
13
|
+
<field name="quantity">1</field>
|
|
14
|
+
<field name="sequence">10</field>
|
|
15
|
+
</record>
|
|
16
|
+
|
|
17
|
+
</odoo>
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
# Translation of Odoo Server.
|
|
2
|
+
# This file contains the translation of the following modules:
|
|
3
|
+
# * shopinvader_wishlist
|
|
4
|
+
#
|
|
5
|
+
msgid ""
|
|
6
|
+
msgstr ""
|
|
7
|
+
"Project-Id-Version: Odoo Server 13.0\n"
|
|
8
|
+
"Report-Msgid-Bugs-To: \n"
|
|
9
|
+
"Last-Translator: \n"
|
|
10
|
+
"Language-Team: \n"
|
|
11
|
+
"MIME-Version: 1.0\n"
|
|
12
|
+
"Content-Type: text/plain; charset=UTF-8\n"
|
|
13
|
+
"Content-Transfer-Encoding: \n"
|
|
14
|
+
"Plural-Forms: \n"
|
|
15
|
+
|
|
16
|
+
#. module: shopinvader_wishlist
|
|
17
|
+
#: model:ir.model.fields,help:shopinvader_wishlist.field_product_set__shopinvader_backend_id
|
|
18
|
+
#: model:ir.model.fields,help:shopinvader_wishlist.field_product_set_add__shopinvader_backend_id
|
|
19
|
+
msgid ""
|
|
20
|
+
"If you are using this set for shopinvader customer you must select a "
|
|
21
|
+
"backend."
|
|
22
|
+
msgstr ""
|
|
23
|
+
|
|
24
|
+
#. module: shopinvader_wishlist
|
|
25
|
+
#: code:addons/shopinvader_wishlist/services/wishlist.py:0
|
|
26
|
+
#, python-format
|
|
27
|
+
msgid "JSON data mode `%s` not found."
|
|
28
|
+
msgstr ""
|
|
29
|
+
|
|
30
|
+
#. module: shopinvader_wishlist
|
|
31
|
+
#: code:addons/shopinvader_wishlist/services/wishlist.py:0
|
|
32
|
+
#, python-format
|
|
33
|
+
msgid "Must be authenticated to create a wishlist"
|
|
34
|
+
msgstr ""
|
|
35
|
+
|
|
36
|
+
#. module: shopinvader_wishlist
|
|
37
|
+
#: model:ir.model,name:shopinvader_wishlist.model_product_set
|
|
38
|
+
msgid "Product set"
|
|
39
|
+
msgstr ""
|
|
40
|
+
|
|
41
|
+
#. module: shopinvader_wishlist
|
|
42
|
+
#: model:ir.model,name:shopinvader_wishlist.model_product_set_line
|
|
43
|
+
msgid "Product set line"
|
|
44
|
+
msgstr ""
|
|
45
|
+
|
|
46
|
+
#. module: shopinvader_wishlist
|
|
47
|
+
#: code:addons/shopinvader_wishlist/models/product_set.py:0
|
|
48
|
+
#, python-format
|
|
49
|
+
msgid "Provide `product_ids` or `invader_variant_id`"
|
|
50
|
+
msgstr ""
|
|
51
|
+
|
|
52
|
+
#. module: shopinvader_wishlist
|
|
53
|
+
#: model:ir.model.fields,field_description:shopinvader_wishlist.field_product_set__shopinvader_backend_id
|
|
54
|
+
#: model:ir.model.fields,field_description:shopinvader_wishlist.field_product_set_add__shopinvader_backend_id
|
|
55
|
+
msgid "Shopinvader Backend"
|
|
56
|
+
msgstr ""
|
|
57
|
+
|
|
58
|
+
#. module: shopinvader_wishlist
|
|
59
|
+
#: model:ir.model.fields,field_description:shopinvader_wishlist.field_product_set_line__shopinvader_variant_id
|
|
60
|
+
msgid "Shopinvader Variant"
|
|
61
|
+
msgstr ""
|
|
62
|
+
|
|
63
|
+
#. module: shopinvader_wishlist
|
|
64
|
+
#: model:ir.model,name:shopinvader_wishlist.model_product_set_add
|
|
65
|
+
msgid "Wizard model to add product set into a quotation"
|
|
66
|
+
msgstr ""
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
from . import product_set
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
# Copyright 2019 Camptocamp SA
|
|
2
|
+
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
|
3
|
+
|
|
4
|
+
import logging
|
|
5
|
+
|
|
6
|
+
from odoo import _, api, exceptions, fields, models
|
|
7
|
+
|
|
8
|
+
_logger = logging.getLogger(__name__)
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class ProductSet(models.Model):
|
|
12
|
+
|
|
13
|
+
_inherit = "product.set"
|
|
14
|
+
|
|
15
|
+
shopinvader_backend_id = fields.Many2one(
|
|
16
|
+
comodel_name="shopinvader.backend",
|
|
17
|
+
help="If you are using this set for shopinvader customer "
|
|
18
|
+
"you must select a backend.",
|
|
19
|
+
)
|
|
20
|
+
|
|
21
|
+
def get_line_by_product(self, product_id=None, invader_variant_id=None):
|
|
22
|
+
# Backward compat
|
|
23
|
+
_logger.info(
|
|
24
|
+
"DEPRECATED `get_line_by_product`. Use `get_lines_by_products`"
|
|
25
|
+
)
|
|
26
|
+
if product_id:
|
|
27
|
+
product_id = [product_id]
|
|
28
|
+
if invader_variant_id:
|
|
29
|
+
invader_variant_id = [invader_variant_id]
|
|
30
|
+
return self.get_lines_by_products(
|
|
31
|
+
product_ids=product_id, invader_variant_ids=invader_variant_id
|
|
32
|
+
)
|
|
33
|
+
|
|
34
|
+
def get_lines_by_products(
|
|
35
|
+
self, product_ids=None, invader_variant_ids=None
|
|
36
|
+
):
|
|
37
|
+
if not product_ids and not invader_variant_ids:
|
|
38
|
+
raise exceptions.ValidationError(
|
|
39
|
+
_("Provide `product_ids` or `invader_variant_id`")
|
|
40
|
+
)
|
|
41
|
+
if product_ids:
|
|
42
|
+
return self.set_line_ids.filtered(
|
|
43
|
+
lambda x: x.product_id.id in product_ids
|
|
44
|
+
)
|
|
45
|
+
else:
|
|
46
|
+
return self.set_line_ids.filtered(
|
|
47
|
+
lambda x: x.shopinvader_variant_id.id in invader_variant_ids
|
|
48
|
+
)
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
class ProductSetLine(models.Model):
|
|
52
|
+
|
|
53
|
+
_inherit = "product.set.line"
|
|
54
|
+
|
|
55
|
+
shopinvader_variant_id = fields.Many2one(
|
|
56
|
+
comodel_name="shopinvader.variant",
|
|
57
|
+
compute="_compute_shopinvader_variant",
|
|
58
|
+
inverse="_inverse_shopinvader_variant",
|
|
59
|
+
)
|
|
60
|
+
|
|
61
|
+
def _inverse_shopinvader_variant(self):
|
|
62
|
+
for record in self:
|
|
63
|
+
if record.shopinvader_variant_id and not record.product_id:
|
|
64
|
+
record.product_id = record.shopinvader_variant_id.record_id
|
|
65
|
+
|
|
66
|
+
@api.depends("product_id")
|
|
67
|
+
@api.depends_context("lang")
|
|
68
|
+
def _compute_shopinvader_variant(self):
|
|
69
|
+
for record in self.with_context(active_test=False):
|
|
70
|
+
if record.product_id and not record.shopinvader_variant_id:
|
|
71
|
+
backend = record.product_set_id.shopinvader_backend_id
|
|
72
|
+
lang = self.env.context.get("lang")
|
|
73
|
+
variant = record.product_id._get_invader_variant(backend, lang)
|
|
74
|
+
if not variant:
|
|
75
|
+
lang = record.product_set_id.partner_id.lang
|
|
76
|
+
# try w/ partner lang
|
|
77
|
+
variant = record.product_id._get_invader_variant(
|
|
78
|
+
backend, lang
|
|
79
|
+
)
|
|
80
|
+
record.shopinvader_variant_id = variant
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Expose wishlist features for Shopinvader websites.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
from . import wishlist
|