Modify

#10814 closed defect (fixed)

TypeError: 'int' object is not iterable

Reported by: paulcoddington@… Owned by: rjollos
Priority: normal Component: WikiTableMacro
Severity: blocker Keywords:
Cc: Trac Release: 0.10

Description

TypeError: 'int' object is not iterable

Sample Wiki markup:

{{{
#!SQLTable
    SELECT count(id) as 'Number of Tickets'
    FROM ticket
}}}

Error produced when count of Tickets > 0

Trac 1.0, Windows 7 (x64), Python 2.7.x (x86)

Attachments (0)

Change History (6)

comment:1 Changed 18 months ago by rjollos

I'm not sure if it will be relevant, but what DB are you using?

comment:2 Changed 18 months ago by paulcoddington@…

Just the default SQLite DB.

comment:3 Changed 18 months ago by jma

I have the exact same error on Trac v1.0 running on Gentoo Linux and python 2.7

comment:4 Changed 17 months ago by jun66j5

Reproduced. The stacktrace is here.

...
  File "/home/jun66j5/venv/trac/1.0.1/lib/python2.5/site-packages/trac/wiki/formatter.py", line 343, in _macro_processor
    text)
  File "/home/jun66j5/src/trac/trac-hacks/wikitablemacro/trunk/wikitable/table.py", line 68, in expand_macro
    format_to_html(self.env, formatter.context, col)
  File "/home/jun66j5/venv/trac/1.0.1/lib/python2.5/site-packages/trac/wiki/formatter.py", line 1546, in format_to_html
    return HtmlFormatter(env, context, wikidom).generate(escape_newlines)
  File "/home/jun66j5/venv/trac/1.0.1/lib/python2.5/site-packages/trac/wiki/formatter.py", line 1501, in generate
    escape_newlines)
  File "/home/jun66j5/venv/trac/1.0.1/lib/python2.5/site-packages/trac/wiki/formatter.py", line 1237, in format
    for line in text:
TypeError: 'int' object is not iterable

The 3rd argument, wikidom, of format_to_html expects a instance of str, unicode or iterable.

  • wikitable/table.py

     
    1616from trac.wiki.formatter import system_message, format_to_html 
    1717from trac.wiki.macros import WikiMacroBase 
    1818from trac.util.html import Markup 
    19 from trac.util.text import exception_to_unicode 
     19from trac.util.text import to_unicode, exception_to_unicode 
    2020from trac.util.translation import _ 
    2121 
    2222class SQLTable(WikiMacroBase): 
     
    6464            css_class = (idx % 2 == 0) and 'odd' or 'even' 
    6565            print >> out, "  <tr class='%s'>" % css_class 
    6666            for col in row: 
     67                if col is None: 
     68                    col = "''(NULL)''" 
     69                elif col is True: 
     70                    col = 'TRUE' 
     71                elif col is False: 
     72                    col = 'FALSE' 
     73                elif not isinstance(col, basestring): 
     74                    col = to_unicode(col) 
    6775                print >> out, "<td>%s</td>" % \ 
    6876                    format_to_html(self.env, formatter.context, col) 
    6977            print >> out, "  </tr>" 

comment:5 Changed 17 months ago by rjollos

Thank you for the patch Jun. I'll test and apply it.

I don't have a lot of interest in this macro, so if someone else wants to take over maintenance I'm more than willing to hand it over.

comment:6 Changed 17 months ago by rjollos

  • Resolution set to fixed
  • Status changed from new to closed

(In [12646]) Fixes #10814: Patch by Jun Omae (jun66j5) to fix a regression introduced in [12459]. Ensure that a string is passed to format_to_html.

Lightly tested against Trac 1.1.2dev-r11682.

Add Comment

Modify Ticket

Action
as closed .
as The resolution will be set. Next status will be 'closed'.
to The owner will be changed from rjollos. Next status will be 'closed'.
The resolution will be deleted. Next status will be 'reopened'.
Author


E-mail address and user name can be saved in the Preferences.

 
Note: See TracTickets for help on using tickets.