Browse Source

[MOV] easy_my_coop_document -> document_hosting in addons repository

pull/40/head
Elouan Le Bars 5 years ago
parent
commit
6fd1cb0b53
  1. 1
      easy_my_coop_document/__init__.py
  2. 35
      easy_my_coop_document/__manifest__.py
  3. 1
      easy_my_coop_document/models/__init__.py
  4. 80
      easy_my_coop_document/models/document.py
  5. 5
      easy_my_coop_document/security/ir.model.access.csv
  6. 39
      easy_my_coop_document/views/easy_my_coop_document_menu.xml
  7. 126
      easy_my_coop_document/views/easy_my_coop_document_views.xml
  8. 2
      easy_my_coop_website_document/__manifest__.py
  9. 8
      easy_my_coop_website_document/controllers/main.py

1
easy_my_coop_document/__init__.py

@ -1 +0,0 @@
from . import models

35
easy_my_coop_document/__manifest__.py

@ -1,35 +0,0 @@
# Copyright 2018 Rémy Taymans <remytaymans@gmail.com>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
{
# migrate in v12 and isolate from emc
# add manager group or use relevant existing group
# add ir.model.access rules for that user
'name': 'Easy My Coop Document',
'summary': """
Manage the documents of your cooperative.
""",
'description': """
""",
'author': 'Rémy Taymans',
'license': 'AGPL-3',
'version': '12.0.1.0.0',
'website': "https://github.com/coopiteasy/vertical-cooperative",
'category': 'Cooperative Management',
'depends': [
'base',
'web',
'mail',
],
'data': [
'security/ir.model.access.csv',
'views/easy_my_coop_document_menu.xml',
'views/easy_my_coop_document_views.xml',
]
}

1
easy_my_coop_document/models/__init__.py

@ -1 +0,0 @@
from . import document

80
easy_my_coop_document/models/document.py

@ -1,80 +0,0 @@
# Copyright 2018 Rémy Taymans <remytaymans@gmail.com>
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
from odoo import models, fields, api
class Document(models.Model):
_name = 'easy_my_coop.document'
_description = "Document"
_order = 'document_date desc, name'
_inherit = 'mail.thread'
name = fields.Char("Name", required=True)
description = fields.Text("Description")
document = fields.Binary('Document', attachment=True, required=True)
filename = fields.Char("Document File Name")
mimetype = fields.Char("Mime-Type", compute='_mimetype')
file_size = fields.Integer("File Size", compute='_file_size')
document_date = fields.Date("Document Date",
default=fields.Date.today())
category = fields.Many2one('easy_my_coop.document.category',
string="Category")
published = fields.Boolean("Published?")
publication_date = fields.Datetime("Publication Date",
compute='_publication_date',
store=True)
public = fields.Boolean("Public?")
@api.depends('document')
def _mimetype(self):
for doc in self:
attachment_mgr = self.env['ir.attachment'].sudo()
attachment = attachment_mgr.search_read(
[('res_model', '=', self._name),
('res_id', '=', doc.id),
('res_field', '=', 'document')],
fields=['mimetype', 'file_size'],
limit=1,
)[0]
doc.mimetype = attachment['mimetype']
@api.depends('document')
def _file_size(self):
for doc in self:
attachment_mgr = self.env['ir.attachment'].sudo()
attachment = attachment_mgr.search_read(
[('res_model', '=', self._name),
('res_id', '=', doc.id),
('res_field', '=', 'document')],
fields=['mimetype', 'file_size'],
limit=1,
)[0]
doc.file_size = attachment['file_size']
@api.depends('published')
def _publication_date(self):
for doc in self:
if doc.published and not doc.publication_date:
doc.publication_date = fields.Datetime.now()
if not doc.published:
doc.publication_date = False
class Category(models.Model):
_name = 'easy_my_coop.document.category'
_description = "Category"
_order = 'name'
name = fields.Char("Name", required=True)
description = fields.Text("Description")
parent_id = fields.Many2one('easy_my_coop.document.category',
string="Parent Category")
child_ids = fields.One2many('easy_my_coop.document.category',
'parent_id',
string="Child Categories")
document_ids = fields.One2many('easy_my_coop.document',
'category',
string="Documents")

5
easy_my_coop_document/security/ir.model.access.csv

@ -1,5 +0,0 @@
id,name,model_id/id,group_id/id,perm_read,perm_write,perm_create,perm_unlink
access_easy_my_coop_document_user_group,access_easy_my_coop_document,model_easy_my_coop_document,base.group_user,1,0,0,0
access_easy_my_coop_document_category_user_group,access_easy_my_coop_document_category,model_easy_my_coop_document_category,base.group_user,1,0,0,0
access_easy_my_coop_document_manager,access_easy_my_coop_document,model_easy_my_coop_document,,1,1,1,1
access_easy_my_coop_document_category_manager,access_easy_my_coop_document_category,model_easy_my_coop_document_category,,1,1,1,1

39
easy_my_coop_document/views/easy_my_coop_document_menu.xml

