Modify ↓
#12402 closed defect (fixed)
Query system doesn't respect order of ticket types
| Reported by: | Jun Omae | Owned by: | Jun Omae |
|---|---|---|---|
| Priority: | normal | Milestone: | 1.0.11 |
| Component: | query system | Version: | |
| Severity: | normal | Keywords: | |
| Cc: | Branch: | ||
| Release Notes: |
Query system now sorts by |
||
| API Changes: | |||
| Internal Changes: | |||
Description (last modified by )
The following query is generated from query:?owner=admin&order=type. The ticket types are defined in enum table and have the order.
However, the query doesn't sort by enum.value. If resolution, priority and severity, it sorts by enum.value.
SELECT t.id AS id,t.summary AS summary,t.owner AS owner,t.type AS type,t.status AS st atus,t.priority AS priority,t.milestone AS milestone,t.time AS time,t.changetime AS changetime,t.reporter AS reporter,priority.value AS priority_value FROM ticket AS t LEFT OUTER JOIN enum AS priority ON (priority.type='priority' AND priority.name=priority) WHERE ((COALESCE(t.reporter,'')=%s)) ORDER BY COALESCE(t.type,'')='',t.type,t.id
Attachments (0)
Change History (5)
comment:1 by , 10 years ago
| Description: | modified (diff) |
|---|
comment:2 by , 10 years ago
| Owner: | set to |
|---|---|
| Status: | new → assigned |
comment:3 by , 10 years ago
| Release Notes: | modified (diff) |
|---|---|
| Resolution: | → fixed |
| Status: | assigned → closed |
comment:4 by , 10 years ago
This refactoring might simplify the expression a little bit:
-
trac/ticket/query.py
diff --git a/trac/ticket/query.py b/trac/ticket/query.py index 039ca18..a4b4335 100644
a b class Query(object): 436 436 enum_columns = [col for col in ('resolution', 'priority', 'severity', 437 437 'type') 438 438 if col not in custom_fields and 439 (col == 'priority' or col == self.order or 440 col == self.group)] 439 col in ('priority', self.order, self.group)] 441 440 joined_columns = [col for col in ('milestone', 'version') 442 441 if col not in custom_fields and 443 (col == self.order or col ==self.group)]442 col in (self.order, self.group)] 444 443 # 31 is max of joins in SQLite 32-bit 445 444 use_joins = (len(set(cols) & custom_fields) + 446 445 len(enum_columns) + len(joined_columns)) <= 31
Note:
See TracTickets
for help on using tickets.



Proposed changes in log:jomae.git@t12402.