ProgrammingError sqlalchemy.exc.ProgrammingError: (psycopg2.errors.UndefinedColumn) column payments.stripe_payment_intent_id does not exist LINE 2: ....payment_reference AS payments_payment_reference, payments.s... ^ [SQL: SELECT count(*) AS count_1 FROM (SELECT payments.contract_id AS payments_contract_id, payments.payment_reference AS payments_payment_reference, payments.stripe_payment_intent_id AS payments_stripe_payment_intent_id, payments.stripe_client_secret AS payments_stripe_client_secret, payments.stripe_status AS payments_stripe_status, payments.gross_amount AS payments_gross_amount, payments.platform_fee AS payments_platform_fee, payments.gst_amount AS payments_gst_amount, payments.net_to_worker AS payments_net_to_worker, payments.withholding_tax_rate AS payments_withholding_tax_rate, payments.withholding_tax_amount AS payments_withholding_tax_amount, payments.status AS payments_status, payments.date_initiated AS payments_date_initiated, payments.date_held_escrow AS payments_date_held_escrow, payments.date_released AS payments_date_released, payments.release_conditions_met AS payments_release_conditions_met, payments.dispute_period_days AS payments_dispute_period_days, payments.dispute_deadline AS payments_dispute_deadline, payments.id AS payments_id, payments.created_at AS payments_created_at, payments.updated_at AS payments_updated_at FROM payments WHERE %(param_1)s = payments.contract_id) AS anon_1] [parameters: {'param_1': 2}] (Background on this error at: https://sqlalche.me/e/20/f405) Traceback (most recent call last) File "/home/runner/workspace/.pythonlibs/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1965, in _exec_single_context self.dialect.do_execute( ^ File "/home/runner/workspace/.pythonlibs/lib/python3.11/site-packages/sqlalchemy/engine/default.py", line 921, in do_execute cursor.execute(statement, parameters) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ The above exception was the direct cause of the following exception: File "/home/runner/workspace/.pythonlibs/lib/python3.11/site-packages/flask/app.py", line 2213, in __call__ return self.wsgi_app(environ, start_response) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/runner/workspace/.pythonlibs/lib/python3.11/site-packages/flask/app.py", line 2193, in wsgi_app response = self.handle_exception(e) ^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/runner/workspace/.pythonlibs/lib/python3.11/site-packages/flask_cors/extension.py", line 176, in wrapped_function return cors_after_request(app.make_response(f(*args, **kwargs))) ^^^^^^^^^^^^^^^^^^ File "/home/runner/workspace/.pythonlibs/lib/python3.11/site-packages/flask/app.py", line 2190, in wsgi_app response = self.full_dispatch_request() ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/runner/workspace/.pythonlibs/lib/python3.11/site-packages/flask/app.py", line 1486, in full_dispatch_request rv = self.handle_user_exception(e) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/runner/workspace/.pythonlibs/lib/python3.11/site-packages/flask_cors/extension.py", line 176, in wrapped_function return cors_after_request(app.make_response(f(*args, **kwargs))) ^^^^^^^^^^^^^^^^^^ File "/home/runner/workspace/.pythonlibs/lib/python3.11/site-packages/flask/app.py", line 1484, in full_dispatch_request rv = self.dispatch_request() ^^^^^^^^^^^^^^^^^^^^^^^ File "/home/runner/workspace/.pythonlibs/lib/python3.11/site-packages/flask/app.py", line 1469, in dispatch_request return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/runner/workspace/.pythonlibs/lib/python3.11/site-packages/flask_login/utils.py", line 290, in decorated_view return current_app.ensure_sync(func)(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/runner/workspace/app/routes.py", line 700, in contract_closeout return render_template('contracts/closeout.html', contract=contract) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/runner/workspace/.pythonlibs/lib/python3.11/site-packages/flask/templating.py", line 151, in render_template return _render(app, template, context) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/runner/workspace/.pythonlibs/lib/python3.11/site-packages/flask/templating.py", line 132, in _render rv = template.render(context) ^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/runner/workspace/.pythonlibs/lib/python3.11/site-packages/jinja2/environment.py", line 1295, in render self.environment.handle_exception() ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/runner/workspace/.pythonlibs/lib/python3.11/site-packages/jinja2/environment.py", line 942, in handle_exception raise rewrite_traceback_stack(source=source) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/runner/workspace/app/templates/contracts/closeout.html", line 2, in top-level template code {% extends "base.html" %} File "/home/runner/workspace/app/templates/base.html", line 281, in top-level template code {% block content %}{% endblock %} File "/home/runner/workspace/app/templates/contracts/closeout.html", line 42, in block 'content' {% if contract.payments.count() > 0 %} File "/home/runner/workspace/.pythonlibs/lib/python3.11/site-packages/sqlalchemy/orm/dynamic.py", line 178, in count return self._generate(sess).count() ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/runner/workspace/.pythonlibs/lib/python3.11/site-packages/sqlalchemy/orm/query.py", line 3127, in count self._legacy_from_self(col).enable_eagerloads(False).scalar() ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/runner/workspace/.pythonlibs/lib/python3.11/site-packages/sqlalchemy/orm/query.py", line 2820, in scalar ret = self.one() ^^^^^^^^^^ File "/home/runner/workspace/.pythonlibs/lib/python3.11/site-packages/sqlalchemy/orm/query.py", line 2793, in one return self._iter().one() # type: ignore ^^^^^^^^^^^^ File "/home/runner/workspace/.pythonlibs/lib/python3.11/site-packages/sqlalchemy/orm/query.py", line 2842, in _iter result: Union[ScalarResult[_T], Result[_T]] = self.session.execute( File "/home/runner/workspace/.pythonlibs/lib/python3.11/site-packages/sqlalchemy/orm/session.py", line 2262, in execute return self._execute_internal( File "/home/runner/workspace/.pythonlibs/lib/python3.11/site-packages/sqlalchemy/orm/session.py", line 2144, in _execute_internal result: Result[Any] = compile_state_cls.orm_execute_statement( File "/home/runner/workspace/.pythonlibs/lib/python3.11/site-packages/sqlalchemy/orm/context.py", line 293, in orm_execute_statement result = conn.execute( File "/home/runner/workspace/.pythonlibs/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1412, in execute return meth( File "/home/runner/workspace/.pythonlibs/lib/python3.11/site-packages/sqlalchemy/sql/elements.py", line 516, in _execute_on_connection return connection._execute_clauseelement( File "/home/runner/workspace/.pythonlibs/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1635, in _execute_clauseelement ret = self._execute_context( File "/home/runner/workspace/.pythonlibs/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1844, in _execute_context return self._exec_single_context( File "/home/runner/workspace/.pythonlibs/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1984, in _exec_single_context self._handle_dbapi_exception( ^ File "/home/runner/workspace/.pythonlibs/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 2339, in _handle_dbapi_exception raise sqlalchemy_exception.with_traceback(exc_info[2]) from e ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/runner/workspace/.pythonlibs/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1965, in _exec_single_context self.dialect.do_execute( ^ File "/home/runner/workspace/.pythonlibs/lib/python3.11/site-packages/sqlalchemy/engine/default.py", line 921, in do_execute cursor.execute(statement, parameters) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ sqlalchemy.exc.ProgrammingError: (psycopg2.errors.UndefinedColumn) column payments.stripe_payment_intent_id does not exist LINE 2: ....payment_reference AS payments_payment_reference, payments.s... ^ [SQL: SELECT count(*) AS count_1 FROM (SELECT payments.contract_id AS payments_contract_id, payments.payment_reference AS payments_payment_reference, payments.stripe_payment_intent_id AS payments_stripe_payment_intent_id, payments.stripe_client_secret AS payments_stripe_client_secret, payments.stripe_status AS payments_stripe_status, payments.gross_amount AS payments_gross_amount, payments.platform_fee AS payments_platform_fee, payments.gst_amount AS payments_gst_amount, payments.net_to_worker AS payments_net_to_worker, payments.withholding_tax_rate AS payments_withholding_tax_rate, payments.withholding_tax_amount AS payments_withholding_tax_amount, payments.status AS payments_status, payments.date_initiated AS payments_date_initiated, payments.date_held_escrow AS payments_date_held_escrow, payments.date_released AS payments_date_released, payments.release_conditions_met AS payments_release_conditions_met, payments.dispute_period_days AS payments_dispute_period_days, payments.dispute_deadline AS payments_dispute_deadline, payments.id AS payments_id, payments.created_at AS payments_created_at, payments.updated_at AS payments_updated_at FROM payments WHERE %(param_1)s = payments.contract_id) AS anon_1] [parameters: {'param_1': 2}] (Background on this error at: https://sqlalche.me/e/20/f405) The debugger caught an exception in your WSGI application. You can now look at the traceback which led to the error. To switch between the interactive traceback and the plaintext one, you can click on the "Traceback" headline. From the text traceback you can also create a paste of it. For code execution mouse-over the frame you want to debug and click on the console icon on the right side. You can execute arbitrary Python code in the stack frames and there are some extra helpers available for introspection: dump() shows all variables in the frame dump(obj) dumps all that's known about the object Brought to you by DON'T PANIC, your friendly Werkzeug powered traceback interpreter.