Merge lp:~zeitgeist/zeitgeist/398440 into lp:zeitgeist/0.1

Proposed by Siegfried Gevatter
Status: Merged
Merged at revision: 1029
Proposed branch: lp:~zeitgeist/zeitgeist/398440
Merge into: lp:zeitgeist/0.1
Diff against target: None lines
To merge this branch: bzr merge lp:~zeitgeist/zeitgeist/398440
Reviewer Review Type Date Requested Status
Seif Lotfy Pending
Markus Korn Pending
Zeitgeist Framework Team Pending
Review via email: mp+8744@code.launchpad.net
To post a comment you must log in.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file '_zeitgeist/engine/engine.py'
--- _zeitgeist/engine/engine.py 2009-07-13 20:00:46 +0000
+++ _zeitgeist/engine/engine.py 2009-07-14 12:27:06 +0000
@@ -32,6 +32,7 @@
32import sqlite332import sqlite3
3333
34from _zeitgeist.engine.base import *34from _zeitgeist.engine.base import *
35from _zeitgeist.lrucache import LRUCache
35from zeitgeist.dbusutils import EventDict36from zeitgeist.dbusutils import EventDict
3637
37logging.basicConfig(level=logging.DEBUG)38logging.basicConfig(level=logging.DEBUG)
@@ -50,7 +51,7 @@
50 self.store = storm_store51 self.store = storm_store
51 self._apps = set()52 self._apps = set()
52 self._last_time_from_app = {}53 self._last_time_from_app = {}
53 self._apps_id = {}54 self._applications = LRUCache(10)
54 55
55 '''56 '''
56 path = BaseDirectory.save_data_path("zeitgeist")57 path = BaseDirectory.save_data_path("zeitgeist")
@@ -59,16 +60,6 @@
59 self.cursor = self.connection.cursor()60 self.cursor = self.connection.cursor()
60 '''61 '''
61 62
62 def _get_app(self, id):
63 if self._apps_id.has_key(id):
64 return self._apps_id[id]
65
66 info = self.store.execute("SELECT info FROM app WHERE item_id=?",
67 (id,)).get_one()
68 if info:
69 self._apps_id[id] = info[0]
70 return info[0]
71
72 def _get_ids(self, uri, content, source): 63 def _get_ids(self, uri, content, source):
73 uri_id = URI.lookup_or_create(uri).id if uri else None64 uri_id = URI.lookup_or_create(uri).id if uri else None
74 content_id = Content.lookup_or_create(content).id if content else None65 content_id = Content.lookup_or_create(content).id if content else None
@@ -175,18 +166,17 @@
175 return 2 if event_exists else 1166 return 2 if event_exists else 1
176 167
177 # Insert the application168 # Insert the application
178 # FIXME: Is reading the .desktop file and storing that stuff into169 if ritem["app"] in self._applications:
179 # the DB really required?170 app_uri_id = self._applications[ritem["app"]]
180 app_info = DesktopEntry(ritem["app"])171 else:
181 app_uri_id, app_content_id, app_source_id = self._get_ids(ritem["app"],172 try:
182 unicode(app_info.getType()), unicode(app_info.getExec()).split()[0])173 self.store.execute("INSERT INTO app (info) VALUES (?)",
183 app_item = self._get_item(app_uri_id, app_content_id, app_source_id,174 (ritem["app"],), noresult=True)
184 unicode(app_info.getName()), icon=unicode(app_info.getIcon()))175 except sqlite3.IntegrityError:
185 try:176 pass
186 self.store.execute("INSERT INTO app (item_id, info) VALUES (?,?)",177 app_uri_id = self.store.execute(
187 (app_uri_id, unicode(ritem["app"])), noresult=True)178 "SELECT item_id FROM app WHERE info=?", (ritem["app"],)).get_one()[0]
188 except sqlite3.IntegrityError:179 self._applications[ritem["app"]] = app_uri_id
189 pass
190 180
191 # Insert the event181 # Insert the event
192 e_id, e_content_id, e_subject_id = self._get_ids(event_uri, ritem["use"], None)182 e_id, e_content_id, e_subject_id = self._get_ids(event_uri, ritem["use"], None)
@@ -494,10 +484,12 @@
494 0 is returned.484 0 is returned.
495 """485 """
496 486
497 app = App.lookup(application)487 query = self.store.execute("""
498 488 SELECT start FROM event
499 return self.store.find(Event.start, Event.app == app.item.id489 WHERE app_id = (SELECT item_id FROM app WHERE info = ?)
500 ).order_by(Event.start).last() if app else 0490 ORDER BY start DESC LIMIT 1
491 """, (application,)).get_one()
492 return query[0] if query else 0
501493
502_engine = None494_engine = None
503def get_default_engine():495def get_default_engine():

Subscribers

People subscribed via source and target branches