Skip to content
Snippets Groups Projects
Commit d3a61637 authored by Yann Leboulanger's avatar Yann Leboulanger
Browse files

no need of global vars, prefer self.var

parent faa46882
No related branches found
No related tags found
No related merge requests found
......@@ -83,18 +83,17 @@ def __init__(self):
# db is not created here but in src/common/checks_paths.py
return
global con, cur
# if locked, wait up to 20 sec to unlock
# before raise (hopefully should be enough)
con = sqlite.connect(LOG_DB_PATH, timeout = 20.0,
self.con = sqlite.connect(LOG_DB_PATH, timeout = 20.0,
isolation_level = 'IMMEDIATE')
cur = con.cursor()
self.cur = self.con.cursor()
self.get_jids_already_in_db()
def get_jids_already_in_db(self):
cur.execute('SELECT jid FROM jids')
rows = cur.fetchall() # list of tupples: (u'aaa@bbb',), (u'cc@dd',)]
self.cur.execute('SELECT jid FROM jids')
rows = self.cur.fetchall() # list of tupples: (u'aaa@bbb',), (u'cc@dd',)]
for row in rows:
# row[0] is first item of row (the only result here, the jid)
self.jids_already_in.append(row[0])
......@@ -110,9 +109,9 @@ def jid_is_from_pm(self, jid):
possible_room_jid, possible_nick = jid.split('/', 1)
cur.execute('SELECT jid_id FROM jids WHERE jid="%s" AND type=%d' %\
self.cur.execute('SELECT jid_id FROM jids WHERE jid="%s" AND type=%d' %\
(possible_room_jid, constants.JID_ROOM_TYPE))
row = cur.fetchone()
row = self.cur.fetchone()
if row is not None:
return True
else:
......@@ -129,19 +128,19 @@ def get_jid_id(self, jid, typestr = None):
if not jid_is_from_pm: # it's normal jid with resource
jid = jid.split('/', 1)[0] # remove the resource
if jid in self.jids_already_in: # we already have jids in DB
cur.execute('SELECT jid_id FROM jids WHERE jid="%s"' % jid)
jid_id = cur.fetchone()[0]
self.cur.execute('SELECT jid_id FROM jids WHERE jid="%s"' % jid)
jid_id = self.cur.fetchone()[0]
else: # oh! a new jid :), we add it now
if typestr == 'ROOM':
typ = constants.JID_ROOM_TYPE
else:
typ = constants.JID_NORMAL_TYPE
cur.execute('INSERT INTO jids (jid, type) VALUES (?, ?)', (jid, typ))
self.cur.execute('INSERT INTO jids (jid, type) VALUES (?, ?)', (jid, typ))
try:
con.commit()
self.con.commit()
except sqlite.OperationalError, e:
print >> sys.stderr, str(e)
jid_id = cur.lastrowid
jid_id = self.cur.lastrowid
self.jids_already_in.append(jid)
return jid_id
......@@ -185,9 +184,9 @@ def convert_human_values_to_db_api_values(self, kind, show):
def commit_to_db(self, values):
#print 'saving', values
sql = 'INSERT INTO logs (jid_id, contact_name, time, kind, show, message, subject) VALUES (?, ?, ?, ?, ?, ?, ?)'
cur.execute(sql, values)
self.cur.execute(sql, values)
try:
con.commit()
self.con.commit()
except sqlite.OperationalError, e:
print >> sys.stderr, str(e)
......@@ -203,10 +202,9 @@ def write(self, kind, jid, message = None, show = None, tim = None, subject = No
ROOM_JID/nick if pm-related.'''
if self.jids_already_in == []: # only happens if we just created the db
global con, cur
con = sqlite.connect(LOG_DB_PATH, timeout = 20.0,
self.con = sqlite.connect(LOG_DB_PATH, timeout = 20.0,
isolation_level = 'IMMEDIATE')
cur = con.cursor()
self.cur = self.con.cursor()
jid = jid.lower()
contact_name_col = None # holds nickname for kinds gcstatus, gc_msg
......@@ -269,7 +267,7 @@ def get_last_conversation_lines(self, jid, restore_how_many_rows,
timed_out = now - (timeout * 60) # before that they are too old
# so if we ask last 5 lines and we have 2 pending we get
# 3 - 8 (we avoid the last 2 lines but we still return 5 asked)
cur.execute('''
self.cur.execute('''
SELECT time, kind, message FROM logs
WHERE jid_id = %d AND kind IN (%d, %d, %d, %d) AND time > %d
ORDER BY time DESC LIMIT %d OFFSET %d
......@@ -278,7 +276,7 @@ def get_last_conversation_lines(self, jid, restore_how_many_rows,
timed_out, restore_how_many_rows, pending_how_many)
)
results = cur.fetchall()
results = self.cur.fetchall()
results.reverse()
return results
......@@ -303,14 +301,14 @@ def get_conversation_for_date(self, jid, year, month, day):
seconds_in_a_day = 86400 # 60 * 60 * 24
last_second_of_day = start_of_day + seconds_in_a_day - 1
cur.execute('''
self.cur.execute('''
SELECT contact_name, time, kind, show, message FROM logs
WHERE jid_id = %d
AND time BETWEEN %d AND %d
ORDER BY time
''' % (jid_id, start_of_day, last_second_of_day))
results = cur.fetchall()
results = self.cur.fetchall()
return results
def get_search_results_for_query(self, jid, query):
......@@ -321,20 +319,20 @@ def get_search_results_for_query(self, jid, query):
jid_id = self.get_jid_id(jid)
if False: #query.startswith('SELECT '): # it's SQL query
try:
cur.execute(query)
self.cur.execute(query)
except sqlite.OperationalError, e:
results = [('', '', '', '', str(e))]
return results
else: # user just typed something, we search in message column
like_sql = '%' + query + '%'
cur.execute('''
self.cur.execute('''
SELECT contact_name, time, kind, show, message, subject FROM logs
WHERE jid_id = ? AND message LIKE ?
ORDER BY time
''', (jid_id, like_sql))
results = cur.fetchall()
results = self.cur.fetchall()
return results
def date_has_logs(self, jid, year, month, day):
......@@ -348,7 +346,7 @@ def date_has_logs(self, jid, year, month, day):
last_second_of_day = start_of_day + seconds_in_a_day - 1
# just ask one row to see if we have sth for this date
cur.execute('''
self.cur.execute('''
SELECT log_line_id FROM logs
WHERE jid_id = %d
AND time BETWEEN %d AND %d
......@@ -356,7 +354,7 @@ def date_has_logs(self, jid, year, month, day):
LIMIT 1
''' % (jid_id, start_of_day, last_second_of_day,
constants.KIND_STATUS, constants.KIND_GCSTATUS))
result = cur.fetchone()
result = self.cur.fetchone()
if result:
return True
else:
......@@ -367,11 +365,11 @@ def get_last_date_that_has_logs(self, jid):
we had logs (excluding statuses)'''
jid = jid.lower()
jid_id = self.get_jid_id(jid)
cur.execute('''
self.cur.execute('''
SELECT time FROM logs
WHERE jid_id = ?
AND kind NOT IN (?, ?)
ORDER BY time DESC LIMIT 1
''', (jid_id, constants.KIND_STATUS, constants.KIND_GCSTATUS))
result = cur.fetchone()
result = self.cur.fetchone()
return result
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment