创建一个新按钮以更改新学生的状态

时间:2013-01-15 06:48:58

标签: python openerp

我在创建新按钮以更改新学生的状态时遇到问题。

首先我创建了一个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(......”。我的脚本出了什么问题?

2 个答案:

答案 0 :(得分:1)

请从openerp文件中删除密钥“certificate”如果您的模块没有证书。另请从setuju()功能中删除工作流程。我没有看到为您的班级定义的工作流程。

从日志中出现错误是因为缩进错误。请在def setuju()

之前检查您是否有正确的空格数

答案 1 :(得分:1)

要在OpenERP上开发,即使有使用它的经验,您也会经常发现这样的情况。 必须才能知道日志文件在哪里检查错误。

这取决于您安装服务器的方式,但根据documentation它应该在C:\Program Files\OpenERP X.X\Server\openerp-server.log.上。如果没有,请在服务器配置文件中查找。

如果您认真对待OpenERP开发,我建议您:

  1. 停止服务器服务并在控制台终端中手动启动它。它不仅可以为您提供有关警告和错误的即时信息,还可以显示python print语句的结果,让您进入(Pdb) debug mode

  2. 安装OpenERP server in an Ubuntu Server VM。使用Linux可能有一个学习曲线,但是有很多可用的帮助,从长远来看,你会发现更容易获得帮助并解决该平台的麻烦。