Skip to content

Commit fbb32a3

Browse files
committed
Merge PR #453 into 14.0
Signed-off-by dreispt
2 parents 65099e2 + a92578c commit fbb32a3

28 files changed

+1356
-0
lines changed

document_page_portal/README.rst

+103
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
====================
2+
Document Page Portal
3+
====================
4+
5+
..
6+
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
7+
!! This file is generated by oca-gen-addon-readme !!
8+
!! changes will be overwritten. !!
9+
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
10+
!! source digest: sha256:83751d0dd805c839f85221e62ddf9569bc2555dda895792cc05bcc5cbc4ab377
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-OCA%2Fknowledge-lightgray.png?logo=github
20+
:target: https://github.com/OCA/knowledge/tree/13.0/document_page_portal
21+
:alt: OCA/knowledge
22+
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
23+
:target: https://translation.odoo-community.org/projects/knowledge-13-0/knowledge-13-0-document_page_portal
24+
:alt: Translate me on Weblate
25+
.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png
26+
:target: https://runboat.odoo-community.org/builds?repo=OCA/knowledge&target_branch=13.0
27+
:alt: Try me on Runboat
28+
29+
|badge1| |badge2| |badge3| |badge4| |badge5|
30+
31+
This module allows documents to be made available on the portal.
32+
33+
**Table of contents**
34+
35+
.. contents::
36+
:local:
37+
38+
Configuration
39+
=============
40+
41+
No configuration required.
42+
43+
Usage
44+
=====
45+
46+
* Add a user as a follower of the document or configure the document as public so that it is visible through the user portal.
47+
48+
Bug Tracker
49+
===========
50+
51+
Bugs are tracked on `GitHub Issues <https://github.com/OCA/knowledge/issues>`_.
52+
In case of trouble, please check there if your issue has already been reported.
53+
If you spotted it first, help us to smash it by providing a detailed and welcomed
54+
`feedback <https://github.com/OCA/knowledge/issues/new?body=module:%20document_page_portal%0Aversion:%2013.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
55+
56+
Do not contact contributors directly about support or help with technical issues.
57+
58+
Credits
59+
=======
60+
61+
Authors
62+
~~~~~~~
63+
64+
* Escodoo
65+
66+
Contributors
67+
~~~~~~~~~~~~
68+
69+
* `Escodoo <https://www.escodoo.com.br>`_:
70+
71+
* Marcel Savegnago <marcel.savegnago@escodoo.com.br>
72+
73+
Other credits
74+
~~~~~~~~~~~~~
75+
76+
The development of this module has been financially supported by:
77+
78+
* Escodoo <https://www.escodoo.com.br>
79+
80+
Maintainers
81+
~~~~~~~~~~~
82+
83+
This module is maintained by the OCA.
84+
85+
.. image:: https://odoo-community.org/logo.png
86+
:alt: Odoo Community Association
87+
:target: https://odoo-community.org
88+
89+
OCA, or the Odoo Community Association, is a nonprofit organization whose
90+
mission is to support the collaborative development of Odoo features and
91+
promote its widespread use.
92+
93+
.. |maintainer-marcelsavegnago| image:: https://github.com/marcelsavegnago.png?size=40px
94+
:target: https://github.com/marcelsavegnago
95+
:alt: marcelsavegnago
96+
97+
Current `maintainer <https://odoo-community.org/page/maintainer-role>`__:
98+
99+
|maintainer-marcelsavegnago|
100+
101+
This module is part of the `OCA/knowledge <https://github.com/OCA/knowledge/tree/13.0/document_page_portal>`_ project on GitHub.
102+
103+
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

document_page_portal/__init__.py

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
from . import controllers
2+
from . import models

document_page_portal/__manifest__.py

