Roundup Tracker - Issues

Issue 2277204

classification
You must not use 8-bit bytestrings
Type: Severity: normal
Components: Web interface Versions:
process
Status: closed
:
: richard : arezov, exe, richard, schlatterbeck
Priority: normal :

Created on 2008-11-13 16:34 by arezov, last changed 2009-10-20 09:43 by schlatterbeck.

Files
File name Uploaded Description Edit Remove
config.ini arezov, 2008-11-13 16:34 config
Messages
msg2597 Author: [hidden] (arezov) Date: 2008-11-13 16:34
MS Windows XP, SP3
Firefox 3
Internet Explorer 7
python-2.5.2
pysqlite-2.5.0.win32-py2.5
pywin32-212.win32-py2.5
sqlitedll-3_6_4
roundup-1.4.6.win32

Demo works fine.
I created new classic tracker on sqlite.
It is OK with English.
But then I try to enter text in Russian and submit new issue oe new user I get this:

Traceback (most recent call last):

  File "C:\Python25\lib\site-packages\roundup\cgi\client.py", line 409, in =
inner_main
    html =3D self.handle_action()

  File "C:\Python25\lib\site-packages\roundup\cgi\client.py", line 975, in =
handle_action
    return action_klass(self).execute()

  File "C:\Python25\lib\site-packages\roundup\cgi\actions.py", line 39, in =
execute
    return self.handle()

  File "C:\Python25\lib\site-packages\roundup\cgi\actions.py", line 615, in=
 handle
    messages =3D self._editnodes(props, links)

  File "C:\Python25\lib\site-packages\roundup\cgi\actions.py", line 425, in=
 _editnodes
    newid =3D self._createnode(cn, props)

  File "C:\Python25\lib\site-packages\roundup\cgi\actions.py", line 480, in=
 _createnode
    return cl.create(**props)

  File "C:\Python25\lib\site-packages\roundup\backends\rdbms_common.py", li=
ne 2652, in create
    newid =3D self.create_inner(**propvalues)

  File "C:\Python25\lib\site-packages\roundup\backends\rdbms_common.py", li=
ne 1488, in create_inner
    self.db.addnode(self.classname, newid, propvalues)

  File "C:\Python25\lib\site-packages\roundup\backends\rdbms_common.py", li=
ne 840, in addnode
    self.sql(sql, vals)

  File "C:\Python25\lib\site-packages\roundup\backends\rdbms_common.py", li=
ne 163, in sql
    self.cursor.execute(sql, args)

ProgrammingError: You must not use 8-bit bytestrings unless you use a text_=
factory that can interpret 8-bit bytestrings (like text_factory =3D str). I=
t is highly recommended that you instead just switch your application to Un=
icode strings.

The same for IE7 and FF3.
They show page encoding as utf-8.
msg3689 Author: [hidden] (exe) Date: 2009-04-13 10:27
Add "conn.text_factory = str" after connection creation in 
backends/back_sqlite.py:


        if sqlite_version == 1:
            conn = sqlite.connect(db=db)
            conn.db.sqlite_busy_handler(self.sqlite_busy_handler)
        else:
            conn = sqlite.connect(db, timeout=30)
            conn.row_factory = sqlite.Row
+           conn.text_factory = str
        cursor = conn.cursor()
        return (conn, cursor)
msg3892 Author: [hidden] (schlatterbeck) Date: 2009-10-20 09:43
The proposed fix was already added in SVN r4183. Closing.
History
Date User Action Args
2009-10-20 09:43:31schlatterbecksetstatus: open -> closed
nosy: + schlatterbeck
messages: + msg3892
2009-04-13 10:27:23exesetnosy: + exe
messages: + msg3689
2008-11-13 16:34:25arezovcreate