Edgewall Software

Opened 18 years ago

Closed 17 years ago

#4116 closed defect (duplicate)

tickets query breaks if custom ticket checkbox field is set, then cleared — at Version 4

Reported by: beardens@… Owned by: Matthew Good
Priority: normal Milestone:
Component: report system Version: 0.10
Severity: major Keywords:
Cc: Branch:
Release Notes:
API Changes:
Internal Changes:

Description (last modified by Christian Boos)

A quick summary is that when trying to execute a tickets query, I get the error: "AssertError: Unable to set Empty component query.num_matches_group." This happens after I clear a previously checked checkbox that is a custom ticket field.

I'll record the scenario first, and the python error trace will be given at the end.

First, I added a custom ticket field, by adding this to my trac.ini:

[ticket-custom]
product_backlog = checkbox
product_backlog.label = Is Product Backlog?
product_backlog.value = 0

Then I defined on a wiki page the following query:

[query:?status=new&status=assigned&status=reopened&group=milestone&owner=%7E&product_backlog=1&&order=priority Product-Backlog Work Items, by Milestone]

The query works unless I do the following steps:

  1. Add a ticket, setting my custom ticket checkbox to checked
  2. Update the ticket by UNCHECKING my custom ticket checkbox

At this point I notice that the ticket change log gets this appended:

    11/9/2006 11:02:49 AM changed by xxx  ¶

        * product_backlog deleted.

I would have expected to see "product_backlog set to 0", but maybe this is irrelevant.

When I try to run my query now, it breaks. (But it had worked earlier after I had just added the ticket with checkbox checked, step 1 of the 2 above.0

Here is the error trace:

Traceback (most recent call last):
  File "C:\bin\Python2.4\Lib\site-packages\trac\web\main.py", line 356, in dispatch_request
    dispatcher.dispatch(req)
  File "C:\bin\Python2.4\Lib\site-packages\trac\web\main.py", line 224, in dispatch
    resp = chosen_handler.process_request(req)
  File "C:\bin\Python2.4\Lib\site-packages\trac\ticket\query.py", line 443, in process_request
    self.display_html(req, query)
  File "C:\bin\Python2.4\Lib\site-packages\trac\ticket\query.py", line 608, in display_html
    req.hdf['query.num_matches_group'] = num_matches_group
  File "C:\bin\Python2.4\Lib\site-packages\trac\web\clearsilver.py", line 195, in __setitem__
    self.set_value(name, value, True)
  File "C:\bin\Python2.4\Lib\site-packages\trac\web\clearsilver.py", line 243, in set_value
    add_value(name, value)
  File "C:\bin\Python2.4\Lib\site-packages\trac\web\clearsilver.py", line 235, in add_value
    add_value('%s.%s' % (prefix, k), value[k])
  File "C:\bin\Python2.4\Lib\site-packages\trac\web\clearsilver.py", line 219, in add_value
    set_str(prefix, int(value))
  File "C:\bin\Python2.4\Lib\site-packages\trac\web\clearsilver.py", line 213, in set_str
    self.hdf.setValue(prefix.encode('utf-8'), str(value))
Error: Traceback (innermost last):
  File "neo_hdf.c", line 783, in hdf_set_value()
  File "neo_hdf.c", line 773, in _set_value()
AssertError: Unable to set Empty component query.num_matches_group.

Now if I update the ticket again and RE-CHECK the custom checkbox, I see the following added to the ticket history, and my query works again.

11/9/2006 11:06:01 AM changed by xxx ¶

    * product_backlog set to 1.

Change History (4)

comment:1 by anonymous, 18 years ago

I had a typo and some poor formatting in the report above:

My custom ticket definition is like this:

[ticket-custom] 
product_backlog = checkbox 
product_backlog.label = Is Product Backlog? 
product_backlog.value = 0

comment:2 by beardens@…, 18 years ago

I notice that ticket #3939 might be related to this one.

comment:3 by beardens@…, 18 years ago

I forgot to add that my database is sqlLite, and I'm using tracd rather than a web server if that matters.

comment:4 by Christian Boos, 17 years ago

Description: modified (diff)
Resolution: duplicate
Status: newclosed

Most probably a duplicate of #3939, fixed in trunk.

Note: See TracTickets for help on using tickets.