2014-09-24 57 views
1

請幫助我糾正錯誤!我正在嘗試更新odoo-openerp模塊。在controller文件夾下的main.py結構如下。而我得到RuntimeError的錯誤:調用Python對象 最大遞歸深度超過:RuntimeError:在運行openerp時調用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) 
+0

你可以發佈回溯的最後幾行嗎? – Gerrat 2014-09-24 02:22:20

回答

1

而遷移從舊的API,以新的API的任何模塊可能發生這種情況。您應該嘗試this文檔。希望它能幫助

相關問題