odoo - 如何在门户视图odoo中添加客户签名
问题描述
我想在门户视图中添加客户签名,但出现以下错误。我分享了我的代码
<div>
<a role="button" class="btn btn-primary btn-block mb8" data-toggle="modal" data-target="#modalaccept" href="#">
<i class="fa fa-check"/><t> Accept & Sign</t>
</a>
</div>
<div role="dialog" class="modal fade" id="modalaccept">
<div class="modal-dialog">
<form id="accept" method="POST" t-att-data-picking-id="picking.id" t-att-data-token="picking.access_token" class="js_accept_json modal-content js_website_submit_form">
<input type="hidden" name="csrf_token" t-att-value="request.csrf_token()"/>
<header class="modal-header">
<h4 class="modal-title">Validate Route</h4>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">&times;</button>
</header>
<main class="modal-body" id="sign-dialog">
<p>
<span>By signing this proposal, I agree to the following terms:</span>
<ul>
<li><span>Accepted on the behalf of :</span><b t-field="picking.partner_id.commercial_partner_id"/>
</li>
</ul>
</p>
<t t-call="portal.signature_form">
<t t-set="call_url" t-value="picking.get_portal_url(suffix='/accept')"/>
<t t-set="default_name" t-value="picking.partner_id.name"/>
</t>
</main>
</form>
</div>
</div>
我写我的控制器是下面的代码
@http.route(['/my/delivery/<int:picking_id>'],type='http',auth='public',website=True)
def route_page(self,picking_id,report_type=None,access_token=None,message=False,download=False,**kw):
try:
picking = self._document_check_access('stock.picking',picking_id,access_token=access_token)
logging.info(picking.access_token)
logging.info("Picking+++++++++++++++++++++")
except:
return request.redirect('/my/delivery')
attachments = []
if picking.sale_id:
for line in picking.sale_id.order_line:
attachment = request.env['ir.attachment'].sudo().search([('res_model','=','product.template'),('res_id','=',line.product_id.product_tmpl_id.id)])
for x in attachment:
attachments.append(x)
logging.info("file type ---------------------")
#logging.info(x.mimetype)
values = self._prepare_portal_layout_values()
values.update({
'picking':picking.sudo(),
'attachments':attachments,
'page_name':'delivery_nested',
'token': access_token,
})
return request.render('portal_deliver_request.portal_deliver_template',values)
@http.route(['/my/delivery/<int:picking_id>/accept'], type='json', auth="public", website=True)
def portal_route_accept(self, picking_id, access_token=None, name=None, signature=None, **post):
access_token = access_token or request.httprequest.args.get('access_token')
_logger.info("Sign work ___________________________________________________________________________")
try:
picking_sudo = self._document_check_access('stock.picking',picking_id,access_token=access_token)
except (AccessError, MissingError):
return {'error':_('Invalid order.')}
if not signature:
return {'error' : _('Signature is missing.')}
try:
picking_sudo.write({
'signed_by':name,
'signed_on': fields.Datetime.now(),
'signature' : signature,
})
except (TypeError, binascii.Error) as e:
return {'error': _('Invalid signature data.')}
query_string = '&message=sign_ok'
_url = route_sudo.get_portal_url(query_string=query_string)
_logger.info("url -----------------------------------------------------------------")
_logger.info(_url)
return {
'force_refresh': True,
'redirect_url' : picking_sudo.get_portal_url(query_string=query_string),
}
我收到以下错误 400 Bad Request: <function PortalDeliverRequest.delivery_order at 0x7fb8d79f1670>, /my/delivery/36: 声明为能够处理“http”类型请求但使用“json”类型请求调用的函数
解决方案
推荐阅读
- python - 在 Python 中使用生成器的 multiCurl
- javascript - 如何在 Bootstrap 日期选择器中获取下个月上个月而不是下一个上一个图标?
- hbase - 无法在 hbase 中查询正确的记录使用 rowkey
- sql - SQL 选择从十六进制转换为 ASCII/varchar
- nativescript - Nativescript Carousel - 显示一些上一张和下一张幻灯片
- flutter - Google Drive API,从帐户服务器下载和获取内容文件
- yii2 - yii2:无法与主机 smtp.gmail.com 建立连接:stream_socket_client():无法连接到 smtp.gmail.com:587
- python - 如何使用python将大文本文件中的列拆分为3列?
- python - 如何在 Python 3 的内部类中动态初始化对象?
- php - Laravel-登录凭据错误时在登录页面上显示错误