Got file upload working to add a document to a project.
This commit is contained in:
parent
6c88f4a2d0
commit
1379fe609d
9 changed files with 151 additions and 4 deletions
|
|
@ -1,2 +1,3 @@
|
|||
from . import models
|
||||
from . import wizard
|
||||
from . import controllers
|
||||
|
|
|
|||
|
|
@ -29,9 +29,22 @@
|
|||
'author': 'Bemade Inc.',
|
||||
'website': 'https://www.bemade.org',
|
||||
'license': 'OPL-1',
|
||||
'depends': ['bemade_documents_portal', 'documents_project'],
|
||||
'data': ['views/project_views.xml'],
|
||||
'demo': [],
|
||||
'depends': ['documents',
|
||||
'bemade_documents_portal',
|
||||
'documents_project',
|
||||
],
|
||||
'data': ['views/project_views.xml',
|
||||
'wizard/request_approvals_wizard.xml',
|
||||
'security/ir.model.access.csv',
|
||||
],
|
||||
'assets': {
|
||||
'web.assets_backend': [
|
||||
'bemade_project_documents/static/src/js/documents_controller_patch.js'
|
||||
],
|
||||
'web.assets_qweb': [
|
||||
'bemade_project_documents/static/src/xml/documents_views.xml'
|
||||
]
|
||||
},
|
||||
'installable': True,
|
||||
'auto_install': False,
|
||||
}
|
||||
|
|
|
|||
1
bemade_project_documents/controllers/__init__.py
Normal file
1
bemade_project_documents/controllers/__init__.py
Normal file
|
|
@ -0,0 +1 @@
|
|||
from . import main
|
||||
17
bemade_project_documents/controllers/main.py
Normal file
17
bemade_project_documents/controllers/main.py
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
from odoo.addons.documents.controllers.main import ShareRoute
|
||||
from odoo.http import route, request
|
||||
import json
|
||||
|
||||
|
||||
class DocumentsController(ShareRoute):
|
||||
|
||||
@route('/documents/upload_attachment', type='http', methods=['POST'], auth='user')
|
||||
def upload_document(self, folder_id, ufile, tag_ids, res_model, res_id,
|
||||
document_id=False, partner_id=False, owner_id=False):
|
||||
res = super().upload_document(folder_id, ufile, tag_ids, document_id, partner_id,
|
||||
owner_id)
|
||||
res_data = json.loads(res.data)
|
||||
if 'ids' in res_data and res_model and res_id:
|
||||
docs = request.env['documents.document'].browse(res_data['ids'])
|
||||
docs.write({'res_model': res_model, 'res_id': res_id})
|
||||
return res
|
||||
2
bemade_project_documents/security/ir.model.access.csv
Normal file
2
bemade_project_documents/security/ir.model.access.csv
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
|
||||
access_documents_request_approval_wizard,access.documents.request_approval_wizard,model_project_documents_approval_wizard,documents.group_documents_user,1,1,1,0
|
||||
|
|
|
@ -0,0 +1,44 @@
|
|||
/** @odoo-module **/
|
||||
|
||||
const DocumentsListController = require('documents.DocumentsListController');
|
||||
const DocumentsKanbanController = require('documents.DocumentsKanbanController');
|
||||
const DocumentsControllerMixin = require('documents.controllerMixin');
|
||||
|
||||
import {patch} from 'web.utils';
|
||||
|
||||
const prototype_addins = {
|
||||
_onClickRequestApprovals: function (ev) {
|
||||
ev.preventDefault();
|
||||
const context = this.model.get(this.handle, {raw: true}).getContext();
|
||||
this.do_action('bemade_project_documents.action_request_approval_form', {
|
||||
additional_context: {
|
||||
default_document_ids: this._selectedRecordIds,
|
||||
},
|
||||
on_close: () => this.reload(),
|
||||
});
|
||||
},
|
||||
_makeFileUpload({ recordId }) {
|
||||
const context = this.model.get(this.handle, {raw: true}).getContext();
|
||||
return Object.assign({
|
||||
res_model: context.default_res_model || false,
|
||||
res_id: context.default_res_id || false,
|
||||
}, this._super(...arguments));
|
||||
},
|
||||
_makeFileUploadFormDataKeys({ recordId }) {
|
||||
const context = this.model.get(this.handle, {raw: true}).getContext();
|
||||
return Object.assign({
|
||||
res_model: context && context.default_res_model,
|
||||
res_id: context && context.default_res_id,
|
||||
}, this._super(...arguments));
|
||||
},
|
||||
};
|
||||
|
||||
const patch_name = "bemade_project_documents.DocumentsControllerPatch";
|
||||
|
||||
patch(DocumentsControllerMixin, patch_name, {
|
||||
events: _.extend({}, DocumentsControllerMixin.events, {
|
||||
'click .o_documents_kanban_request_approvals': '_onClickRequestApprovals',
|
||||
}),
|
||||
});
|
||||
patch(DocumentsListController.prototype, patch_name, prototype_addins);
|
||||
patch(DocumentsKanbanController.prototype, patch_name, prototype_addins);
|
||||
14
bemade_project_documents/static/src/xml/documents_views.xml
Normal file
14
bemade_project_documents/static/src/xml/documents_views.xml
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<templates xml:space="preserve">
|
||||
<div t-name="DocumentViews.buttons"
|
||||
t-inherit="documents.DocumentsViews.buttons" t-inherit-mode="extension">
|
||||
<xpath expr="//button[hasclass('o_documents_kanban_share_domain')]"
|
||||
position="after">
|
||||
<button type="button" title="Request approvals"
|
||||
groups="project.group_project_manager"
|
||||
class="btn btn-secondary o_documents_kanban_request_approvals">
|
||||
Request Approvals
|
||||
</button>
|
||||
</xpath>
|
||||
</div>
|
||||
</templates>
|
||||
|
|
@ -4,5 +4,8 @@ from odoo import models, fields, api
|
|||
class RequestDocumentApprovalsWizard(models.TransientModel):
|
||||
_name = 'project_documents.approval.wizard'
|
||||
|
||||
project_id = fields.Many2one('project.project')
|
||||
document_ids = fields.Many2many('documents.document', string='Documents')
|
||||
partner_ids = fields.Many2many('res.partner')
|
||||
|
||||
def request_approvals(self):
|
||||
pass
|
||||
52
bemade_project_documents/wizard/request_approvals_wizard.xml
Normal file
52
bemade_project_documents/wizard/request_approvals_wizard.xml
Normal file
|
|
@ -0,0 +1,52 @@
|
|||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<odoo>
|
||||
<data>
|
||||
<record id="documents_view_list_inherit" model="ir.ui.view">
|
||||
<field name="inherit_id" ref="documents.documents_view_list"/>
|
||||
<field name="model">documents.document</field>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//tree[@js_class='documents_list']" position="attributes">
|
||||
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
<record id="documents_request_approval_form_view" model="ir.ui.view">
|
||||
<field name="name">Request Approvals</field>
|
||||
<field name="model">project_documents.approval.wizard</field>
|
||||
<field name="arch" type="xml">
|
||||
<form>
|
||||
<!-- TODO: Add field labels -->
|
||||
<sheet>
|
||||
<field name="partner_ids" domain="[('is_company', '=', True)]">
|
||||
<tree editable="bottom">
|
||||
<field name="name" colspan="3"/>
|
||||
<field name="email"/>
|
||||
<field name="title"/>
|
||||
</tree>
|
||||
</field>
|
||||
<field name="document_ids">
|
||||
<!-- TODO: Add a domain to restrict to context domain -->
|
||||
<tree>
|
||||
<field name="name"/>
|
||||
</tree>
|
||||
</field>
|
||||
<footer>
|
||||
<button name="request_approvals" type="object"
|
||||
string="Request" class="btn btn-primary"/>
|
||||
<button string="Cancel" class="btn-secondary"
|
||||
special="cancel" data-hotkey="z"/>
|
||||
</footer>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
<record model="ir.actions.act_window" id="action_request_approval_form">
|
||||
<field name="name">Request Approvals</field>
|
||||
<field name="res_model">project_documents.approval.wizard</field>
|
||||
<field name="view_mode">form</field>
|
||||
<field name="context">{
|
||||
'form_view_ref': 'bemade_project_documents.documents_request_approval_form_view'}</field>
|
||||
<field name="target">new</field>
|
||||
</record>
|
||||
</data>
|
||||
</odoo>
|
||||
Loading…
Reference in a new issue