+24
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
# Copyright (C) 2020 - TODAY, Marcel Savegnago - Escodoo).
2+
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
3+
4+
5+
{
6+
"name": "Document Page Portal",
7+
"summary": """
8+
This module enables document page portal""",
9+
"version": "14.0.1.0.0",
10+
"category": "Knowledge Management",
11+
"author": "Escodoo, Odoo Community Association (OCA)",
12+
"maintainers": ["marcelsavegnago"],
13+
"images": ["static/description/banner.png"],
14+
"website": "https://github.com/OCA/knowledge",
15+
"license": "AGPL-3",
16+
"depends": ["base", "portal", "document_page"],
17+
"data": [
18+
"views/assets.xml",
19+
"views/document_page.xml",
20+
"security/document_page_portal_security.xml",
21+
"security/ir.model.access.csv",
22+
"views/document_page_portal_templates.xml",
23+
],
24+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
from . import portal
+147
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,147 @@
1+
# Copyright (C) 2020 - TODAY, Marcel Savegnago - Escodoo).
2+
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
3+
4+
5+
from odoo import http
6+
from odoo.exceptions import AccessError, MissingError
7+
from odoo.http import request
8+
from odoo.osv.expression import OR
9+
from odoo.tools.translate import _
10+
11+
from odoo.addons.portal.controllers.portal import CustomerPortal, pager as portal_pager
12+
13+
14+
class CustomerPortal(CustomerPortal):
15+
def _prepare_portal_layout_values(self):
16+
values = super(CustomerPortal, self)._prepare_portal_layout_values()
17+
values["document_page_count"] = request.env["document.page"].search_count(
18+
[("type", "=", "content")]
19+
)
20+
return values
21+
22+
def _document_page_get_page_view_values(
23+
self, document_page, access_token, **kwargs
24+
):
25+
values = {
26+
"page_name": "document_page",
27+
"document_page": document_page,
28+
}
29+
return self._get_page_view_values(
30+
document_page,
31+
access_token,
32+
values,
33+
"my_document_pages_history",
34+
False,
35+
**kwargs
36+
)
37+
38+
@http.route(
39+
["/my/knowledge/documents/", "/my/knowledge/documents/page/<int:page>"],
40+
type="http",
41+
auth="user",
42+
website=True,
43+
)
44+
def portal_my_knowledge_document_pages(
45+
self,
46+
page=1,
47+
date_begin=None,
48+
date_end=None,
49+
sortby=None,
50+
search=None,
51+
search_in="content",
52+
**kw
53+
):
54+
values = self._prepare_portal_layout_values()
55+
domain = [("type", "=", "content")]
56+
57+
searchbar_sortings = {
58+
"date": {"label": _("Newest"), "order": "create_date desc"},
59+
"name": {"label": _("Name"), "order": "name"},
60+
"parent": {"label": _("Category"), "order": "parent_id"},
61+
}
62+
searchbar_inputs = {
63+
"content": {
64+
"input": "content",
65+
"label": _('Search <span class="nolabel"> (in Content)</span>'),
66+
},
67+
"all": {"input": "all", "label": _("Search in All")},
68+
}
69+
70+
# default sort by value
71+
if not sortby:
72+
sortby = "date"
73+
order = searchbar_sortings[sortby]["order"]
74+
75+
if date_begin and date_end:
76+
domain += [
77+
("create_date", ">", date_begin),
78+
("create_date", "<=", date_end),
79+
]
80+
81+
# search
82+
if search and search_in:
83+
search_domain = []
84+
if search_in in ("content", "all"):
85+
search_domain = OR(
86+
[
87+
search_domain,
88+
["|", ("name", "ilike", search), ("content", "ilike", search)],
89+
]
90+
)
91+
domain += search_domain
92+
93+
# pager
94+
document_pages_count = request.env["document.page"].search_count(domain)
95+
pager = portal_pager(
96+
url="/my/knowledge/documents",
97+
url_args={"date_begin": date_begin, "date_end": date_end, "sortby": sortby},
98+
total=document_pages_count,
99+
page=page,
100+
step=self._items_per_page,
101+
)
102+
103+
document_pages = request.env["document.page"].search(
104+
domain, order=order, limit=self._items_per_page, offset=pager["offset"]
105+
)
106+
request.session["my_document_pages_history"] = document_pages.ids[:100]
107+
108+
values.update(
109+
{
110+
"date": date_begin,
111+
"document_pages": document_pages,
112+
"page_name": "document_page",
113+
"default_url": "/my/knowledge/s",
114+
"pager": pager,
115+
"searchbar_sortings": searchbar_sortings,
116+
"searchbar_inputs": searchbar_inputs,
117+
"sortby": sortby,
118+
"search_in": search_in,
119+
"search": search,
120+
}
121+
)
122+
return request.render(
123+
"document_page_portal.portal_my_knowledge_document_pages", values
124+
)
125+
126+
@http.route(
127+
[
128+
"/knowledge/document/<int:document_page_id>",
129+
"/knowledge/document/<int:document_page_id>/<token>",
130+
"/my/knowledge/document/<int:document_page_id>",
131+
],
132+
type="http",
133+
auth="public",
134+
website=True,
135+
)
136+
def document_pages_followup(self, document_page_id=None, access_token=None, **kw):
137+
try:
138+
document_page_sudo = self._document_check_access(
139+
"document.page", document_page_id, access_token
140+
)
141+
except (AccessError, MissingError):
142+
return request.redirect("/my")
143+
144+
values = self._document_page_get_page_view_values(
145+
document_page_sudo, access_token, **kw
146+
)
147+
return request.render("document_page_portal.document_pages_followup", values)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
# Translation of Odoo Server.
2+
# This file contains the translation of the following modules:
3+
# * document_page_portal
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: document_page_portal
17+
#: model_terms:ir.ui.view,arch_db:document_page_portal.document_pages_followup
18+
msgid "<em class=\"text-muted\"><small>No content</small></em>"
19+
msgstr ""
20+
21+
#. module: document_page_portal
22+
#: model_terms:ir.ui.view,arch_db:document_page_portal.document_pages_followup
23+
msgid "<small class=\"text-right\">Category:</small>"
24+
msgstr ""
25+
26+
#. module: document_page_portal
27+
#: code:addons/document_page_portal/controllers/portal.py:0
28+
#: model_terms:ir.ui.view,arch_db:document_page_portal.portal_my_knowledge_document_pages
29+
#, python-format
30+
msgid "Category"
31+
msgstr ""
32+
33+
#. module: document_page_portal
34+
#: model_terms:ir.ui.view,arch_db:document_page_portal.document_pages_followup
35+
msgid "Current Category of this document"
36+
msgstr ""
37+
38+
#. module: document_page_portal
39+
#: model:ir.model,name:document_page_portal.model_document_page
40+
msgid "Document Page"
41+
msgstr ""
42+
43+
#. module: document_page_portal
44+
#: model:ir.model.fields,help:document_page_portal.field_document_page__is_public
45+
msgid ""
46+
"If true it allows any user of the portal to have access to this document."
47+
msgstr ""
48+
49+
#. module: document_page_portal
50+
#: model_terms:ir.ui.view,arch_db:document_page_portal.portal_my_home_Knowledge_document_page
51+
#: model_terms:ir.ui.view,arch_db:document_page_portal.portal_my_home_menu_Knowledge
52+
#: model_terms:ir.ui.view,arch_db:document_page_portal.portal_my_knowledge_document_pages
53+
msgid "Knowledge Documents"
54+
msgstr ""
55+
56+
#. module: document_page_portal
57+
#: code:addons/document_page_portal/controllers/portal.py:0
58+
#: model_terms:ir.ui.view,arch_db:document_page_portal.portal_my_knowledge_document_pages
59+
#, python-format
60+
msgid "Name"
61+
msgstr ""
62+
63+
#. module: document_page_portal
64+
#: code:addons/document_page_portal/controllers/portal.py:0
65+
#, python-format
66+
msgid "Newest"
67+
msgstr ""
68+
69+
#. module: document_page_portal
70+
#: model:ir.model.fields,field_description:document_page_portal.field_document_page__is_public
71+
msgid "Public Page"
72+
msgstr ""
73+
74+
#. module: document_page_portal
75+
#: model_terms:ir.ui.view,arch_db:document_page_portal.portal_my_knowledge_document_pages
76+
msgid "Ref"
77+
msgstr ""
78+
79+
#. module: document_page_portal
80+
#: code:addons/document_page_portal/controllers/portal.py:0
81+
#, python-format
82+
msgid "Search <span class=\"nolabel\"> (in Content)</span>"
83+
msgstr ""
84+
85+
#. module: document_page_portal
86+
#: code:addons/document_page_portal/controllers/portal.py:0
87+
#, python-format
88+
msgid "Search in All"
89+
msgstr ""
90+
91+
#. module: document_page_portal
92+
#: model_terms:ir.ui.view,arch_db:document_page_portal.portal_my_knowledge_document_pages
93+
msgid "There are currently no Knowledge Document for your account."
94+
msgstr ""

0 commit comments

Comments
 (0)