Edgewall Software

Opened 6 years ago

Closed 6 years ago

#12958 closed defect (fixed)

Query page raises a TypeError if custom field named "id" exists — at Version 3

Reported by: Jun Omae Owned by: Jun Omae
Priority: normal Milestone: 1.0.17
Component: ticket system Version: 1.0.15
Severity: normal Keywords:
Cc: Branch:
Release Notes:

Fix query crashing when id as a custom field is defined.

API Changes:
Internal Changes:

Description

How to reproduce

  1. Create new environment — initenv
  2. Add a custom field named "id" — config set ticket-custom id text
  3. Create new ticket
  4. Visit /query?status=!closed
07:39:35 PM Trac[main] ERROR: [192.168.11.25] Internal Server Error: <RequestWithSession "GET '/query?status=!closed'">, referrer None
Traceback (most recent call last):
  File "/venv/trac/1.0.15/lib/python2.5/site-packages/trac/web/main.py", line 567, in _dispatch_request
    dispatcher.dispatch(req)
  File "/venv/trac/1.0.15/lib/python2.5/site-packages/trac/web/main.py", line 249, in dispatch
    resp = chosen_handler.process_request(req)
  File "/venv/trac/1.0.15/lib/python2.5/site-packages/trac/ticket/query.py", line 1004, in process_request
    return self.display_html(req, query)
  File "/venv/trac/1.0.15/lib/python2.5/site-packages/trac/ticket/query.py", line 1102, in display_html
    tickets = query.execute(req)
  File "/venv/trac/1.0.15/lib/python2.5/site-packages/trac/ticket/query.py", line 334, in execute
    val = int(val)
TypeError: int() argument must be a string or a number, not 'NoneType'

We should add id to reserved field names in TicketSystem:

  • trac/ticket/api.py

    diff --git a/trac/ticket/api.py b/trac/ticket/api.py
    index f032664a2..33396c5c0 100644
    a b class TicketSystem(Component):  
    364364
    365365    reserved_field_names = ['report', 'order', 'desc', 'group', 'groupdesc',
    366366                            'col', 'row', 'format', 'max', 'page', 'verbose',
    367                             'comment', 'or']
     367                            'comment', 'or', 'id']
    368368
    369369    def get_custom_fields(self):
    370370        return copy.deepcopy(self.custom_fields)

I'll post unit tests later.

Change History (3)

comment:1 by Jun Omae, 6 years ago

Owner: set to Jun Omae
Status: newassigned

Proposed changes in [b4c1e5862/jomae.git].

comment:2 by Ryan J Ollos, 6 years ago

Looks good to me.

comment:3 by Jun Omae, 6 years ago

Release Notes: modified (diff)
Resolution: fixed
Status: assignedclosed

Thanks. Committed in [16403] and merged in [16404,16405].

Note: See TracTickets for help on using tickets.