Python 显示错误:";[引用对象:partner_id-partner.id]”;对于函数返回
我在Odoo10中为按钮(通过SMS发送)向导操作创建了一个函数。在该函数中,当我在函数中返回值时,屏幕上会显示以下错误。我还在销售订单继承文件中定义按钮操作 操作无法完成,可能是由于以下原因: -删除:您可能正在尝试删除一条记录,而其他记录仍在引用该记录 -创建/更新:未正确设置必填字段 [引用对象:partner\u id-partner.id] 那么,我返回什么而不是代码 我的Python和XML代码如下:Python 显示错误:";[引用对象:partner_id-partner.id]”;对于函数返回,python,python-2.7,openerp,odoo-10,Python,Python 2.7,Openerp,Odoo 10,我在Odoo10中为按钮(通过SMS发送)向导操作创建了一个函数。在该函数中,当我在函数中返回值时,屏幕上会显示以下错误。我还在销售订单继承文件中定义按钮操作 操作无法完成,可能是由于以下原因: -删除:您可能正在尝试删除一条记录,而其他记录仍在引用该记录 -创建/更新:未正确设置必填字段 [引用对象:partner\u id-partner.id] 那么,我返回什么而不是代码 我的Python和XML代码如下: **Pythode Code:** import urllib2
**Pythode Code:**
import urllib2
import cookielib
from getpass import getpass
import sys
import os
from stat import *
class way2smsBase(models.Model):
_name = "way.base"
_rec_name = "user_name"
user_name = fields.Char(string="UserName", required=True)
password = fields.Char(string="Password", required=True)
class SaleMail(models.TransientModel):
_name = "sale.mail.wizard"
_description = "Sale Mail Wizard"
message = fields.Text(String="Message", size=140)
number = fields.Text(string="Receiver Number", required=True, size=12)
user_acc = fields.Many2one("way.base", 'ACC', required=True)
date_time = fields.Datetime(string="Date & Time", readonly=True)
def sendSms(self):
url = 'http://sunarctechnologies.com'
data = 'username=' + self.user_acc.user_name + '&password=' + self.user_acc.password + '&Submit=Sign+in'
cj = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
opener.addheaders = [('User-Agent',
'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.120')]
try:
usock = opener.open(url, data)
except IOError:
raise Warning(_("Error pls Check account or mobile number"))
jession_id = str(cj).split('~')[1].split(' ')[0]
send_sms_url = 'http://site24.way2sms.com/smstoss.action?'
send_sms_data = 'ssaction=ss&Token=' + jession_id + '&mobile=' + self.number + '&message=' + self.message + '&msgLen=136'
opener.addheaders = [('Referer', 'http://site25.way2sms.com/sendSMS?Token=' + jession_id)]
try:
sms_sent_page = opener.open(send_sms_url, send_sms_data)
except IOError:
raise Warning(_("Error pls Check account or mobile number"))
self.date_time = str(datetime.now())
raise Warning(_("Message Sent"))
@api.one
@api.constrains('number')
def validatePhonenumber(self):
for phone in self:
if re.match("[0-9]", phone.number) == None:
raise Warning("Mobile number is not valid one, Please specify valid number")
return False
return True
@api.multi
def action_mail_add(self):
rec = self._context.get('active_ids', [])
print "REC"
if rec:
line_values = {'message': self.message,
'number': self.number,
#'user_acc': self.user_acc,
#'date_time': self.date_time,
}
print "Values:", line_values
#return line_values
return self.env['sale.order'].create(line_values)
**XML Code:**
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<record id="view_sale_mail_wizard" model="ir.ui.view">
<field name="name">SaleMail</field>
<field name="model">sale.mail.wizard</field>
<field name="arch" type="xml">
<form string="Sales mail">
<sheet>
<!--<separator string="SMS"/> -->
<group string="Way2SMS" style="width: 40%%" col="2" colspan="2">
<field name="user_acc"/>
<field name="number"/>
<field name="message"/>
<field name="date_time"/>
</group>
</sheet>
<footer>
<button name="action_mail_add" type="object" String="Ok"
class="oe_highlight" icon="fa-commenting-o" confirm="Are you sure want to send sms"
attrs="{'invisible':[('date_time','!=',False)]}"
help="this button will send an sms "/>
<button string="Cancel" class="btn-default" special="cancel"/>
</footer>
</form>
</field>
</record>
<record id="action_view_sale_mail_wizard" model="ir.actions.act_window">
<field name="name">SaleMail</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">sale.mail.wizard</field>
<field name="view_type">form</field>
<field name="view_mode">form</field>
<field name="target">new</field>
</record>
</data>
</openerp>
**XML Code in Sales Order Inherit File:**
<?xml version="1.0"?>
<openerp>
<data>
<record model="ir.ui.view" id="custom_order_form">
<field name="inherit_id" ref="sale.view_order_form"/>
<field name="name">Sale Order Pet Form</field>
<field name="model">sale.order</field>
<field name="arch" type="xml">
<data>
<xpath expr="//button[@name='action_quotation_send']" position="after">
<button name="%(action_view_sale_mail_wizard)d" string="Send by SMS" type="action" class="btn-primary"/>
</xpath>
</data>
</field>
</record>
</data>
</openerp>
**Pythode代码:**
导入urllib2
进口cookielib
从getpass导入getpass
导入系统
导入操作系统
从统计导入*
类way2smsBase(models.Model):
_name=“way.base”
_rec_name=“user_name”
user\u name=fields.Char(string=“UserName”,required=True)
password=fields.Char(string=“password”,required=True)
SaleMail类(models.TransientModel):
_name=“sale.mail.wizard”
_description=“销售邮件向导”
message=fields.Text(String=“message”,size=140)
数字=字段。文本(string=“Receiver number”,required=True,size=12)
user_acc=fields.manyOne(“way.base”,“acc”,required=True)
date\u time=fields.Datetime(string=“date&time”,readonly=True)
def发送SMS(自我):
url='1〕http://sunarctechnologies.com'
数据='username='+self.user\u acc.user\u name+'&password='+self.user\u acc.password+'&Submit=Sign+in'
cj=cookielib.CookieJar()
opener=urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
opener.addheaders=[('User-Agent',
'Mozilla/5.0(X11;Linux x86_64)AppleWebKit/537.36(KHTML,类似Gecko)Chrome/37.0.2062.120']
尝试:
usock=opener.open(url、数据)
除IOError外:
提出警告(错误,请检查帐户或手机号码)
jession_id=str(cj).split(“~”)[1].split(“”)[0]
发送短信http://site24.way2sms.com/smstoss.action?'
发送短信数据='ssaction=ss&Token='+jession_id+'&mobile='+self.number+'&message='+self.message+'&msgLen=136'
opener.addheaders=[('Referer','http://site25.way2sms.com/sendSMS?Token=“+jession_id)]
尝试:
短信发送页面=开启器。打开(发送短信url,发送短信数据)
除IOError外:
提出警告(错误,请检查帐户或手机号码)
self.date\u time=str(datetime.now())
发出警告(uu(“消息已发送”))
@api.1
@api.Constraints('编号')
def validatePhonenumber(自):
对于手机内置:
如果重新匹配(“[0-9]”,则电话号码)=无:
提出警告(“手机号码无效,请指定有效号码”)
返回错误
返回真值
@api.multi
def操作\邮件\添加(自我):
rec=self.\u context.get('active\u id',[]))
打印“REC”
如果记录:
行_值={'message':self.message,
“number”:self.number,
#'user\u acc':self.user\u acc,
#“日期时间”:self.date\u时间,
}
打印“值:”,第_行值
#返回行_值
返回self.env['sale.order'].create(行值)
**XML代码:**
销售邮件
sale.mail.wizard
销售邮件
ir.actions.act\u窗口
sale.mail.wizard
形式
形式
新的
**销售订单继承文件中的XML代码:**
销售订单宠物表格
销售订单
我想这里的代码
@api.multi
def action_mail_add(self):
rec = self._context.get('active_ids', [])
print "REC"
if rec:
line_values = {'message': self.message,
'number': self.number,
#'user_acc': self.user_acc,
#'date_time': self.date_time,
}
print "Values:", line_values
#return line_values
return self.env['sale.order'].create(line_values)
合作伙伴id是必填字段。此外,还有许多与partner id相关的字段。是partner\u id是必填字段,我使用set partner\u id='1'完成此操作:
line_values = {'message': self.message,
'number': self.number,
'partner_id': 1,
#'user_acc': self.user_acc,
#'date_time': self.date_time,
}
print "Values:", line_values
#return line_values
return self.env['sale.order'].create(line_values)
Yes Partner_id是必填字段,我使用以下命令完成此操作:line_values={'message':self.message,'number':self.number,'Partner_id':1,#'user_acc':self.user_acc,#'date_time':self.date_time,}print“value:”,行值#返回行值返回self.env['sale.order'].创建(行值)