From da86b06236aa27c47a29a15a7d380df1603a62a2 Mon Sep 17 00:00:00 2001 From: Elouan Le Bars Date: Thu, 16 Jan 2020 09:54:35 +0100 Subject: [PATCH] [MOV] emc_website_document -> document_hosting in addons repository --- easy_my_coop_website_document/__init__.py | 1 - easy_my_coop_website_document/__manifest__.py | 23 -- .../controllers/__init__.py | 1 - .../controllers/main.py | 216 ------------------ ...easy_my_coop_website_document_security.xml | 11 - .../security/ir.model.access.csv | 1 - ...asy_my_coop_website_document_templates.xml | 178 --------------- 7 files changed, 431 deletions(-) delete mode 100644 easy_my_coop_website_document/__init__.py delete mode 100644 easy_my_coop_website_document/__manifest__.py delete mode 100644 easy_my_coop_website_document/controllers/__init__.py delete mode 100644 easy_my_coop_website_document/controllers/main.py delete mode 100644 easy_my_coop_website_document/security/easy_my_coop_website_document_security.xml delete mode 100644 easy_my_coop_website_document/security/ir.model.access.csv delete mode 100644 easy_my_coop_website_document/views/easy_my_coop_website_document_templates.xml diff --git a/easy_my_coop_website_document/__init__.py b/easy_my_coop_website_document/__init__.py deleted file mode 100644 index e046e49..0000000 --- a/easy_my_coop_website_document/__init__.py +++ /dev/null @@ -1 +0,0 @@ -from . import controllers diff --git a/easy_my_coop_website_document/__manifest__.py b/easy_my_coop_website_document/__manifest__.py deleted file mode 100644 index 309bd6b..0000000 --- a/easy_my_coop_website_document/__manifest__.py +++ /dev/null @@ -1,23 +0,0 @@ -# Copyright 2018-Coop IT Easy SCRLfs () -# - Rémy Taymans -# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). - -{ - "name": "Easy My Coop Website Document", - "version": "12.0.1.0.0", - "depends": ["website", "document_hosting",], - "author": "Coop IT Easy SCRLfs", - "license": "AGPL-3", - "category": "Cooperative Management", - "website": "www.coopiteasy.be", - "description": """ - Show documents in the website. - """, - "data": [ - "views/easy_my_coop_website_document_templates.xml", - "security/easy_my_coop_website_document_security.xml", - "security/ir.model.access.csv", - ], - "installable": True, - "application": False, -} diff --git a/easy_my_coop_website_document/controllers/__init__.py b/easy_my_coop_website_document/controllers/__init__.py deleted file mode 100644 index 12a7e52..0000000 --- a/easy_my_coop_website_document/controllers/__init__.py +++ /dev/null @@ -1 +0,0 @@ -from . import main diff --git a/easy_my_coop_website_document/controllers/main.py b/easy_my_coop_website_document/controllers/main.py deleted file mode 100644 index 0905d54..0000000 --- a/easy_my_coop_website_document/controllers/main.py +++ /dev/null @@ -1,216 +0,0 @@ -# Copyright 2018 Rémy Taymans -# Copyright 2015-2016 Odoo S.A. -# Copyright 2016 Jairo Llopis -# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). - - -import base64 - -from odoo import http -from odoo.http import request, Response -from odoo.fields import Date - - -class DocumentWebsite(http.Controller): - @http.route("/documents/", auth="public", website=True) - def get_document(self, oid=-1): - """Render a http response for a document""" - document_mgr = request.env["document_hosting.document"] - doc = document_mgr.sudo().browse(oid) - ir_http_mgr = request.env["ir.http"] - status, headers, content = ir_http_mgr.sudo().binary_content( - model=doc._name, - id=oid, - field="document", - filename_field="filename", - download=True, - ) - if status == 304: - return Response(status, headers) - elif status == 301: - # TODO: test this case not sure if this render the same - # return werkzeug.utils.redirect(content, code=301) - return request.redirect(content, code=301) - elif status != 200: - return request.not_found() - content_base64 = base64.b64decode(content) - headers.append(("Content-Length", len(content_base64))) - return request.make_response(content_base64, headers) - - @http.route("/documents", auth="public", website=True) - def template_website_document(self, date_begin=None, date_end=None, **kw): - """ - """ - values = {} - values.update( - self.website_document_side_bar( - date_begin=date_begin, - date_end=date_end, - user=request.env.user, - ) - ) - values.update( - self.display_categories_and_documents( - date_begin=date_begin, - date_end=date_end, - user=request.env.user, - ) - ) - values["size_to_str"] = self.size_to_str - return request.render( - "easy_my_coop_website_document.template_website_document", values, - ) - - def website_document_side_bar( - self, date_begin=None, date_end=None, user=None - ): - domains = [] - # Show only doc that are published - domains.append(("published", "=", True)) - # Show only authorized documents - if not self._is_authorized_user(user): - domains.append(("public", "=", True)) - # Show only doc in the time frame - if date_begin and date_end: - domains.append(("document_date", ">=", date_begin)) - domains.append(("document_date", "<", date_end)) - return { - "archive_groups": self._get_archive_groups( - "document_hosting.document", - domains, - fields=["name", "document_date"], - groupby="document_date", - order="document_date desc", - ), - } - - def display_categories_and_documents( - self, date_begin=None, date_end=None, user=None - ): - """Prepare value for display_categories_and_documents template""" - data = self._data_tree() - # Show only doc that are published - data = self._data_filter_document(data, lambda r: r.published) - # Show only authorized documents - if not self._is_authorized_user(user): - data = self._data_filter_document(data, lambda r: r.public) - # Show only doc in the time frame - if date_begin and date_end: - data = self._data_filter_document( - data, - lambda r: ( - r.document_date >= date_begin - and r.document_date < date_end - ), - ) - # After all the filter, remove the empty categories - data = self._data_remove_empty_category(data) - return { - "category_tree": data, - } - - def size_to_str(self, size): - units = ["o", "ko", "Mo", "Go", "To"] - size_float = float(size) - for unit in units: - if size_float < 1000: - return "%.01f %s" % (size_float, unit) - size_float /= 1000 - - def _data_tree(self, category=None): - """Return a tree with categories and documents in it""" - category_mgr = request.env["document_hosting.document.category"] - document_mgr = request.env["document_hosting.document"] - if category: - categories = category.child_ids.sorted(key=lambda r: r.name) - documents = category.document_ids - else: - categories = category_mgr.sudo().search( - [("parent_id", "=", False)], order="name" - ) - documents = document_mgr.sudo().search([("category", "=", False)]) - if categories.ids: - tree = [] - for cat in categories: - tree.append(self._data_tree(cat)) - return (category, tree, documents) - else: - return (category, [], documents) - - def _data_filter_document(self, data, filter_fun): - category, child_data, documents = data - tree = [] - for entry in child_data: - tree.append(self._data_filter_document(entry, filter_fun)) - return (category, tree, documents.filtered(filter_fun)) - - def _data_remove_empty_category(self, data): - category, child_data, documents = data - child_data = [ - self._data_remove_empty_category(c) - for c in child_data - if not self._data_is_empty(c) - ] - return (category, child_data, documents) - - def _data_is_empty(self, data): - """Return True if data is empty""" - _, child_data, documents = data - # If there is documents, it's not empty. - if documents.ids: - return False - # We are sure there is no documents. - # If there is no child, it's empty. - if not child_data: - return True - # We are sure there is childs - for entry in child_data: - # If a child is not empty, it's not empty - if not self._data_is_empty(entry): - return False - # Else it's empty - return True - - def _is_authorized_user(self, user=None): - return user is not None and ( - user.has_group("base.group_portal") - or user.has_group("base.group_user") - ) - - def _get_archive_groups( - self, - model, - domain=None, - fields=None, - groupby="create_date", - order="create_date desc", - ): - if not model: - return [] - if domain is None: - domain = [] - if fields is None: - fields = ["name", "create_date"] - groups = [] - for group in ( - request.env[model] - .sudo() - .read_group(domain, fields=fields, groupby=groupby, orderby=order) - ): - label = group[groupby] - date_begin = date_end = None - for leaf in group["__domain"]: - if leaf[0] == groupby: - if leaf[1] == ">=": - date_begin = leaf[2] - elif leaf[1] == "<": - date_end = leaf[2] - groups.append( - { - "date_begin": Date.to_string(Date.from_string(date_begin)), - "date_end": Date.to_string(Date.from_string(date_end)), - "name": label, - "item_count": group[groupby + "_count"], - } - ) - return groups diff --git a/easy_my_coop_website_document/security/easy_my_coop_website_document_security.xml b/easy_my_coop_website_document/security/easy_my_coop_website_document_security.xml deleted file mode 100644 index 251b23c..0000000 --- a/easy_my_coop_website_document/security/easy_my_coop_website_document_security.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - diff --git a/easy_my_coop_website_document/security/ir.model.access.csv b/easy_my_coop_website_document/security/ir.model.access.csv deleted file mode 100644 index 97dd8b9..0000000 --- a/easy_my_coop_website_document/security/ir.model.access.csv +++ /dev/null @@ -1 +0,0 @@ -id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink diff --git a/easy_my_coop_website_document/views/easy_my_coop_website_document_templates.xml b/easy_my_coop_website_document/views/easy_my_coop_website_document_templates.xml deleted file mode 100644 index 4544fc7..0000000 --- a/easy_my_coop_website_document/views/easy_my_coop_website_document_templates.xml +++ /dev/null @@ -1,178 +0,0 @@ - - - - - - - - Documents - /documents - - 40 - - - - - - - - - - - - - - - - - - -