Changeset 3119

Show
Ignore:
Timestamp:
01/21/08 13:36:51 (1 year ago)
Author:
bobbysmith007
Message:

closes #2438

Replaced dbhelper with a version of that file that maintains its own connections (via an env var set during environment setup)

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • timingandestimationplugin/branches/trac0.10/setup.py

    r2824 r3119  
    88      description='Plugin to make Trac support time estimation and tracking', 
    99      keywords='trac plugin estimation timetracking', 
    10       version='0.5.2', 
     10      version='0.5.3', 
    1111      url='http://www.trac-hacks.org/wiki/TimingAndEstimationPlugin', 
    1212      license='http://www.opensource.org/licenses/mit-license.php', 
  • timingandestimationplugin/branches/trac0.10/timingandestimationplugin/api.py

    r2824 r3119  
    4949        # Setup logging 
    5050        dbhelper.mylog = self.log 
     51        dbhelper.env = self.env 
    5152        self.db_version_key = 'TimingAndEstimationPlugin_Db_Version' 
    5253        self.db_version = 6 
     
    7879        # Legacy support hack (supports upgrades from 0.1.6 to 0.1.7) 
    7980        if self.db_installed_version == 0: 
    80             bill_date = dbhelper.db_table_exists(self.env.get_db_cnx(), 'bill_date'); 
    81             report_version = dbhelper.db_table_exists(self.env.get_db_cnx(), 'report_version'); 
     81            bill_date = dbhelper.db_table_exists('bill_date'); 
     82            report_version = dbhelper.db_table_exists('report_version'); 
    8283            if bill_date and report_version: 
    8384                self.db_installed_version = 1 
     
    9495            ); 
    9596            """ 
    96             dbhelper.execute_non_query(self.env.get_db_cnx(), sql) 
     97            dbhelper.execute_non_query( sql) 
    9798             
    9899            print "Creating report_version table" 
     
    104105            ); 
    105106            """ 
    106             dbhelper.execute_non_query(self.env.get_db_cnx(), sql) 
     107            dbhelper.execute_non_query(sql) 
    107108 
    108109        if self.db_installed_version < 4: 
     
    111112            ALTER TABLE report_version ADD COLUMN tags varchar(1024) null; 
    112113            """ 
    113             dbhelper.execute_non_query(self.env.get_db_cnx(), sql) 
     114            dbhelper.execute_non_query(sql) 
    114115 
    115116        if self.db_installed_version < 5: 
     
    120121            sql = "DELETE FROM report " \ 
    121122                  "WHERE author=%s AND id IN (SELECT report FROM report_version)" 
    122             dbhelper.execute_non_query(self.env.get_db_cnx(), sql, 'Timing and Estimation Plugin') 
     123            dbhelper.execute_non_query( sql, 'Timing and Estimation Plugin') 
    123124             
    124125            sql = "DROP TABLE report_version" 
    125             dbhelper.execute_non_query(self.env.get_db_cnx(), sql) 
     126            dbhelper.execute_non_query( sql) 
    126127         
    127128         
    128129        # This statement block always goes at the end this method 
    129         dbhelper.set_system_value(self.env, self.db_version_key, self.db_version) 
     130        dbhelper.set_system_value(self.db_version_key, self.db_version) 
    130131        self.db_installed_version = self.db_version 
    131132     
     
    192193 
    193194    def needs_user_man(self): 
    194         maxversion = dbhelper.get_scalar(self.env.get_db_cnx(), 
    195                                          "SELECT MAX(version) FROM wiki WHERE name like %s", 0, 
     195        maxversion = dbhelper.get_scalar("SELECT MAX(version) FROM wiki WHERE name like %s", 0, 
    196196                                         user_manual_wiki_title) 
    197197        if (not maxversion) or maxversion < user_manual_version: 
     
    206206        VALUES ( %s, %s, %s, 'Timing and Estimation Plugin', '127.0.0.1', %s,'',0) 
    207207        """ 
    208         dbhelper.execute_non_query(self.env.get_db_cnx(),sql, 
     208        dbhelper.execute_non_query(sql, 
    209209                                   user_manual_wiki_title, 
    210210                                   user_manual_version, 
  • timingandestimationplugin/branches/trac0.10/timingandestimationplugin/dbhelper.py

    r2824 r3119  
    11mylog = None; 
     2env = None; 
    23 
    3  
    4 def get_all(db, sql, *params): 
     4def get_all(sql, *params): 
    55    """Executes the query and returns the (description, data)""" 
     6    db = env.get_db_cnx() 
    67    cur = db.cursor() 
    78    desc  = None 
     
    2324    return (desc, data) 
    2425 
    25 def execute_non_query(db, sql, *params): 
     26def execute_non_query( sql, *params): 
    2627    """Executes the query on the given project""" 
     28    db = env.get_db_cnx() 
    2729    cur = db.cursor() 
    2830    try: 
     
    3840        pass 
    3941     
    40 def get_first_row(db, sql,*params): 
     42def get_first_row( sql,*params): 
    4143    """ Returns the first row of the query results as a tuple of values (or None)""" 
     44    db = env.get_db_cnx() 
    4245    cur = db.cursor() 
    4346    data = None; 
     
    5659    return data; 
    5760 
    58 def get_scalar(db, sql, col=0, *params): 
     61def get_scalar(sql, col=0, *params): 
    5962    """ Gets a single value (in the specified column) from the result set of the query""" 
    60     data = get_first_row(db, sql, *params); 
     63    data = get_first_row(sql, *params); 
    6164    if data: 
    6265        return data[col] 
     
    6467        return None; 
    6568 
    66 def execute_in_trans(db, *args): 
    67     success = True 
     69def execute_in_trans(*args): 
     70    db = env.get_db_cnx() 
    6871    cur = db.cursor() 
     72    result = True 
    6973    try: 
    7074        for sql, params in args: 
     
    7579        with parameters:%s\nException:%s'%(sql, params, e)); 
    7680        db.rollback(); 
    77         success = Fals
     81        result =
    7882    try: 
    7983        db.close() 
    8084    except: 
    8185        pass 
    82     return success 
     86    return result 
    8387 
    84 def db_table_exists(db, table): 
     88def db_table_exists( table): 
     89    db = env.get_db_cnx() 
    8590    sql = "SELECT * FROM %s LIMIT 1" % table; 
    8691    cur = db.cursor() 
     
    99104    return has_table 
    100105 
    101 def get_column_as_list(db, sql, col=0, *params): 
    102     return [valueList[col] for valueList in get_all(db, sql, *params)[1]] 
     106def get_column_as_list(sql, col=0, *params): 
     107    data = get_all(sql, *params)[1] or () 
     108    return [valueList[col] for valueList in data] 
    103109 
    104 def get_system_value(db, key): 
    105     return get_scalar(db, "SELECT value FROM system WHERE name=%s", 0, key) 
     110def get_system_value(key): 
     111    return get_scalar("SELECT value FROM system WHERE name=%s", 0, key) 
    106112 
    107 def set_system_value(env,  key, value): 
    108     if get_system_value(env.get_db_cnx(), key): 
    109         execute_non_query(env.get_db_cnx(), "UPDATE system SET value=%s WHERE name=%s", value, key)         
     113def set_system_value(key, value): 
     114    if get_system_value(key): 
     115        execute_non_query("UPDATE system SET value=%s WHERE name=%s", value, key)         
    110116    else: 
    111         execute_non_query(env.get_db_cnx(), "INSERT INTO system (value, name) VALUES (%s, %s)", 
     117        execute_non_query("INSERT INTO system (value, name) VALUES (%s, %s)", 
    112118            value, key) 
    113119 
    114120 
    115 def get_result_set(db, sql, *params): 
     121def get_result_set(sql, *params): 
    116122    """Executes the query and returns a Result Set""" 
    117     return ResultSet(get_all(db, sql, *params)) 
     123    tpl = get_all(sql, *params); 
     124    if tpl and tpl[0] and tpl[1]: 
     125        return ResultSet(tpl) 
     126    else: 
     127        return None 
    118128 
    119129 
     
    156166            print ("rs.value Type Failed col:%s  row:%s" % (type(col), type(row))) 
    157167    
     168    def json_out(self): 
     169        json = "[%s]" % ',\r\n'. join( 
     170            [("{%s}" % ','.join( 
     171            ["'%s':'%s'" % 
     172             (key, str(self.value(val, row)). 
     173              replace("'","\\'"). 
     174              replace('"','\\"'). 
     175              replace('\r','\\r'). 
     176              replace('\n','\\n')) 
     177             for (key, val) in self.columnMap.items()])) 
     178             for row in self.rows]) 
     179        #mylog.debug('serializing to json : %s'% json) 
     180        return json 
  • timingandestimationplugin/branches/trac0.10/timingandestimationplugin/webui.py

    r2390 r3119  
    3434        VALUES (%s, %s, %s) 
    3535        """ 
    36         dbhelper.execute_non_query(self.env.get_db_cnx(), sql, when, now, strwhen) 
     36        dbhelper.execute_non_query(sql, when, now, strwhen) 
    3737         
    3838         
     
    5959        FROM bill_date 
    6060        """ 
    61         rs = dbhelper.get_result_set(self.env.get_db_cnx(), billing_time_sql) 
    62         for (value, text) in rs.rows: 
    63             billing_info = {'text':text , 'value':value} 
    64             billing_dates.extend([billing_info]) 
     61        rs = dbhelper.get_result_set(billing_time_sql) 
     62        if rs: 
     63            for (value, text) in rs.rows: 
     64                billing_info = {'text':text , 'value':value} 
     65                billing_dates.extend([billing_info]) 
    6566        #self.log.debug("bill-dates: %s"%billing_dates) 
    6667        req.hdf['billing_info.billdates'] = billing_dates 
  • timingandestimationplugin/branches/trac0.11/setup.py

    r2948 r3119  
    88      description='Plugin to make Trac support time estimation and tracking', 
    99      keywords='trac plugin estimation timetracking', 
    10       version='0.5.9', 
     10      version='0.6.0', 
    1111      url='http://www.trac-hacks.org/wiki/TimingAndEstimationPlugin', 
    1212      license='http://www.opensource.org/licenses/mit-license.php', 
  • timingandestimationplugin/branches/trac0.11/timingandestimationplugin/api.py

    r2823 r3119  
    5353        # Setup logging 
    5454        dbhelper.mylog = self.log 
     55        dbhelper.env = self.env 
    5556        self.statuses_key = 'T&E-statuses' 
    5657        self.db_version_key = 'TimingAndEstimationPlugin_Db_Version' 
     
    5859        # Initialise database schema version tracking. 
    5960        self.db_installed_version = dbhelper.get_system_value(\ 
    60             self.env.get_db_cnx(),self.db_version_key) or 0 
     61            self.db_version_key) or 0 
    6162 
    6263    def environment_created(self): 
     
    7273        # Legacy support hack (supports upgrades from 0.1.6 to 0.1.7) 
    7374        if self.db_installed_version == 0: 
    74             bill_date = dbhelper.db_table_exists(self.env.get_db_cnx(), 'bill_date'); 
    75             report_version = dbhelper.db_table_exists(self.env.get_db_cnx(), 'report_version'); 
     75            bill_date = dbhelper.db_table_exists('bill_date'); 
     76            report_version = dbhelper.db_table_exists('report_version'); 
    7677            if bill_date and report_version: 
    7778                self.db_installed_version = 1 
     
    8889            ); 
    8990            """ 
    90             dbhelper.execute_non_query(self.env.get_db_cnx(), sql) 
     91            dbhelper.execute_non_query( sql) 
    9192 
    9293             
     
    99100            ); 
    100101            """ 
    101             dbhelper.execute_non_query(self.env.get_db_cnx(), sql) 
     102            dbhelper.execute_non_query(sql) 
    102103 
    103104        if self.db_installed_version < 4: 
     
    106107            ALTER TABLE report_version ADD COLUMN tags varchar(1024) null; 
    107108            """ 
    108             dbhelper.execute_non_query(self.env.get_db_cnx(), sql) 
     109            dbhelper.execute_non_query(sql) 
    109110 
    110111        if self.db_installed_version < 5: 
     
    115116            sql = "DELETE FROM report " \ 
    116117                  "WHERE author=%s AND id IN (SELECT report FROM report_version)" 
    117             dbhelper.execute_non_query(self.env.get_db_cnx(), sql, 'Timing and Estimation Plugin') 
     118            dbhelper.execute_non_query(sql, 'Timing and Estimation Plugin') 
    118119 
    119120            sql = "DROP TABLE report_version" 
    120             dbhelper.execute_non_query(self.env.get_db_cnx(), sql) 
     121            dbhelper.execute_non_query(sql) 
    121122             
    122123        #version 6 upgraded reports   
    123124                 
    124125        # This statement block always goes at the end this method 
    125         dbhelper.set_system_value(self.env, self.db_version_key, self.db_version) 
     126        dbhelper.set_system_value(self.db_version_key, self.db_version) 
    126127        self.db_installed_version = self.db_version 
    127128     
     
    202203 
    203204    def needs_user_man(self): 
    204         maxversion = dbhelper.get_scalar(self.env.get_db_cnx(), 
    205                                          "SELECT MAX(version) FROM wiki WHERE name like %s", 0, 
     205        maxversion = dbhelper.get_scalar("SELECT MAX(version) FROM wiki WHERE name like %s", 0, 
    206206                                         user_manual_wiki_title) 
    207207        if (not maxversion) or maxversion < user_manual_version: 
     
    216216        VALUES ( %s, %s, %s, 'Timing and Estimation Plugin', '127.0.0.1', %s,'',0) 
    217217        """ 
    218         dbhelper.execute_non_query(self.env.get_db_cnx(),sql, 
     218        dbhelper.execute_non_query(sql, 
    219219                                   user_manual_wiki_title, 
    220220                                   user_manual_version, 
     
    262262        stats = get_statuses(self.config, self.env) 
    263263        val = ','.join(list(stats)) 
    264         dbhelper.set_system_value(self.env, self.statuses_key, val) 
     264        dbhelper.set_system_value(self.statuses_key, val) 
    265265         
    266266        if self.ticket_fields_need_upgrade(): 
     
    277277        if we have different ones, throw return true 
    278278        """ 
    279         s = dbhelper.get_system_value(self.env.get_db_cnx(), self.statuses_key) 
     279        s = dbhelper.get_system_value(self.statuses_key) 
    280280        if not s: 
    281281            return True 
  • timingandestimationplugin/branches/trac0.11/timingandestimationplugin/dbhelper.py

    r2893 r3119  
    11mylog = None; 
     2env = None; 
    23 
    3  
    4 def get_all(db, sql, *params): 
     4def get_all(sql, *params): 
    55    """Executes the query and returns the (description, data)""" 
     6    db = env.get_db_cnx() 
    67    cur = db.cursor() 
    78    desc  = None 
     
    2324    return (desc, data) 
    2425 
    25 def execute_non_query(db, sql, *params): 
     26def execute_non_query( sql, *params): 
    2627    """Executes the query on the given project""" 
     28    db = env.get_db_cnx() 
    2729    cur = db.cursor() 
    2830    try: 
     
    3840        pass 
    3941     
    40 def get_first_row(db, sql,*params): 
     42def get_first_row( sql,*params): 
    4143    """ Returns the first row of the query results as a tuple of values (or None)""" 
     44    db = env.get_db_cnx() 
    4245    cur = db.cursor() 
    4346    data = None; 
     
    5659    return data; 
    5760 
    58 def get_scalar(db, sql, col=0, *params): 
     61def get_scalar(sql, col=0, *params): 
    5962    """ Gets a single value (in the specified column) from the result set of the query""" 
    60     data = get_first_row(db, sql, *params); 
     63    data = get_first_row(sql, *params); 
    6164    if data: 
    6265        return data[col] 
     
    6467        return None; 
    6568 
    66 def execute_in_trans(db, *args): 
    67     success = True 
     69def execute_in_trans(*args): 
     70    db = env.get_db_cnx() 
    6871    cur = db.cursor() 
     72    result = True 
    6973    try: 
    7074        for sql, params in args: 
     
    7579        with parameters:%s\nException:%s'%(sql, params, e)); 
    7680        db.rollback(); 
    77         success = Fals
     81        result =
    7882    try: 
    7983        db.close() 
    8084    except: 
    8185        pass 
    82     return success 
     86    return result 
    8387 
    84 def db_table_exists(db, table): 
     88def db_table_exists( table): 
     89    db = env.get_db_cnx() 
    8590    sql = "SELECT * FROM %s LIMIT 1" % table; 
    8691    cur = db.cursor() 
     
    99104    return has_table 
    100105 
    101 def get_column_as_list(db, sql, col=0, *params): 
    102     data = get_all(db, sql, *params)[1] or () 
     106def get_column_as_list(sql, col=0, *params): 
     107    data = get_all(sql, *params)[1] or () 
    103108    return [valueList[col] for valueList in data] 
    104109 
    105 def get_system_value(db, key): 
    106     return get_scalar(db, "SELECT value FROM system WHERE name=%s", 0, key) 
     110def get_system_value(key): 
     111    return get_scalar("SELECT value FROM system WHERE name=%s", 0, key) 
    107112 
    108 def set_system_value(env,  key, value): 
    109     if get_system_value(env.get_db_cnx(), key): 
    110         execute_non_query(env.get_db_cnx(), "UPDATE system SET value=%s WHERE name=%s", value, key)         
     113def set_system_value(key, value): 
     114    if get_system_value(key): 
     115        execute_non_query("UPDATE system SET value=%s WHERE name=%s", value, key)         
    111116    else: 
    112         execute_non_query(env.get_db_cnx(), "INSERT INTO system (value, name) VALUES (%s, %s)", 
     117        execute_non_query("INSERT INTO system (value, name) VALUES (%s, %s)", 
    113118            value, key) 
    114119 
    115120 
    116 def get_result_set(db, sql, *params): 
     121def get_result_set(sql, *params): 
    117122    """Executes the query and returns a Result Set""" 
    118     return ResultSet(get_all(db, sql, *params)) 
     123    tpl = get_all(sql, *params); 
     124    if tpl and tpl[0] and tpl[1]: 
     125        return ResultSet(tpl) 
     126    else: 
     127        return None 
    119128 
    120129 
     
    157166            print ("rs.value Type Failed col:%s  row:%s" % (type(col), type(row))) 
    158167    
     168    def json_out(self): 
     169        json = "[%s]" % ',\r\n'. join( 
     170            [("{%s}" % ','.join( 
     171            ["'%s':'%s'" % 
     172             (key, str(self.value(val, row)). 
     173              replace("'","\\'"). 
     174              replace('"','\\"'). 
     175              replace('\r','\\r'). 
     176              replace('\n','\\n')) 
     177             for (key, val) in self.columnMap.items()])) 
     178             for row in self.rows]) 
     179        #mylog.debug('serializing to json : %s'% json) 
     180        return json 
  • timingandestimationplugin/branches/trac0.11/timingandestimationplugin/statuses.py

    r2774 r3119  
    1111    SELECT DISTINCT status FROM ticket WHERE status <> '' ; 
    1212    """ 
    13     stats |= Set(dbhelper.get_column_as_list(env.get_db_cnx(), status_sql)) 
     13    stats |= Set(dbhelper.get_column_as_list(status_sql)) 
    1414    stats.difference_update(['', None]) 
    1515    return stats 
  • timingandestimationplugin/branches/trac0.11/timingandestimationplugin/webui.py

    r2774 r3119  
    3737        VALUES (%s, %s, %s) 
    3838        """ 
    39         dbhelper.execute_non_query(self.env.get_db_cnx(), sql, when, now, strwhen) 
     39        dbhelper.execute_non_query(sql, when, now, strwhen) 
    4040 
    4141     
     
    6565        FROM bill_date 
    6666        """ 
    67         rs = dbhelper.get_result_set(self.env.get_db_cnx(), billing_time_sql) 
    68         for (value, text) in rs.rows: 
    69             billing_info = {'text':text , 'value':value} 
    70             billing_dates.extend([billing_info]) 
     67        rs = dbhelper.get_result_set(billing_time_sql) 
     68        if rs: 
     69            for (value, text) in rs.rows: 
     70                billing_info = {'text':text , 'value':value} 
     71                billing_dates.extend([billing_info]) 
    7172        #self.log.debug("bill-dates: %s"%billing_dates) 
    7273        data['billing_info']["billdates"] = billing_dates