Odoo Help

Welcome!

This community is for beginners and experts willing to share their Odoo knowledge. It's not a forum to discuss ideas, but a knowledge base of questions and their answers.

0

load external file script via action button click

By
Rizan Zaky
on 11/6/15, 1:39 AM 507 views

I want to run an external script by a button click. The button is placed in the tree view

    <tree string="Session Tree">
         <field name="name"/>
         <button name='myButton' type='action' string="Click me"/>
     </tree>

How can I achieve that?

0
Logicious
On 11/10/15, 11:42 PM

Once i was used a pyhton code for getting document from external folder, i just made a small python script for that , you can refer this.

def get_document(self, cr, uid, ids, context=None):

matter_obj = self.pool.get('project.project')

attach_obj=self.pool.get('ir.attachment')

wizard_obj = self.pool.get('matter.attachment.wizard')

wizard_data = wizard_obj.browse(cr,uid,ids[0])

print'!!!!!!!!!!!!!!!',wizard_data.csv_file_path

print'!!!!!!!!!!!!!!!',wizard_data.document_path

if not os.path.exists(wizard_data.csv_file_path):

raise osv.except_osv(_('Warning!'), _('There is no CSV File Path exist, Choose right path'))

if not os.path.exists(wizard_data.document_path):

raise osv.except_osv(_('Warning!'), _('There is no Document File Path exist, Choose right path'))

files = glob.glob(wizard_data.csv_file_path)

for file in files:

f=open(file, 'r')

for m in f.readlines():

print '%s' % m

get_lst=m.split(',')

if len(get_lst)>=4:

print'-------',get_lst[1]

print'#########',get_lst[4]

d = get_lst[4]

print 'dddddddddddddddd',d

search_ids= matter_obj.search(cr,uid,[('name','=',get_lst[1])])

print'%%%%%%%%%',len(search_ids)

if len(search_ids):

matter_data = matter_obj.browse(cr,uid,search_ids[0])

matter_obj.write(cr,uid,matter_data.id,{'info':''})

if get_lst[4]!=False:

print']]]]]]]',"/home/logicious/Downloads/document/files/"+get_lst[4]

file_name=get_lst[4]

# if get_lst[4].find('.')!=-1:

# ext=get_lst[4].split('.')[1]

# file_name=get_lst[4].split('.')[0]+'.'+ext.lower()

# print'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++',"/home/logicious/Downloads/document/files/"+file_name

# print '****************************',wizard_data.document_path+file_name

if os.path.exists(wizard_data.document_path+file_name):

m = open(wizard_data.document_path+file_name,'rb')

# search in matter with matter_data.name res_model res_id

#if yes than delte unlink

exist_data = attach_obj.search(cr,uid,[('res_id','=',matter_data.id)],[('res_model','=','project.project')])

print 'eeeeeeeeeee',exist_data

if exist_data:

attach_obj.unlink(cr, uid, ids, context=contex)

else:

attach_vals = {

'name': str(get_lst[4]),

'datas': base64.b64encode(m.read()),

'description': 'files',

'user_id':str(get_lst[7]),

'res_name': matter_data.name,

'res_model': 'project.project',

'res_id': matter_data.id,

}

attach_id = attach_obj.create(cr, uid, attach_vals)

else:

#message = matter_obj.browse(cr,uid,import_info)

message = matter_obj.browse(cr, uid,matter_data.id)

print'============',message.import_info

if message.import_info!=False:

matter_obj.write(cr,uid,matter_data.id,{'import_info':message.import_info +str(get_lst[4])+ ' File not attached...'})

else:

print'======@@@@@@@@@@@@@',matter_data.id

matter_obj.write(cr,uid,matter_data.id,{'import_info':str(get_lst[4])+ ' File not attached....'})

f.close()

return True


, i created a wizard based on this , and i just create one button and to getting the documents.


0
André Pereira
On 11/6/15, 3:50 AM

I am assuming you're using Odoo 8. What we usually do is add a class to the button, e.g.:

<button name="myButton" class="session-button" ...

And then we load a JavaScript file that attaches an event to that button using the class to identify it, e.g.:

$('.session-button').click(function() {
// your code here...
});

This JavaScript file can be loaded by extending the assets backend view:

<template id="assets_backend" name="my-module assets" inherit_id="web.assets_backend">
<xpath expr="." position="inside">
<script type="text/javascript" src="/my-module/static/src/js/my-js-file.js"></script>
</xpath>
</template>

I recommend adding a dependency on the "web" module as well.

Your Answer

Please try to give a substantial answer. If you wanted to comment on the question or answer, just use the commenting tool. Please remember that you can always revise your answers - no need to answer the same question twice. Also, please don't forget to vote - it really helps to select the best questions and answers!

About This Community

This community is for professionals and enthusiasts of our products and services. Read Guidelines

Question tools

2 follower(s)

Stats

Asked: 11/6/15, 1:39 AM
Seen: 507 times
Last updated: 11/10/15, 11:44 PM