我在创建新按钮以更改新学生的状态时遇到问题。
首先我创建了一个XML文件:
...
<record model="ir.ui.view" id="student_form">
<field name="name">sim.student.form</field>
<field name="model">sim.student</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Student">
<field name="name"/>
<field name="student_name"/>
<field name="father_name"/>
<field name="gender"/>
<field name="contact_no"/>
<button name="setuju" states="draft" string="Approve" type="object"/>
</form>
</field>
</record>
...
接下来我创建了一个Python文件:
from osv import fields, osv
import time
import netsvc
import pooler
class sim_student(osv.osv):
_name = "sim.student"
_description = "Data Siswa"
def setuju(self, cr, uid, ids, context=None):
workflow = netsvc.LocalService('workflow')
for name in ids:
workflow.trg_create(uid, self._name, name, cr)
return self.write(cr, uid, ids, {'state': 'confirmed'}, context=context)
_columns = {
'name': fields.char('Registration Number',size=256,required=True),
'student_name': fields.char('Student Name',size=256,required=True),
'father_name': fields.char('Father Name',size=256),
'gender':fields.selection([('male','Male'),('female','Female')],'Gender'),
'contact_no':fields.char('Contact Number',size=256),
'state': fields.selection([('new', 'New'), \
('confirmed', 'Received'), \
('cancelled', 'Cancelled')], \
'Status', readonly=True, select=True)
}
sim_student()
然后我创建一个 init .py文件:
import sim
最后我创建了一个 openerp .py文件:
{
'name': 'Student Information Management',
'version': '0.1',
'category': 'Tools',
'description': """Data Siswa.""",
'author': 'Wasis Lukito',
'summary': 'Test, Test, dan Test',
'website': 'http://wasis.wordpress.com/',
'depends': ['base'],
#'init_xml': [],
#'update_xml': ['sim_view.xml'],
#'demo_xml': [],
#'installable': True,
'data': ['sim_view.xml',],
'css':['static/src/css/lunch.css'],
'demo': [],
'installable': True,
'application' : True,
'certificate' : '001292377792581874189',
'images': [],
}
但是,当我执行代码时,它会产生以下错误消息:
No handler found.
这是控制台的错误:
C:\Program Files\OpenERP 7.0alpha-20121206-000102\Server\server\.\pytz\tzinfo.py
:5: DeprecationWarning: the sets module is deprecated
ERROR: couldn't create the logfile directory. Logging to the standard output.
2013-01-15 15:21:39,977 2136 ←[1;32m←[1;49mINFO←[0m ? openerp: OpenERP version 7
.0alpha-20121206-000102
2013-01-15 15:21:39,994 2136 ←[1;32m←[1;49mINFO←[0m ? openerp: addons paths: C:\
Program Files\OpenERP 7.0alpha-20121206-000102\Server\server\openerp\addons
2013-01-15 15:21:40,023 2136 ←[1;32m←[1;49mINFO←[0m ? openerp: database hostname
: localhost
2013-01-15 15:21:40,039 2136 ←[1;32m←[1;49mINFO←[0m ? openerp: database port: 54
32
2013-01-15 15:21:40,055 2136 ←[1;32m←[1;49mINFO←[0m ? openerp: database user: op
enpg
ERROR: couldn't create the logfile directory. Logging to the standard output.
2013-01-15 15:21:40,799 2136 ←[1;33m←[1;49mWARNING←[0m ? openerp.addons.google_d
ocs.google_docs: Please install latest gdata-python-client from http://code.goog
le.com/p/gdata-python-client/downloads/list
2013-01-15 15:21:41,548 2136 ←[1;37m←[1;41mCRITICAL←[0m ? openerp.modules.module
: Couldn't load module web
2013-01-15 15:21:41,568 2136 ←[1;37m←[1;41mCRITICAL←[0m ? openerp.modules.module
: unexpected indent (sim.py, line 10)
2013-01-15 15:21:41,585 2136 ←[1;31m←[1;49mERROR←[0m ? openerp.service: Failed t
o load server-wide module `web`.
The `web` module is provided by the addons found in the `openerp-web` project.
Maybe you forgot to add those addons in your addons_path configuration.
Traceback (most recent call last):
File "C:\Program Files\OpenERP 7.0alpha-20121206-000102\Server\server\.\opener
p\service\__init__.py", line 53, in load_server_wide_modules
File "C:\Program Files\OpenERP 7.0alpha-20121206-000102\Server\server\.\opener
p\modules\module.py", line 414, in load_openerp_module
File "C:\Program Files\OpenERP 7.0alpha-20121206-000102\Server\server\openerp\
addons\web\http.py", line 593, in wsgi_postload
File "C:\Program Files\OpenERP 7.0alpha-20121206-000102\Server\server\openerp\
addons\web\http.py", line 482, in __init__
File "C:\Program Files\OpenERP 7.0alpha-20121206-000102\Server\server\openerp\
addons\web\http.py", line 549, in _load_addons
File "C:\Program Files\OpenERP 7.0alpha-20121206-000102\Server\server\.\opener
p\modules\module.py", line 133, in load_module
File "C:\Program Files\OpenERP 7.0alpha-20121206-000102\Server\server\openerp\
addons\sim\__init__.py", line 1, in <module>
File "C:\Program Files\OpenERP 7.0alpha-20121206-000102\Server\server\openerp\
addons\sim\sim.py", line 10
def setuju(self, cr, uid, ids, context=None):
^
IndentationError: unexpected indent
2013-01-15 15:21:41,849 2136 ←[1;32m←[1;49mINFO←[0m ? openerp.service.netrpc_ser
ver: starting NET-RPC service on 0.0.0.0:8070
2013-01-15 15:21:41,877 2136 ←[1;32m←[1;49mINFO←[0m ? openerp.netsvc: Starting 1
services
2013-01-15 15:21:41,897 2136 ←[1;32m←[1;49mINFO←[0m ? openerp: OpenERP server is
running, waiting for connections...
2013-01-15 15:21:41,913 2136 ←[1;32m←[1;49mINFO←[0m ? openerp.service.wsgi_serve
r: HTTP service (werkzeug) running on 0.0.0.0:8069
错误似乎来自“def setuju(......”。我的脚本出了什么问题?
答案 0 :(得分:1)
请从openerp文件中删除密钥“certificate”如果您的模块没有证书。另请从setuju()
功能中删除工作流程。我没有看到为您的班级定义的工作流程。
从日志中出现错误是因为缩进错误。请在def setuju()
答案 1 :(得分:1)
要在OpenERP上开发,即使有使用它的经验,您也会经常发现这样的情况。 必须才能知道日志文件在哪里检查错误。
这取决于您安装服务器的方式,但根据documentation它应该在C:\Program Files\OpenERP X.X\Server\openerp-server.log.
上。如果没有,请在服务器配置文件中查找。
如果您认真对待OpenERP开发,我建议您:
停止服务器服务并在控制台终端中手动启动它。它不仅可以为您提供有关警告和错误的即时信息,还可以显示python print
语句的结果,让您进入(Pdb)
debug mode。
安装OpenERP server in an Ubuntu Server VM。使用Linux可能有一个学习曲线,但是有很多可用的帮助,从长远来看,你会发现更容易获得帮助并解决该平台的麻烦。