Bỏ qua để đến Nội dung
Menu
Câu hỏi này đã bị gắn cờ
3 Trả lời
23817 Lượt xem

Hi all,

Here i want to inherit shopping cart controllers in my custom module?

I know inherit models, views, objects but i dont know iherit controllers. please let me know this...

 

Thanks in advance

Ảnh đại diện
Huỷ bỏ
Câu trả lời hay nhất

Say you would like to inherit the MailTrackingController from the OCA module mail_tracking. Here is how you do it.

I know that the mail_tracking module is not in the same directory as the odoo built-in addons. Still the below works(of course your module depends on the other module in the manifest file.)


# import importlib so as to use it
# to import the module that contains the
# controller we are to inherit
import importlib

# use importlib to import the module
# that contains the controller we need to inherit
mail_tracking = importlib.import_module('odoo.addons.mail_tracking')

# create the inheriting controller
class MailTrackingController(mail_tracking.
controllers.main.
MailTrackingController):

def mail_tracking_open(self, db, tracking_email_id, token=False, **kw):
    """
    Some doc sting
    """
    
    response = super(MailTrackingController, self).\
    mail_tracking_open(db, tracking_email_id, token, **kw)
    .
    .
    .



Ảnh đại diện
Huỷ bỏ

thank you @Kareem Abuzaid, your answer is very explanatory.

Câu trả lời hay nhất

Hi,

For inheriting an existing controller in odoo, please do like this,

from odoo import http
from odoo.http import request
from odoo.addons.website_sale.controllers.main import WebsiteSale


class WebsiteSaleInherit(WebsiteSale):

@http.route([
'''/shop''',
'''/shop/page/<int:page>''',
'''/shop/category/<model("product.public.category", "[('website_id', 'in', (False, current_website_id))]"):category>''',
'''/shop/category/<model("product.public.category", "[('website_id', 'in', (False, current_website_id))]"):category>/page/<int:page>'''
], type='http', auth="public", website=True)
def shop(self, page=0, category=None, search='', ppg=False, **post):
res = super(WebsiteSaleInherit, self).shop(page=0, category=None, search='', ppg=False, **post)
print("Inherited ....", res)
return res


Full tutorial of the same: How To Inherit Existing Controller in Odoo

Thanks

Ảnh đại diện
Huỷ bỏ
Câu trả lời hay nhất

You can refer to following forum question:

https://www.odoo.com/forum/help-1/question/writing-controllers-in-openerp-modules-18656

Hope this helps !!.

Ảnh đại diện
Huỷ bỏ
Bài viết liên quan Trả lời Lượt xem Hoạt động
0
thg 4 23
1592
2
thg 6 22
4405
0
thg 9 18
3672
0
thg 12 16
3959
0
thg 11 19
3735