@ -1,39 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright 2018 Rémy Taymans <remytaymans@gmail.com>
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
-->
<odoo>
<data>
<!-- Action to open document list -->
<act_window id="action_easy_my_coop_document"
name="Document"
res_model="easy_my_coop.document"
view_mode="tree,form" />
<!-- Action to open category list -->
<act_window id="action_easy_my_coop_document_category"
name="Categories"
res_model="easy_my_coop.document.category"
view_mode="tree,form" />
<!-- Root menu for document -->
<menuitem id="menu_main_easy_my_coop_document"
name="Documents"
sequence="45" />
<!-- Menu item to open Document list -->
<menuitem id="menu_document"
name="Documents"
parent="menu_main_easy_my_coop_document"
action="action_easy_my_coop_document" />
<!-- Menu item to open Category list -->
<menuitem id="menu_category"
name="Categories"
parent="menu_main_easy_my_coop_document"
action="action_easy_my_coop_document_category" />
</data>
</odoo>

126
easy_my_coop_document/views/easy_my_coop_document_views.xml

@ -1,126 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright 2018 Rémy Taymans <remytaymans@gmail.com>
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
-->
<odoo>
<data>
<!-- Document form view -->
<record id="view_form_document" model="ir.ui.view">
<field name="name">Document Form</field>
<field name="model">easy_my_coop.document</field>
<field name="arch" type="xml">
<form string="Documents">
<sheet>
<div class="oe_title">
<label for="name" class="oe_edit_only"/>
<h1><field name="name"/></h1>
</div>
<group>
<group>
<field name="filename" invisible="1"/>
<field name="document" filename="filename"/>
<field name="document_date"/>
<field name="description"/>
</group>
<group>
<field name="public"/>
<field name="category"/>
</group>
</group>
<group>
<field name="published"/>
<field name="publication_date" readonly="True"/>
</group>
</sheet>
<!-- Communication -->
<div class="oe_chatter">
<field name="message_follower_ids" widget="mail_followers" />
<field name="message_ids" widget="mail_thread" />
</div>
</form>
</field>
</record>
<!-- Document tree view -->
<record id="view_tree_document" model="ir.ui.view">
<field name="name">Document Tree</field>
<field name="model">easy_my_coop.document</field>
<field name="arch" type="xml">
<tree decoration-muted="not published">
<field name="name"/>
<field name="document" filename="filename"/>
<field name="document_date"/>
<field name="description"/>
<field name="public"/>
<field name="category"/>
<field name="published"/>
<field name="publication_date"/>
</tree>
</field>
</record>
<!-- Document search view -->
<record id="view_search_document" model="ir.ui.view">
<field name="name">Document Search</field>
<field name="model">easy_my_coop.document</field>
<field name="arch" type="xml">
<search>
<field name="name"/>
<field name="category"/>
<filter name="public" string="Public" domain="[('public', '=', True)]"/>
<filter name="published" string="Published" domain="[('published', '=', True)]"/>
<filter name="category" string="Category" context="{'group_by': 'category'}"/>
</search>
</field>
</record>
<!-- Category form view -->
<record id="view_form_category" model="ir.ui.view">
<field name="name">Category Form</field>
<field name="model">easy_my_coop.document.category</field>
<field name="arch" type="xml">
<form string="Categories">
<sheet>
<div class="oe_title">
<label for="name" class="oe_edit_only"/>
<h1><field name="name"/></h1>
</div>
<group>
<field name="description"/>
<field name="parent_id"/>
</group>
</sheet>
</form>
</field>
</record>
<!-- Category tree view -->
<record id="view_tree_category" model="ir.ui.view">
<field name="name">Category Tree</field>
<field name="model">easy_my_coop.document.category</field>
<field name="arch" type="xml">
<tree>
<field name="name"/>
<field name="description"/>
<field name="parent_id"/>
</tree>
</field>
</record>
<!-- Category search view -->
<record id="view_search_category" model="ir.ui.view">
<field name="name">Category Search</field>
<field name="model">easy_my_coop.document.category</field>
<field name="arch" type="xml">
<search>
<field name="name"/>
<filter name="parent_category" string="Parent Category"
context="{'group_by': 'parent_id'}"/>
</search>
</field>
</record>
</data>
</odoo>

2
easy_my_coop_website_document/__manifest__.py

@ -7,7 +7,7 @@
"version": "12.0.1.0.0",
'depends': [
'website',
'easy_my_coop_document',
'document_hosting',
],
'author': 'Coop IT Easy SCRLfs',
'license': 'AGPL-3',

8
easy_my_coop_website_document/controllers/main.py

@ -18,7 +18,7 @@ class DocumentWebsite(http.Controller):
@http.route('/documents/<int:oid>', auth='public', website=True)
def get_document(self, oid=-1):
"""Render a http response for a document"""
document_mgr = request.env['easy_my_coop.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(
@ -75,7 +75,7 @@ class DocumentWebsite(http.Controller):
domains.append(('document_date', '<', date_end))
return {
'archive_groups': self._get_archive_groups(
'easy_my_coop.document',
'document_hosting.document',
domains,
fields=['name', 'document_date'],
groupby='document_date',
@ -120,8 +120,8 @@ class DocumentWebsite(http.Controller):
def _data_tree(self, category=None):
"""Return a tree with categories and documents in it"""
category_mgr = request.env['easy_my_coop.document.category']
document_mgr = request.env['easy_my_coop.document']
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

Loading…
Cancel
Save