class OdStockOrder(http.Controller):
@http.route('/create_picking', type='http', auth='none', methods=['POST', 'GET'], csrf=False, cors="*")
def report_dispatching_order_line_lsd(self, **kwargs):
dis_id = kwargs.get('dis_id', 0)
employee_id = kwargs.get('employee_id', 0)
report_qty = kwargs.get('report_qty', 0)
machine_id = kwargs.get('machine_id', 0)
picking_type_id = request.env.ref('odbase.stock_picking_gongx_in').sudo()
try:
if not dis_id:
raise UserError(u'dis_id没有接受到值,请进行传值操作!')
dispatching_id = request.env['dispatching.order.line'].search([('id', '=', int(dis_id))]).sudo()
if dispatching_id:
dispatching_id.update({'employeeid': int(employee_id), 'machine_id': int(machine_id),
'state': 5, 'dis_qty': report_qty})
picking_id = request.env['od.stock.picking.order'].sudo().create({
'picking_type_id': picking_type_id.id,
'location_id': picking_type_id.default_location_src_id.id,
'location_dest_id': picking_type_id.default_location_dest_id.id,
'typebh': picking_type_id.typebh,
})
picking_id.codename = dispatching_id.name
res = picking_id.with_context({'skip_create': True}).onchange_codename()
_logger.info(res)
jsondata = {
"code": 10000,
"result_msg": "成功",
}
return json.dumps(jsondata, ensure_ascii=False, ).encode('utf-8')
else:
raise UserError(u'未找到对应 dis_id值 为%s 的派工明细单!' % dis_id)
except Exception as e:
_logger.info(e)
jsondata = {
"code": -10000,
"result_msg": "失败: %s!" % e,
}
return json.dumps(jsondata, ensure_ascii=False, ).encode('utf-8')
参数
1.route
字符串或数组,决定哪些http请求可以匹配所装饰的方法,可以是单个字符串、或多个字符串的数组。
2.type
请求的类型,可以是http或json。
3.auth
认证方法的类型,可以是以下几种:
3.1 user:必须是已通过登录认证的用户,才能访问该请求。如果未经过登录直接访问,则会拦截并跳转回odoo登录页面。
3.2 public:使用公用的认证,可以不经过登录验证直接访问。
none - 相应的方法总是可用,一般用于框架和认证模块,对应请求没有办法访问数据库或指向数据库的设置。
4.methods
这个请求所应用的一系列http方法【PATCH, POST, PUT, 或者DELETE】,如果没指定则是所有方法。
methods=['POST', 'GET']
5.cors
跨域资源cors参数。
6.csrf(boolean)
是否开启CSRF跨域保护,默认True。
6.1如果表单是用python代码生成的,可通过request.csrf_token() 获取csrf
6.2如果表单是用javascript生成的,CSRF token会自动被添加到QWEB环境变量中,通过require('web.core').csrf_token获取
6.3如果终端可从其他地方以api或webhook形式调用,需要将对应的csrf禁用,此时最好用其他方式进行验证