diff --git a/cmis_write/ir_attachment.py b/cmis_write/ir_attachment.py index f0cd0775..b8484b40 100644 --- a/cmis_write/ir_attachment.py +++ b/cmis_write/ir_attachment.py @@ -32,7 +32,7 @@ class ir_attachment(orm.Model): _inherit = 'ir.attachment' _columns = { - 'id_edm': fields.char('Id of Dms', size=256, help="Id of Edm."), + 'id_dms': fields.char('Id of Dms', size=256, help="Id of Dms."), } def create(self, cr, uid, values, context=None): @@ -41,6 +41,7 @@ class ir_attachment(orm.Model): user_login = user_obj.browse(cr, uid, uid, context=context).login session = ConnectorSession(cr, uid, context=context) value = { + 'name': values.get('name'), 'datas_fname': values.get('datas_fname'), 'file_type': values.get('file_type') or '', 'datas': values.get('datas'), @@ -64,18 +65,16 @@ class ir_attachment(orm.Model): for one_field in list_fields: dict_metadata['cmis:' + one_field] = result[one_field] + values['datas'] = None res = super(ir_attachment, self).create(cr, uid, values, context=context) # Create Job # if bool_testdoc in context, we don't need to create # the doc in the DMS if not context.get('bool_testdoc'): - create_doc_in_edm.delay(session, - 'ir.attachment', - value, - res, - dict_metadata, - user_login) + create_doc_in_edm.delay( + session, 'ir.attachment', value, res, dict_metadata, + user_login) return res @@ -86,12 +85,11 @@ def create_doc_in_edm(session, model_name, value, res, cmis_backend_obj = session.pool.get('cmis.backend') if session.context is None: session.context = {} - #login with the cmis account - client = cmis_backend_obj._auth(session.cr, session.uid, - context=session.context) - repo = client.defaultRepository + # login with the cmis account + repo = cmis_backend_obj._auth(session.cr, session.uid, + context=session.context) root = repo.rootFolder - ids = cmis_backend_obj.search(session.cr, session.uid, []) + ids = cmis_backend_obj.search(session.cr, session.uid, [], session.context) folder_path = cmis_backend_obj.read( session.cr, session.uid, @@ -99,8 +97,14 @@ def create_doc_in_edm(session, model_name, value, res, ['initial_directory_write'], context=session.context)[0]['initial_directory_write'] # Document properties + if value['name']: + file_name = value['name'] + elif value['datas_fname']: + file_name = value['datas_fname'] + else: + file_name = value['datas_fname'] props = { - 'cmis:name': value['datas_fname'], + 'cmis:name': file_name, 'cmis:description': value['description'], 'cmis:createdBy': user_login, } @@ -113,14 +117,16 @@ def create_doc_in_edm(session, model_name, value, res, else: sub1 = root - someDoc = sub1.createDocumentFromString(value['datas_fname'], props, + someDoc = sub1.createDocumentFromString(value['datas_fname'], contentString=base64.b64decode( value['datas']), contentType=value['file_type']) + # TODO: create custom properties on a document (Alfresco) + #someDoc.getProperties().update(props) # Updating ir.attachment object with the new id # of document generated by DMS ir_attach_obj.write(session.cr, session.uid, res, { - 'id_edm': someDoc.getObjectId()}, session.context) + 'id_dms': someDoc.getObjectId()}, session.context) return True # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/cmis_write/metadata.py b/cmis_write/metadata.py index 9c7b2894..29a8bb1e 100644 --- a/cmis_write/metadata.py +++ b/cmis_write/metadata.py @@ -20,7 +20,7 @@ # ############################################################################## -from openerp.osv import orm, fields, osv +from openerp.osv import orm, fields class metadata_list(orm.Model): @@ -38,10 +38,12 @@ class metadata(orm.Model): _description = "Metadata" _columns = { 'name': fields.char("Name", size=64, required=True, select=1), - 'model_id': fields.many2one('ir.model', 'Model', required=True, select=1), + 'model_id': fields.many2one('ir.model', 'Model', + required=True, select=1), 'field_ids': fields.many2many('ir.model.fields', 'metadata_field_rel', 'meta_id', 'field_id', 'Fields'), - 'metadata_list_ids': fields.one2many('metadata.list', 'metadata_id', 'List of fields'), + 'metadata_list_ids': fields.one2many('metadata.list', 'metadata_id', + 'List of fields'), 'model_ids': fields.many2many('ir.model', string='Model List'), } @@ -52,10 +54,13 @@ class metadata(orm.Model): return {'value': {'model_ids': [(6, 0, [])]}} model_ids = [model_id] model_obj = self.pool.get('ir.model') - active_model_obj = self.pool.get(model_obj.browse(cr, uid, model_id).model) + active_model_obj = self.pool.get(model_obj.browse(cr, uid, + model_id).model) if active_model_obj._inherits: for key, val in active_model_obj._inherits.items(): - found_model_ids = model_obj.search(cr, uid, [('model', '=', key)], context=context) + found_model_ids = model_obj.search(cr, + uid, [('model', '=', key)], + context=context) model_ids += found_model_ids return {'value': {'model_ids': [(6, 0, model_ids)]}} diff --git a/cmis_write/security/ir.model.access.csv b/cmis_write/security/ir.model.access.csv index 7db8a73a..4ea92c2d 100644 --- a/cmis_write/security/ir.model.access.csv +++ b/cmis_write/security/ir.model.access.csv @@ -1,2 +1,3 @@ id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink access_metadata_list_group_user,metadata.list user,model_metadata_list,base.group_document_user,1,1,1,1 +access_metadata,access_metadata,model_metadata,base.group_document_user,1,1,1,1