diff --git a/document_multiple_records/__init__.py b/document_multiple_records/__init__.py new file mode 100644 index 00000000..d44daea7 --- /dev/null +++ b/document_multiple_records/__init__.py @@ -0,0 +1,26 @@ +# -*- encoding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# This module copyright (C) 2014 Savoir-faire Linux +# (). +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################### + +from . import document +import wizard + +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/document_multiple_records/__openerp__.py b/document_multiple_records/__openerp__.py new file mode 100644 index 00000000..f882fb38 --- /dev/null +++ b/document_multiple_records/__openerp__.py @@ -0,0 +1,55 @@ +# -*- encoding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# This module copyright (C) 2014 Savoir-faire Linux +# (). +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################## + +{ + 'name': 'Document Management System for Multiple Records', + 'version': '0.1', + 'category': 'Knowledge Management', + 'summary': 'Document Management System for Multiple Records', + 'description': """ +Document Management System for Multiple Records +============================================== + +Contributors +------------ +* El Hadji Dem (elhadji.dem@savoirfairelinux.com) +""", + 'author': 'Savoir-faire Linux', + 'website': 'www.savoirfairelinux.com', + 'license': 'AGPL-3', + 'depends': [ + 'document', + ], + 'data': [ + 'document_view.xml', + 'wizard/document_wizard_view.xml', + ], + 'js': ['static/src/js/document.js'], + 'qweb': ['static/src/xml/document.xml'], + 'test': [], + 'demo': [ + ], + 'installable': True, + 'auto_install': False, +} + +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/document_multiple_records/document.py b/document_multiple_records/document.py new file mode 100644 index 00000000..11e9e022 --- /dev/null +++ b/document_multiple_records/document.py @@ -0,0 +1,66 @@ +# -*- encoding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# This module copyright (C) 2014 Savoir-faire Linux +# (). +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################## + +from openerp.osv import orm, fields + + +class document_file(orm.Model): + _inherit = 'ir.attachment' + + _columns = { + 'attachmentdocument_ids': fields.one2many('ir.attachment.document', 'attachment_id', 'Records'), + } + + def unlink(self, cr, uid, ids, context=None, check=True): + ir_attach_doc_obj = self.pool.get('ir.attachment.document') + if context is None: + context = {} + for line in self.browse(cr, uid, ids, context=context): + if line.attachmentdocument_ids: + first_id = min(line.attachmentdocument_ids) + + result = self.write(cr, uid, ids, {'res_id': first_id.res_id, + 'res_model': first_id.res_model, + 'res_name': first_id.res_name, }, context=context) + ir_attach_doc_obj.unlink(cr, uid, min(line.attachmentdocument_ids).id, context=context) + else: + result = super(document_file, self).unlink(cr, uid, ids, context=context) + return result + + +class ir_attachment_document(orm.Model): + _description = 'Attachment Documents' + _name = 'ir.attachment.document' + + _columns = { + 'res_id': fields.integer('Resource ID', readonly=True, + help="The record id this is attached to."), + 'res_model': fields.char('Resource Model', size=64, + readonly=True, + help="The database object this attachment will be attached to"), + 'res_name': fields.char('Resource Name', type='char', + size=128, + readonly=True), + 'attachment_id': fields.many2one('ir.attachment', 'Attachment'), + } + +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/document_multiple_records/document_view.xml b/document_multiple_records/document_view.xml new file mode 100644 index 00000000..aefa125d --- /dev/null +++ b/document_multiple_records/document_view.xml @@ -0,0 +1,30 @@ + + + + + + ir.attachment.multiple.models + ir.attachment + + + + + + + + + + +
+ + + + + +
+
+
+
+
+
+ diff --git a/document_multiple_records/i18n/document_multiple_records.pot b/document_multiple_records/i18n/document_multiple_records.pot new file mode 100644 index 00000000..29aa02b8 --- /dev/null +++ b/document_multiple_records/i18n/document_multiple_records.pot @@ -0,0 +1,140 @@ +# Translation of OpenERP Server. +# This file contains the translation of the following modules: +# * document_multiple_records +# +msgid "" +msgstr "" +"Project-Id-Version: OpenERP Server 7.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2014-02-06 19:28+0000\n" +"PO-Revision-Date: 2014-02-06 14:29-0500\n" +"Last-Translator: EL Hadji DEM \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: \n" +"X-Generator: Poedit 1.5.4\n" + +#. module: document_multiple_records +#: field:ir.attachment.document,res_id:0 +msgid "Resource ID" +msgstr "" + +#. module: document_multiple_records +#: view:ir.attachment.wizard:0 +msgid "Select document(s)" +msgstr "" + +#. module: document_multiple_records +#. openerp-web +#: code:addons/document_multiple_records/static/src/xml/document.xml:7 +#, python-format +msgid "Add existing Doc..." +msgstr "" + +#. module: document_multiple_records +#: field:ir.attachment.document,attachment_id:0 +msgid "Attachment" +msgstr "" + +#. module: document_multiple_records +#: view:ir.attachment.wizard:0 +msgid "AttachmentDocumentWizardTree" +msgstr "" + +#. module: document_multiple_records +#. openerp-web +#: code:addons/document_multiple_records/static/src/js/document.js:26 +#: model:ir.actions.act_window,name:document_multiple_records.action_view_document +#: view:ir.attachment.wizard:0 +#, python-format +msgid "Add Document" +msgstr "" + +#. module: document_multiple_records +#: field:ir.attachment.document,res_name:0 +msgid "Resource Name" +msgstr "" + +#. module: document_multiple_records +#: model:ir.model,name:document_multiple_records.model_ir_attachment_document +msgid "Attachment Documents" +msgstr "" + +#. module: document_multiple_records +#: field:ir.attachment,attachmentdocument_ids:0 +msgid "Records" +msgstr "" + +#. module: document_multiple_records +#: view:ir.attachment:0 +msgid "AttachmentDocumentTree" +msgstr "" + +#. module: document_multiple_records +#: model:ir.model,name:document_multiple_records.model_ir_attachment +msgid "ir.attachment" +msgstr "" + +#. module: document_multiple_records +#: view:ir.attachment:0 +msgid "Indexed Content" +msgstr "" + +#. module: document_multiple_records +#: model:ir.model,name:document_multiple_records.model_ir_attachment_wizard +msgid "Attachment wizard" +msgstr "" + +#. module: document_multiple_records +#: view:ir.attachment:0 +msgid "AttachmentDocumentForm" +msgstr "" + +#. module: document_multiple_records +#: code:addons/document_multiple_records/wizard/document_wizard.py:46 +#, python-format +msgid "Error" +msgstr "" + +#. module: document_multiple_records +#: help:ir.attachment.document,res_model:0 +msgid "The database object this attachment will be attached to" +msgstr "" + +#. module: document_multiple_records +#: help:ir.attachment.document,res_id:0 +msgid "The record id this is attached to." +msgstr "" + +#. module: document_multiple_records +#: field:ir.attachment.wizard,attachment_ids:0 +msgid "Attachments" +msgstr "" + +#. module: document_multiple_records +#: field:ir.attachment.document,res_model:0 +msgid "Resource Model" +msgstr "" + +#. module: document_multiple_records +#: view:ir.attachment.wizard:0 +msgid "Cancel" +msgstr "" + +#. module: document_multiple_records +#: view:ir.attachment.wizard:0 +msgid "Apply" +msgstr "" + +#. module: document_multiple_records +#: view:ir.attachment.wizard:0 +msgid "or" +msgstr "" + +#. module: document_multiple_records +#: code:addons/document_multiple_records/wizard/document_wizard.py:47 +#, python-format +msgid "You have to select at least 1 Document. And try again" +msgstr "" diff --git a/document_multiple_records/static/src/js/document.js b/document_multiple_records/static/src/js/document.js new file mode 100644 index 00000000..c485da9a --- /dev/null +++ b/document_multiple_records/static/src/js/document.js @@ -0,0 +1,39 @@ +openerp.document_multiple_records = function(instance, m) { +var _t = instance.web._t, + QWeb = instance.web.qweb; + + instance.web.Sidebar.include({ + redraw: function() { + var self = this; + this._super.apply(this, arguments); + self.$el.find('.oe_sidebar_add_attachment').after(QWeb.render('AddDocfromserver', {widget: self})) + self.$el.find('.open').on('click', function (e) { + self.on_call_new_view_function(); + //this.$('.oe_btn_class_name').on('click', this.on_call_new_view_function); + }); + }, + on_call_new_view_function: function(state) { + var self = this; + var view = self.getParent(); + var ids = ( view.fields_view.type != "form" )? view.groups.get_selection().ids : [ view.datarecord.id ]; + // you can pass in other data using the context dictionary variable + var context = { + 'model': view.dataset.model, + 'ids': ids, + }; + // the action dictionary variable sends data in the "self.do_action" method + var action = { + name: _t("Add Document"), + type: 'ir.actions.act_window', + res_model: 'ir.attachment.wizard', + view_mode: 'form', + view_type: 'form', + views: [[false, 'form']], + target: 'new', + context: context, + }; + // self.do_action accepts the action parameter and opens the new view + self.do_action(action); + } + }); +}; diff --git a/document_multiple_records/static/src/xml/document.xml b/document_multiple_records/static/src/xml/document.xml new file mode 100644 index 00000000..b556c8ad --- /dev/null +++ b/document_multiple_records/static/src/xml/document.xml @@ -0,0 +1,10 @@ + + + + + +
  • Add existing Doc...
  • +
    + +
    diff --git a/document_multiple_records/wizard/__init__.py b/document_multiple_records/wizard/__init__.py new file mode 100644 index 00000000..108a1a20 --- /dev/null +++ b/document_multiple_records/wizard/__init__.py @@ -0,0 +1,25 @@ +# -*- encoding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# This module copyright (C) 2014 Savoir-faire Linux +# (). +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################## + +from . import document_wizard + +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/document_multiple_records/wizard/document_wizard.py b/document_multiple_records/wizard/document_wizard.py new file mode 100644 index 00000000..83136c83 --- /dev/null +++ b/document_multiple_records/wizard/document_wizard.py @@ -0,0 +1,59 @@ +# -*- encoding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# This module copyright (C) 2014 Savoir-faire Linux +# (). +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################## + +from openerp.osv import fields, orm +from openerp.tools.translate import _ + + +class document_wizard(orm.Model): + _name = "ir.attachment.wizard" + _description = "Attachment wizard" + _columns = { + 'attachment_ids': fields.many2many('ir.attachment', + 'document_attachment_rel', + 'wizard_id', 'attachment_id', 'Attachments'), + } + + def action_apply(self, cr, uid, ids, context=None): + if context is None: + context = {} + ir_attach_obj = self.pool.get('ir.attachment') + ir_attach_doc_obj = self.pool.get('ir.attachment.document') + ir_model_obj = self.pool.get(context['model']) + + name = ir_model_obj.browse(cr, uid, context['ids'], context=context)[0]['name'] + data = self.read(cr, uid, ids, [], context=context)[0] + if not data['attachment_ids']: + raise orm.except_orm(_('Error'), + _('You have to select at least 1 Document. And try again')) + for attach in ir_attach_obj.browse(cr, uid, data['attachment_ids'], context=context): + data_attach = { + 'res_model': context['model'], + 'res_id': context['ids'][0], + 'res_name': name, + 'attachment_id': attach.id, + } + ir_attach_doc_obj.create(cr, uid, data_attach, context=context) + return {'type': 'ir.actions.act_window_close'} + +# vim:expandtab:smartindent:toabstop=4:softtabstop=4:shiftwidth=4: + diff --git a/document_multiple_records/wizard/document_wizard_view.xml b/document_multiple_records/wizard/document_wizard_view.xml new file mode 100644 index 00000000..9af0d333 --- /dev/null +++ b/document_multiple_records/wizard/document_wizard_view.xml @@ -0,0 +1,41 @@ + + + + + + Add Document + ir.attachment.wizard + +
    + + + + + + + + + + +
    +
    +
    +
    +
    + + + + Add Document + ir.attachment.wizard + form + tree,form + + new + + +
    +
    +