Formulaire création utilisateurs: bug (type id) #269

Closed
opened 2022-01-10 18:35:27 +01:00 by viennet · 0 comments
Owner

Cause: le user_name ne contient que des chiffres, il est converti en int par le décorateur assurant la compat. ScoDoc7/Zope.

Possiblement déjà corrigé en 9.2: à vérifier

[2022-01-10 18:23:24,618] xxx@y.z.w.t requested https://socodc.xxx/ScoDoc/GMP/Scolarite/Users/create_user_form?user_name=101645&edit=1
ERROR: Exception on /ScoDoc/GMP/Scolarite/Users/create_user_form [GET]
Referrer: https://scodoc.xxx/ScoDoc/GMP/Scolarite/Users/user_info_page?user_name=101645
Method: GET
Params: ImmutableMultiDict([('user_name', '101645'), ('edit', '1')])

Traceback (most recent call last):
  File "/opt/scodoc/venv/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1802, in _execute_context
    self.dialect.do_execute(
  File "/opt/scodoc/venv/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 732, in do_execute
    cursor.execute(statement, parameters)
psycopg2.errors.UndefinedFunction: ERREUR:  l'opérateur n'existe pas : character varying = integer
LINE 3: WHERE "user".user_name = 101645
                               ^
HINT:  Aucun opérateur ne correspond au nom donné et aux types d'arguments.
Vous devez ajouter des conversions explicites de type.


The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/opt/scodoc/venv/lib/python3.9/site-packages/flask/app.py", line 2073, in wsgi_app
    response = self.full_dispatch_request()
  File "/opt/scodoc/venv/lib/python3.9/site-packages/flask/app.py", line 1518, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/opt/scodoc/venv/lib/python3.9/site-packages/flask/app.py", line 1516, in full_dispatch_request
    rv = self.dispatch_request()
  File "/opt/scodoc/venv/lib/python3.9/site-packages/flask/app.py", line 1502, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**req.view_args)
  File "/opt/scodoc/app/decorators.py", line 82, in scodoc_function
    return func(*args, **kwargs)
  File "/opt/scodoc/venv/lib/python3.9/site-packages/flask_login/utils.py", line 272, in decorated_view
    return func(*args, **kwargs)
  File "/opt/scodoc/app/decorators.py", line 94, in decorated_function
    return f(*args, **kwargs)
  File "/opt/scodoc/app/decorators.py", line 220, in scodoc7func_decorator
    value = func(*pos_arg_values, **kwargs)
  File "/opt/scodoc/app/views/users.py", line 169, in create_user_form
    the_user = User.query.filter_by(user_name=user_name).first()


  File "/opt/scodoc/venv/lib/python3.9/site-packages/sqlalchemy/orm/query.py", line 2810, in first
    return self.limit(1)._iter().first()
  File "/opt/scodoc/venv/lib/python3.9/site-packages/sqlalchemy/orm/query.py", line 2894, in _iter
    result = self.session.execute(
  File "/opt/scodoc/venv/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1692, in execute
    result = conn._execute_20(statement, params or {}, execution_options)
  File "/opt/scodoc/venv/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1614, in _execute_20
    return meth(self, args_10style, kwargs_10style, execution_options)
  File "/opt/scodoc/venv/lib/python3.9/site-packages/sqlalchemy/sql/elements.py", line 325, in _execute_on_connection
    return connection._execute_clauseelement(
  File "/opt/scodoc/venv/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1481, in _execute_clauseelement
    ret = self._execute_context(
  File "/opt/scodoc/venv/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1845, in _execute_context
    self._handle_dbapi_exception(
  File "/opt/scodoc/venv/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 2026, in _handle_dbapi_exception
    util.raise_(
  File "/opt/scodoc/venv/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_
    raise exception
  File "/opt/scodoc/venv/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1802, in _execute_context
    self.dialect.do_execute(
  File "/opt/scodoc/venv/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 732, in do_execute
    cursor.execute(statement, parameters)
sqlalchemy.exc.ProgrammingError: (psycopg2.errors.UndefinedFunction) ERREUR:  l'opérateur n'existe pas : character varying = integer
LINE 3: WHERE "user".user_name = 101645
                               ^
HINT:  Aucun opérateur ne correspond au nom donné et aux types d'arguments.
Vous devez ajouter des conversions explicites de type.

[SQL: SELECT "user".id AS user_id, "user".user_name AS user_user_name, "user".email AS user_email, "user".nom AS user_nom, "user".prenom AS user_prenom, "user".dept AS user_dept, "user".active AS user_active, "user".password_hash AS user_password_hash, "user".password_scodoc7 AS user_password_scodoc7, "user".last_seen AS user_last_seen, "user".date_modif_passwd AS user_date_modif_passwd, "user".date_created AS user_date_created, "user".date_expiration AS user_date_expiration, "user".passwd_temp AS user_passwd_temp, "user".token AS user_token, "user".token_expiration AS user_token_expiration
FROM "user"
WHERE "user".user_name = %(user_name_1)s
 LIMIT %(param_1)s]
[parameters: {'user_name_1': 101645, 'param_1': 1}]
(Background on this error at: https://sqlalche.me/e/14/f405)
Cause: le user_name ne contient que des chiffres, il est converti en int par le décorateur assurant la compat. ScoDoc7/Zope. Possiblement déjà corrigé en 9.2: à vérifier ``` [2022-01-10 18:23:24,618] xxx@y.z.w.t requested https://socodc.xxx/ScoDoc/GMP/Scolarite/Users/create_user_form?user_name=101645&edit=1 ERROR: Exception on /ScoDoc/GMP/Scolarite/Users/create_user_form [GET] Referrer: https://scodoc.xxx/ScoDoc/GMP/Scolarite/Users/user_info_page?user_name=101645 Method: GET Params: ImmutableMultiDict([('user_name', '101645'), ('edit', '1')]) Traceback (most recent call last): File "/opt/scodoc/venv/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1802, in _execute_context self.dialect.do_execute( File "/opt/scodoc/venv/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 732, in do_execute cursor.execute(statement, parameters) psycopg2.errors.UndefinedFunction: ERREUR: l'opérateur n'existe pas : character varying = integer LINE 3: WHERE "user".user_name = 101645 ^ HINT: Aucun opérateur ne correspond au nom donné et aux types d'arguments. Vous devez ajouter des conversions explicites de type. The above exception was the direct cause of the following exception: Traceback (most recent call last): File "/opt/scodoc/venv/lib/python3.9/site-packages/flask/app.py", line 2073, in wsgi_app response = self.full_dispatch_request() File "/opt/scodoc/venv/lib/python3.9/site-packages/flask/app.py", line 1518, in full_dispatch_request rv = self.handle_user_exception(e) File "/opt/scodoc/venv/lib/python3.9/site-packages/flask/app.py", line 1516, in full_dispatch_request rv = self.dispatch_request() File "/opt/scodoc/venv/lib/python3.9/site-packages/flask/app.py", line 1502, in dispatch_request return self.ensure_sync(self.view_functions[rule.endpoint])(**req.view_args) File "/opt/scodoc/app/decorators.py", line 82, in scodoc_function return func(*args, **kwargs) File "/opt/scodoc/venv/lib/python3.9/site-packages/flask_login/utils.py", line 272, in decorated_view return func(*args, **kwargs) File "/opt/scodoc/app/decorators.py", line 94, in decorated_function return f(*args, **kwargs) File "/opt/scodoc/app/decorators.py", line 220, in scodoc7func_decorator value = func(*pos_arg_values, **kwargs) File "/opt/scodoc/app/views/users.py", line 169, in create_user_form the_user = User.query.filter_by(user_name=user_name).first() File "/opt/scodoc/venv/lib/python3.9/site-packages/sqlalchemy/orm/query.py", line 2810, in first return self.limit(1)._iter().first() File "/opt/scodoc/venv/lib/python3.9/site-packages/sqlalchemy/orm/query.py", line 2894, in _iter result = self.session.execute( File "/opt/scodoc/venv/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1692, in execute result = conn._execute_20(statement, params or {}, execution_options) File "/opt/scodoc/venv/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1614, in _execute_20 return meth(self, args_10style, kwargs_10style, execution_options) File "/opt/scodoc/venv/lib/python3.9/site-packages/sqlalchemy/sql/elements.py", line 325, in _execute_on_connection return connection._execute_clauseelement( File "/opt/scodoc/venv/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1481, in _execute_clauseelement ret = self._execute_context( File "/opt/scodoc/venv/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1845, in _execute_context self._handle_dbapi_exception( File "/opt/scodoc/venv/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 2026, in _handle_dbapi_exception util.raise_( File "/opt/scodoc/venv/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ raise exception File "/opt/scodoc/venv/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1802, in _execute_context self.dialect.do_execute( File "/opt/scodoc/venv/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 732, in do_execute cursor.execute(statement, parameters) sqlalchemy.exc.ProgrammingError: (psycopg2.errors.UndefinedFunction) ERREUR: l'opérateur n'existe pas : character varying = integer LINE 3: WHERE "user".user_name = 101645 ^ HINT: Aucun opérateur ne correspond au nom donné et aux types d'arguments. Vous devez ajouter des conversions explicites de type. [SQL: SELECT "user".id AS user_id, "user".user_name AS user_user_name, "user".email AS user_email, "user".nom AS user_nom, "user".prenom AS user_prenom, "user".dept AS user_dept, "user".active AS user_active, "user".password_hash AS user_password_hash, "user".password_scodoc7 AS user_password_scodoc7, "user".last_seen AS user_last_seen, "user".date_modif_passwd AS user_date_modif_passwd, "user".date_created AS user_date_created, "user".date_expiration AS user_date_expiration, "user".passwd_temp AS user_passwd_temp, "user".token AS user_token, "user".token_expiration AS user_token_expiration FROM "user" WHERE "user".user_name = %(user_name_1)s LIMIT %(param_1)s] [parameters: {'user_name_1': 101645, 'param_1': 1}] (Background on this error at: https://sqlalche.me/e/14/f405) ```
viennet added this to the ScoDoc 9.2 milestone 2022-01-10 18:36:26 +01:00
viennet added the
bug
à confirmer
labels 2022-01-10 18:36:35 +01:00
viennet removed the
à confirmer
label 2022-01-13 23:20:50 +01:00
Sign in to join this conversation.
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: ScoDoc/ScoDoc#269
No description provided.