#12219 closed enhancement (fixed)
Add a Report model class to report.py
| Reported by: | Ryan J Ollos | Owned by: | Ryan J Ollos | 
|---|---|---|---|
| Priority: | normal | Milestone: | 1.2 | 
| Component: | report system | Version: | |
| Severity: | normal | Keywords: | |
| Cc: | Branch: | ||
| Release Notes: | |||
| API Changes: | 
           
Extracted a   | 
      ||
| Internal Changes: | |||
Description (last modified by )
The SQL in the ReportModule could be extracted to a Report model class, providing a better API for plugins to make use of.
Attachments (0)
Change History (9)
comment:1 by , 10 years ago
| Description: | modified (diff) | 
|---|
comment:2 by , 10 years ago
| API Changes: | modified (diff) | 
|---|
comment:3 by , 10 years ago
2 failures with PostgreSQL.
======================================================================
ERROR: test (trac.wiki.tests.formatter.WikiTestCase)
Test report link with non-digits
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/run/shm/2c9ac20f9f3bf68bd7fa7420be149c6a35745d18/py27-postgres/trac/wiki/tests/formatter.py", line 209, in test
    v = unicode(formatter.generate(**self.generate_opts))
  File "/run/shm/2c9ac20f9f3bf68bd7fa7420be149c6a35745d18/py27-postgres/trac/wiki/formatter.py", line 1545, in generate
    escape_newlines)
  File "/run/shm/2c9ac20f9f3bf68bd7fa7420be149c6a35745d18/py27-postgres/trac/wiki/formatter.py", line 1327, in format
    result = re.sub(self.wikiparser.rules, self.replace, line)
  File "/home/jun66j5/venv/py27-1.1/lib/python2.7/re.py", line 151, in sub
    return _compile(pattern, flags).sub(repl, string, count)
  File "/run/shm/2c9ac20f9f3bf68bd7fa7420be149c6a35745d18/py27-postgres/trac/wiki/formatter.py", line 1245, in replace
    replacement = self.handle_match(fullmatch)
  File "/run/shm/2c9ac20f9f3bf68bd7fa7420be149c6a35745d18/py27-postgres/trac/wiki/formatter.py", line 1241, in handle_match
    return internal_handler(match, fullmatch)
  File "/run/shm/2c9ac20f9f3bf68bd7fa7420be149c6a35745d18/py27-postgres/trac/wiki/formatter.py", line 622, in _shref_formatter
    return self._make_link(ns, target, match, match, fullmatch)
  File "/run/shm/2c9ac20f9f3bf68bd7fa7420be149c6a35745d18/py27-postgres/trac/wiki/formatter.py", line 673, in _make_link
    fullmatch)
  File "/run/shm/2c9ac20f9f3bf68bd7fa7420be149c6a35745d18/py27-postgres/trac/ticket/report.py", line 1001, in _format_link
    Report(self.env, id)
  File "/run/shm/2c9ac20f9f3bf68bd7fa7420be149c6a35745d18/py27-postgres/trac/ticket/report.py", line 124, in __init__
    """, (id,)):
  File "/run/shm/2c9ac20f9f3bf68bd7fa7420be149c6a35745d18/py27-postgres/trac/db/api.py", line 122, in execute
    return db.execute(query, params)
  File "/run/shm/2c9ac20f9f3bf68bd7fa7420be149c6a35745d18/py27-postgres/trac/db/util.py", line 128, in execute
    cursor.execute(query, params if params is not None else [])
  File "/run/shm/2c9ac20f9f3bf68bd7fa7420be149c6a35745d18/py27-postgres/trac/db/util.py", line 61, in execute
    r = self.cursor.execute(sql_escape_percent(sql), args)
DataError: invalid input syntax for integer: "blah"
LINE 3:                     WHERE id='blah'
                                     ^
======================================================================
ERROR: test (trac.wiki.tests.formatter.OneLinerTestCase)
Test report link with non-digits
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/run/shm/2c9ac20f9f3bf68bd7fa7420be149c6a35745d18/py27-postgres/trac/wiki/tests/formatter.py", line 209, in test
    v = unicode(formatter.generate(**self.generate_opts))
  File "/run/shm/2c9ac20f9f3bf68bd7fa7420be149c6a35745d18/py27-postgres/trac/wiki/formatter.py", line 1573, in generate
    shorten)
  File "/run/shm/2c9ac20f9f3bf68bd7fa7420be149c6a35745d18/py27-postgres/trac/wiki/formatter.py", line 1429, in format
    result = re.sub(self.wikiparser.rules, self.replace, result)
  File "/home/jun66j5/venv/py27-1.1/lib/python2.7/re.py", line 151, in sub
    return _compile(pattern, flags).sub(repl, string, count)
  File "/run/shm/2c9ac20f9f3bf68bd7fa7420be149c6a35745d18/py27-postgres/trac/wiki/formatter.py", line 1245, in replace
    replacement = self.handle_match(fullmatch)
  File "/run/shm/2c9ac20f9f3bf68bd7fa7420be149c6a35745d18/py27-postgres/trac/wiki/formatter.py", line 1241, in handle_match
    return internal_handler(match, fullmatch)
  File "/run/shm/2c9ac20f9f3bf68bd7fa7420be149c6a35745d18/py27-postgres/trac/wiki/formatter.py", line 622, in _shref_formatter
    return self._make_link(ns, target, match, match, fullmatch)
  File "/run/shm/2c9ac20f9f3bf68bd7fa7420be149c6a35745d18/py27-postgres/trac/wiki/formatter.py", line 673, in _make_link
    fullmatch)
  File "/run/shm/2c9ac20f9f3bf68bd7fa7420be149c6a35745d18/py27-postgres/trac/ticket/report.py", line 1001, in _format_link
    Report(self.env, id)
  File "/run/shm/2c9ac20f9f3bf68bd7fa7420be149c6a35745d18/py27-postgres/trac/ticket/report.py", line 124, in __init__
    """, (id,)):
  File "/run/shm/2c9ac20f9f3bf68bd7fa7420be149c6a35745d18/py27-postgres/trac/db/api.py", line 122, in execute
    return db.execute(query, params)
  File "/run/shm/2c9ac20f9f3bf68bd7fa7420be149c6a35745d18/py27-postgres/trac/db/util.py", line 128, in execute
    cursor.execute(query, params if params is not None else [])
  File "/run/shm/2c9ac20f9f3bf68bd7fa7420be149c6a35745d18/py27-postgres/trac/db/util.py", line 61, in execute
    r = self.cursor.execute(sql_escape_percent(sql), args)
DataError: invalid input syntax for integer: "blah"
LINE 3:                     WHERE id='blah'
                                     ^
----------------------------------------------------------------------
Ran 2139 tests in 316.904s
FAILED (errors=2)
make: *** [unit-test] Error 1
comment:4 by , 10 years ago
| API Changes: | modified (diff) | 
|---|---|
| Resolution: | → fixed | 
| Status: | assigned → closed | 
| Type: | defect → enhancement | 
Committed to trunk in [14728].
comment:5 by , 10 years ago
I think we should move the Report class to trac.ticket.model…. Milestone class is defined in trac.ticket.model, not trac.ticket.roadmap. Thoughts? Also, it might be good to add realm = 'report' attribute like Ticket.realm.
comment:6 by , 10 years ago
Those change sounds good: log:rjollos.git:t12219_report_module_refactoring.2.
comment:9 by , 9 years ago
Replying to Ryan J Ollos:
Report tests moved from trac.ticket.tests.report to trac.ticket.tests.model in r15596, merged in r15597.



  
Proposed changes in log:rjollos.git:t12219_report_module_refactoring.