Modyfikacja istniejącej strony
Spróbujmy zmodyfikować stronę rejestracji na wydarzenie. Najpierw przygotujmy kontroler:
# -*- coding: utf-8 -*-
from odoo import http
from odoo.http import request
class Front00Controller(http.Controller):
@http.route(['/front0', '/front0/p/<int:page>'], type='http', auth="public", website=True)
def events(self, p=1, **param):
Event = request.env['event.event']
events = Event.search([])
values = {
'events': events,
}
return request.render("front0.front0", values)
Przetestujmy go na własnym szablonie strony (front0):
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<template id="front0" name="Front0">
<t t-call="website.layout">
<div id="wrap">
<div class="oe_structure" />
<div class="container">
<h1>FRONT0</h1>
<div class="row">
<div class="col-sm-12">
do uzupełnienia
</div>
</div>
</div>
<div class="oe_structure"></div>
</div>
</t>
</template>
</odoo>
Po zainstalowaniu modułu możemy wyświetlić /front0.
Zmienimy odrobinę kontroler, aby wyświetlał szablon front1:
# -*- coding: utf-8 -*-
from odoo import http, _
# zob. addons/website_event/controllers/main.py
from odoo.addons.website_event.controllers.main import WebsiteEventController
from odoo.http import request
class WebsiteEventFront1Controller(WebsiteEventController):
@http.route(['/front1',], type='http', auth="public", website=True)
def front3(self, **param):
Event = request.env['event.event']
events = Event.search([])
values = {
'events': events,
}
return request.render("front1.front1", values)
Szablon ten (front1) dziedziczymy jednak z website_event.index:
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<template id="front1_tmpl" inherit_id="website_event.index">
<xpath expr="//ul" position="after">
<h2>TEST1</h2>
<form id="sale_front1_form" t-attf-action="/front1" method="post">
/event/front1/{slug(event)}
<input type="hidden" name="csrf_token" t-att-value="request.csrf_token()"/>
SEE: https://www.odoo.com/documentation/9.0/reference/http.html#csrf for
<button type="submit"
class="btn btn-primary btn-lg pull-right a-submit">Front 1 Test</button>
</form>
</xpath>
</template>
</odoo>
Na standardowym oknie rejestracji pojawia się dodatkowy przycisk "Front1 Test".