sqlite3.ProgrammingError after upgrade to 4.1 from 3.x

Carl Boberg Carl.Boberg at unifaun.com
Wed Jul 31 13:17:05 UTC 2019


Thank you

I had to change L40
-from kallithea.lib.utils2 import safe_str, generate_api_key, get_current_authuser
+from kallithea.lib.utils2 import safe_str, safe_unicode, generate_api_key, get_current_authuser

And change L148 (i also changed L150) to safe_unicode

Now it works.

Best regards
------------------
Carl Boberg
Sysadmin / Operations
Switch: +46 8 729 88 50
Tegnérgatan 34 | 113 59 Stockholm | Sweden
www.unifaun.com<http://www.unifaun.com>


On Wed, 31 Jul 2019 at 14:00, Mads Kiilerich <mads at kiilerich.com<mailto:mads at kiilerich.com>> wrote:
On 7/31/19 11:37 AM, Carl Boberg wrote:
Hi list!

We have been using kallithea for quite a while now and are very happy with it. But recently I have upgraded our two instances from 3.x to 4.1.


Latest sqlite version is 3.29.0 .

Latest Kallithea version is 0.4.1 . Is that the version you are using?


Upgrade went fine and all seems to work ok except fort this;
We have our users in Active Directory (server 2012) and for those users with non ascii chars in their name (åäö in our case since we are in Sweden) this happens when they try to login:

2019-07-30 16:02:55.021 ERROR [kallithea.model.user] Traceback (most recent call last):
  File "/opt/kallithea/.local/lib/python2.7/site-packages/kallithea/model/user.py", line 169, in create_or_update
    Session().flush() # make database assign new_user.user_id
  ...
  File "/opt/kallithea/.local/lib/python2.7/site-packages/sqlalchemy/engine/default.py", line 536, in do_execute
    cursor.execute(statement, parameters)
ProgrammingError: (sqlite3.ProgrammingError) You must not use 8-bit bytestrings unless you use a text_factory that can interpret 8-bit bytestrings (like text_factory = str). It is highly recommended that you instead just switch your application to Unicode strings. [SQL: u'INSERT INTO users (username, password, active, admin, firstname, lastname, email, last_login, extern_type, extern_name, api_key, inherit_default_permissions, created_on, user_data) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)'] [parameters: (u'omannen', '*masked*', 0, 0, u'\xf6mannen', u'man', 'omannen@*masked*', None, 'ldap', 'CN=\xc3\xb6mannen man,OU=*masked*', '*masked*', 1, '2019-07-30 16:02:55.016018', None)] (Background on this error at: http://sqlalche.me/e/f405)

This is an example with a test user called "Ömannen man". It worked fine before upgrade and i I rename the user in AD to not have any ÅÄÖ login works...


That seems to be because you have also have non-ascii characters in the LDAP CN. That was not expected.

You can probably fix it by changing your https://kallithea-scm.org/repos/kallithea/files/0.4.1/kallithea/model/user.py#L148 to use "safe_unicode" instead of "safe_str". Can you confirm that works for you?

/Mads
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.sfconservancy.org/pipermail/kallithea-general/attachments/20190731/0d21098e/attachment-0001.html>


More information about the kallithea-general mailing list