core: - history management improved

- better timestamp precision for history
bridge + core: history signature change (now return a list instead of a dict, and timestamp is now float)
quick_frontend: - use of new history API
				- removed deprecated keep_last argument in getHistory (was only used by Sortilège)
This commit is contained in:
Goffi 2011-12-04 16:18:56 +01:00
commit 53f1b5fcce
4 changed files with 20 additions and 19 deletions

View file

@ -178,7 +178,7 @@ class SqliteStorage():
"""
assert(profile!=None)
d = self.dbpool.runQuery("INSERT INTO history(source, source_res, dest, dest_res, timestamp, message, profile_id) VALUES (?,?,?,?,?,?,?)",
(from_jid.userhost(), from_jid.resource, to_jid.userhost(), to_jid.resource, timestamp or int(time.time()),
(from_jid.userhost(), from_jid.resource, to_jid.userhost(), to_jid.resource, timestamp or time.time(),
message, self.profiles[profile]))
d.addErrback(lambda ignore: error(_("Can't save following message in history: from [%(from_jid)s] to [%(to_jid)s] ==> [%(message)s]" %
{"from_jid":from_jid.full(), "to_jid":to_jid.full(), "message":message})))
@ -190,14 +190,15 @@ class SqliteStorage():
@param to_jid: dest JID (full, or bare for catchall
@param size: maximum number of messages to get, or 0 for unlimited
"""
def sqliteToDict(result):
result_dict = {}
for row in result:
def sqliteToDict(query_result):
query_result.reverse()
result = []
for row in query_result:
timestamp, source, source_res, dest, dest_res, message = row
result_dict[timestamp] = ("%s/%s" % (source, source_res) if source_res else source,
result.append((timestamp, "%s/%s" % (source, source_res) if source_res else source,
"%s/%s" % (dest, dest_res) if dest_res else dest,
message)
return result_dict
message))
return result
query_parts = ["SELECT timestamp, source, source_res, dest, dest_res, message FROM history WHERE"]
values = []
@ -214,6 +215,9 @@ class SqliteStorage():
if to_jid.resource:
query_parts.append("AND dest_res=?")
values.append(to_jid.resource)
query_parts.append("ORDER BY timestamp DESC")
if limit:
query_parts.append("LIMIT ?")
values.append(limit)