This question has been flagged
2 Replies
9827 Views

Hello Everyone,

What are the useful tips which could be helpful in odoo migration from v10 to v11?

Like,

1. Which modules are removed? reason for removing, if merged in existing one than with which module it has been merged?

2. Model name replaced with new names.

3. Any changes in java script architecture?

4. Any changes in calling of report method?

I will update soon with answers, with some topics, which I've already discovered for the above questions, which could help you in migration of v11.


Rgds,

Anil


Avatar
Discard
Author Best Answer

Hello All,

Here is some info about new changes on v11.

Python3 Syntactical changes for odoo v11.

1. All the py file which resides in same folder or directory will be imported like, this is mandatory in v11 now.

v11.

from . import <your_file_name>

v10

import <your_file_name>

2. Dictionary syntax on iteration.

v11  (Python3)

dict = {'a':"Anil","k":"Kesariya"}
for k, v in dict.items():
print "KEY ::",k
print "VALUE ::",v
    #your code.

v10  (Python2)

dict = {'a':"Anil","k":"Kesariya"}
for k, v in dict.iteritems():
print "KEY ::",k
print "VALUE ::",v
    #your code.

3. Print Statement

v11 (Python3)

print("Your Message")

v10,

You must know already :)

print "Your message"

4. has_key() will not work anymore.

 - Use .get() function instead has_key() in the dictionary


Module Enhancements:


1. Module renamed.

- an account_accountant module is renamed with account_invoicing.

- sale module is renamed with sale_management.

2. Merged module 

Following module, you will not find inside odoo v11 addons,

- account_tax_cash_basis

report
Because they are merged with following modules.

- account_tax_cash_basis this module is merged with account module.

- report module is merged with web module.


3. Changed model name.

-  It will be updated soon.


4. Completely removed

- Workflow has been completely removed from v11, till v10 it was deprecated and supported.


5. Changes or updates to fields in respective of specific model (table)

- ir.cron :argument could be directly passed to function, instead of function there is code field which allows to add python code or call of function associated model, instead of model now it is model_id to reference, like we do for security record rule. from the below example you will understand more about the difference between v10 and v11.

   v11

<!--Scheduler Sync Send Request-->
<record id="gengo_sync_send_request_scheduler" model="ir.cron">
<field name="name">Gengo: Sync translation (Request)</field>
<field name="model_id" ref="base_gengo.model_base_gengo_translations"/>
<field name="state">code</field>
<field name="code">model._sync_request(20)</field>
<field name="interval_number">6</field>
<field name="interval_type">hours</field>
<field name="numbercall">-1</field>
<field name="doall" eval="False"/>
</record>

v10

<record id="gengo_sync_send_request_scheduler" model="ir.cron">
<field name="name" >Gengo Sync Translation (Request)</field>
<field eval="True" name="active"/>
<field name="interval_number">6</field>
<field name="interval_type">hours</field>
<field name="numbercall">-1</field>
<field name="doall" eval="False"/>
<field name="model" eval="'base.gengo.translations'"></field>
<field name="function" eval="'_sync_request'"/>
<field name="args" eval="'(20,)'"/>
</record>


6. Report Improvements,  

def render_html() method replaced with get_report_values() with same api decorator and argument list.

E.g. v11.

 @api.model
 def get_report_values(self, docids, data=None):

E.g. v10.

def render_html(self, docids, data=None):


Note: the return statement (result) is different in both methods.


- Below is example which will explain better the return of result.


E.g. v10

@api.model
def render_html(self, docids, data=None):
docargs = {}
return self.env['report'].render('account.report_journal', docargs)


E.g. v11


@api.model
def get_report_values(self, docids, data=None):
docargs = {}
return docargs

get_action() method is replaced with report_action() for call report template.

The following example will explain better.

E.g. v11.

return self.env.ref(report_template_action_external_id).report_action(self, data=data)

E.g. v10

 return self.env['report'].get_action(self, report_tempalte_external_id, data=data) 


• To call the _run_wkhtmltopdf() from the different model and also change the argument sequence.

 

E.g. v11

self.env['ir.actions.report']._run_wkhtmltopdf(arguments)

E.g. v10

 self.env['report']._run_wkhtmltopdf(arguments)


- get_html() is replaced with render_qweb_html()

Hope this answer will you help in migration process of v11, any idea or correction appreciated.


Reference for JS framework update

1. Click here

2. Click here

3. Sample code reference, Click here

Best Regards,

Anil Kesariya.

Avatar
Discard

Sale module Is also renamed ..sale_management

Author

thanks, updated.

Thanks, very helpful!

Author

Thank you @Ermin, for appreciation and upvote :)

get_html is changed to render_qweb_html

Changes in js see this video : https://www.youtube.com/watch?v=u-6aLi1oqcw

You can update the answer with this :)