RuntimeError:在运行openerp时调用Python对象时超出了最大递归深度

时间:2014-09-24 02:08:32

标签: python openerp-8

请帮我纠正错误!我试图更新odoo-openerp模块。在控制器文件夹main.py结构如下所示。我收到RuntimeError错误:调用Python对象时超出了最大递归深度 :

@http.route(['/survey/submit/<model("survey.survey"):survey>'],
            type='http', methods=['POST'], auth='public', website=True)
def submit(self, survey, **post):
    _logger.debug('Incoming data: %s', post)
    page_id = int(post['page_id'])
    # cr, uid, context = request.cr, request.uid, request.context
    survey_obj = request.env['survey.survey']
    questions_obj = request.env['survey.question']
    # questions_ids = questions_obj.search(cr, uid, [('page_id', '=', page_id)], context=context)
    # questions = questions_obj.browse(cr, uid, questions_ids, context=context)
    questions = questions_obj.sudo().search([('page_id', '=', page_id)])

    # Answer validation
    errors = {}
    for question in questions:
        answer_tag = "%s_%s_%s" % (survey.id, page_id, question.id)
        # errors.update(questions_obj.validate_question(cr, uid, question, post, answer_tag, context=context))
        errors.update(questions_obj.validate_question(question, post, answer_tag))

    ret = {}
    if (len(errors) != 0):
        # Return errors messages to webpage
        ret['errors'] = errors
    else:
        # Store answers into database
        user_input_obj = request.env['survey.user_input']

        user_input_line_obj = request.env['survey.user_input_line']
        try:
            user_input_id = user_input_obj.sudo().search([('token', '=', post['token'])])[0]
        except KeyError:  # Invalid token
            return request.website.render("website.403")
        for question in questions:
            answer_tag = "%s_%s_%s" % (survey.id, page_id, question.id)
            user_input_line_obj.save_lines(user_input_id, question, post, answer_tag)


        user_input = request.env['survey.user_input'].search([])
        go_back = post['button_submit'] == 'previous'
        next_page, _, last = survey_obj.next_page(user_input, page_id, go_back=go_back)
        vals = {'last_displayed_page_id': page_id}
        if next_page is None and not go_back:
            vals.update({'state': 'done'})
        else:
            vals.update({'state': 'skip'})
        user_input_obj.write(user_input_id, vals)
        ret['redirect'] = '/survey/fill/%s/%s' % (survey.id, post['token'])
        if go_back:
            ret['redirect'] += '/prev'
    return json.dumps(ret)

1 个答案:

答案 0 :(得分:1)

将任何模块从旧API迁移到新API时可能会发生这种情况。您应该尝试this文档。希望它会有所帮助