Constanze Becker
Constanze Becker

Reputation: 1

Error in Website Form with own Controller (Odoo 17)

I got always this error on my Website form:

An error occurred, the form was not submitted.

My code is running but I don't get the redirect. In the background it works, but in the front-end, I see only the error. Maybe I've forgotten something. Thank you for your help. Here is my code:

@http.route('/pre_order/submit/pre.order', type='http', auth="public", methods=['POST'],website=True)
def submit_pre_order(self, **post):
    user = request.env.user
    partner = user.partner_id if user and not user._is_public() else None
    vals = {
        'customer_name': post.get('customer_name'),
        'email': post.get('email'),
        'street': post.get('street'),
        'zip': post.get('zip'),
        'city': post.get('city'),
        'country': post.get('country'),
        'phone': post.get('phone'),
        'name': "NEW",
    }

    if partner:
        vals['customer_id'] = partner.id
    try:
        pre_order = request.env['pre.order'].sudo().create(vals)
        sale_order = pre_order.sale_order_id
        if not sale_order:
            return request.redirect('/')
        sale_order_url = f"/my/orders/{sale_order.id}"

        request.session['success_message'] = "Ihre Vorbestellung wurde erfolgreich angelegt!"

        if user and not user._is_public():
            return redirect(sale_order_url)


        elif user and user.login:
            login_url = f"/web/login?login={user.login}&redirect={sale_order_url}"
            return redirect(login_url)
        else:
            new_user = pre_order.customer_id.user_ids[:1]  # Falls ein User erstellt wurde
            if new_user:
                db_name = request.env.cr.dbname
                user_token = new_user.signup_token
                activation_url = f"/web/signup?db={db_name}&token={user_token}&redirect={sale_order_url}"
                return request.redirect(activation_url)
        return redirect('/my/quotes')


    except Exception as e:
        _logger.error(f"Error in pre order: {str(e)}")
        return redirect('/')

I need to get the redirect in front-end.

Upvotes: 0

Views: 17

Answers (0)

Related Questions