Changeset 3423

Show
Ignore:
Timestamp:
03/28/08 04:45:43 (6 months ago)
Author:
gotoh
Message:

Fix to use ReportModule.sql_sub_vars() for the issue #2810.
Old code is not good for query like "... LIKE '%$USER%'" on 0.10.x
or 0.11 on replacing variables.
Close #2810.

And also drop supporting for trac 0.8 or before.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • ticketboxmacro/0.10/TicketBox.py

    r2848 r3423  
    3333import re 
    3434import string 
     35from trac import __version__ as version 
     36from trac.wiki.formatter import wiki_to_oneliner 
     37from trac.ticket.report import ReportModule 
     38 
     39## Mock request object 
     40class MockReq(object): 
     41    def __init__(self): 
     42        self.hdf = dict() 
     43        self.authname = 'anonymous' 
     44 
     45# get trac version 
     46ver = [int(x) for x in version.split(".")] 
    3547 
    3648## default style values 
     
    100112            db = env.get_db_cnx() 
    101113            curs = db.cursor() 
     114            req = MockReq() 
    102115            try: 
    103116                curs.execute('SELECT query FROM report WHERE id=%s' % num) 
    104117                (query,) = curs.fetchone() 
    105                 # replace dynamic variables 
    106                 for k, v in dv.iteritems(): 
    107                     s = r'\$%s' % k 
    108                     s = '(?:"%s"|\'%s\'|%s\\b)' % (s, s, s) 
    109                     query = re.sub(s, sqlstr(v), query) 
     118                # replace dynamic variables with sql_sub_vars() 
     119                # NOTE: sql_sub_vars() takes different arguments in 
     120                #       several trac versions. 
     121                #       For 0.10 or before, arguments are (req, query, args) 
     122                #       For 0.10.x, arguments are (req, query, args, db) 
     123                #       For 0.11 or later, arguments are (query, args, db) 
     124                if ver <= [0, 10]: 
     125                    args = (req, query, dv)     # for 0.10 or before 
     126                elif ver < [0, 11]: 
     127                    args = (req, query, dv, db) # for 0.10.x 
     128                else: 
     129                    args = (query, dv, db)      # for 0.11 or later 
     130                query, dv = ReportModule(env).sql_sub_vars(*args) 
    110131                #env.log.debug('query = %s' % query) 
    111                 curs.execute(query
     132                curs.execute(query, dv
    112133                rows = curs.fetchall() 
    113134                if rows: 
     
    126147    items.sort() 
    127148    html = '' 
    128     try: 
    129         # for trac 0.9 or later 
    130         from trac.wiki.formatter import wiki_to_oneliner 
    131     except: 
    132         # for trac 0.8.x 
    133         from trac.WikiFormatter import wiki_to_oneliner 
    134149 
    135150    if show_summary: 
  • ticketboxmacro/0.11/TicketBox.py

    r2848 r3423  
    3333import re 
    3434import string 
     35from trac.wiki.formatter import wiki_to_oneliner 
     36from trac.ticket.report import ReportModule 
    3537 
    3638## default style values 
     
    106108                curs.execute('SELECT query FROM report WHERE id=%s' % num) 
    107109                (query,) = curs.fetchone() 
    108                 # replace dynamic variables 
    109                 for k, v in dv.iteritems(): 
    110                     s = r'\$%s' % k 
    111                     s = '(?:"%s"|\'%s\'|%s\\b)' % (s, s, s) 
    112                     query = re.sub(s, sqlstr(v), query) 
     110                # replace dynamic variables with sql_sub_vars() 
     111                # NOTE: sql_sub_vars() takes different arguments in 
     112                #       several trac versions. 
     113                #       For 0.10 or before, arguments are (req, query, args) 
     114                #       For 0.10.x, arguments are (req, query, args, db) 
     115                #       For 0.11 or later, arguments are (query, args, db) 
     116                query, dv = ReportModule(env).sql_sub_vars(query, dv, db) 
    113117                #env.log.debug('query = %s' % query) 
    114                 curs.execute(query
     118                curs.execute(query, dv
    115119                rows = curs.fetchall() 
    116120                if rows: 
     
    129133    items.sort() 
    130134    html = '' 
    131     from trac.wiki.formatter import wiki_to_oneliner 
    132135    if show_summary: 
    133136        html = string.join([wiki_to_oneliner("%s (#%d)" % (v,k), 
  • ticketboxmacro/0.9/TicketBox.py

    r2848 r3423  
    3333import re 
    3434import string 
     35from trac.wiki.formatter import wiki_to_oneliner 
     36from trac.ticket.report import ReportModule 
     37 
     38## Mock request object 
     39class MockReq(object): 
     40    def __init__(self): 
     41        self.hdf = dict() 
     42        self.authname = 'anonymous' 
    3543 
    3644## default style values 
     
    100108            db = env.get_db_cnx() 
    101109            curs = db.cursor() 
     110            req = MockReq() 
    102111            try: 
    103112                curs.execute('SELECT sql FROM report WHERE id=%s' % num) 
    104                 (sql,) = curs.fetchone() 
    105                 # replace dynamic variables 
    106                 for k, v in dv.iteritems(): 
    107                     s = r'\$%s' % k 
    108                     s = '(?:"%s"|\'%s\'|%s\\b)' % (s, s, s) 
    109                     sql = re.sub(s, sqlstr(v), sql) 
    110                 #env.log.debug('sql = %s' % sql) 
    111                 curs.execute(sql) 
     113                (query,) = curs.fetchone() 
     114                # replace dynamic variables with sql_sub_vars() 
     115                # NOTE: sql_sub_vars() takes different arguments in 
     116                #       several trac versions. 
     117                #       For 0.10 or before, arguments are (req, query, args) 
     118                #       For 0.10.x, arguments are (req, query, args, db) 
     119                #       For 0.11 or later, arguments are (query, args, db) 
     120                query, dv = ReportModule(env).sql_sub_vars(req, query, dv) 
     121                #env.log.debug('query = %s' % query) 
     122                curs.execute(query, dv) 
    112123                rows = curs.fetchall() 
    113124                if rows: 
     
    126137    items.sort() 
    127138    html = '' 
    128     try: 
    129         # for trac 0.9 or later 
    130         from trac.wiki.formatter import wiki_to_oneliner 
    131     except: 
    132         # for trac 0.8.x 
    133         from trac.WikiFormatter import wiki_to_oneliner 
    134139 
    135140    if show_summary: