Merge lp:~zeitgeist/zeitgeist/datasource-properties-fix into lp:zeitgeist/0.1

Proposed by Seif Lotfy
Status: Merged
Merge reported by: Seif Lotfy
Merged at revision: not available
Proposed branch: lp:~zeitgeist/zeitgeist/datasource-properties-fix
Merge into: lp:zeitgeist/0.1
Diff against target: 164 lines (+65/-14)
2 files modified
_zeitgeist/engine/extensions/datasource_registry.py (+10/-10)
zeitgeist/datamodel.py (+55/-4)
To merge this branch: bzr merge lp:~zeitgeist/zeitgeist/datasource-properties-fix
Reviewer Review Type Date Requested Status
Mikkel Kamstrup Erlandsen Approve
Markus Korn Needs Fixing
Review via email: mp+33775@code.launchpad.net

Description of the change

This is a fix for
https://bugs.edge.launchpad.net/zeitgeist/+bug/513295
pretty straight forward
tested in the Registry Extension Directly (removed code before commit)

To post a comment you must log in.
1554. By Seif Lotfy

revert the is_always method (mistake change)

1555. By Seif Lotfy

fix docstring and revert changes of method to trunk

Revision history for this message
Markus Korn (thekorn) wrote :

So far so good, but this new properties should be used in the existing code, otherwise they are pretty much useless ;)

http://pastebin.ubuntu.com/484135/ has a few bits where the new properties should be used

I guess some properties also need to be writable...

Revision history for this message
Markus Korn (thekorn) :
review: Needs Fixing
1556. By Seif Lotfy

add get/set methods to make datasource properties writable

1557. By Seif Lotfy

add get/set methods to make datasource properties writable

1558. By Seif Lotfy

fix datasource_registery.py to make use of the new properties

1559. By Seif Lotfy

fix datasource_registery.py to make use of DataSource properties

Revision history for this message
Mikkel Kamstrup Erlandsen (kamstrup) wrote :

Looks good. I didn't actually run the unit tests but the diff is clean enough that I don't think regressions are a big danger here.

Nice work!

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file '_zeitgeist/engine/extensions/datasource_registry.py'
2--- _zeitgeist/engine/extensions/datasource_registry.py 2010-08-03 23:25:07 +0000
3+++ _zeitgeist/engine/extensions/datasource_registry.py 2010-08-28 15:16:41 +0000
4@@ -101,7 +101,7 @@
5
6 def _get_data_source(self, unique_id):
7 for datasource in self._registry:
8- if datasource[DataSource.UniqueId] == unique_id:
9+ if datasource.unique_id == unique_id:
10 return datasource
11
12 def pre_insert_event(self, event, sender):
13@@ -109,10 +109,10 @@
14 if sender in bus_names:
15 datasource = self._get_data_source(unique_id)
16 # Update LastSeen time
17- datasource[DataSource.LastSeen] = get_timestamp_for_now()
18+ datasource.last_seen = get_timestamp_for_now()
19 self._write_to_disk()
20 # Check whether the data-source is allowed to insert events
21- if not [DataSource.Enabled]:
22+ if not datasource.enabled:
23 return None
24 return event
25
26@@ -124,7 +124,7 @@
27 if datasource == source:
28 datasource.update_from_data_source(source)
29 self.DataSourceRegistered(datasource)
30- return datasource[DataSource.Enabled]
31+ return datasource.enabled
32 self._registry.append(source)
33 self._write_to_disk()
34 self.DataSourceRegistered(source)
35@@ -139,9 +139,9 @@
36 datasource = self._get_data_source(unique_id)
37 if not datasource:
38 return False
39- if datasource[DataSource.Enabled] != enabled:
40- datasource[DataSource.Enabled] = enabled
41- self.DataSourceEnabled(datasource[DataSource.UniqueId], enabled)
42+ if datasource.enabled != enabled:
43+ datasource.enabled = enabled
44+ self.DataSourceEnabled(datasource.unique_id, enabled)
45 return True
46
47 @dbus.service.method(REGISTRY_DBUS_INTERFACE,
48@@ -248,15 +248,15 @@
49 datasource = self._get_data_source(uid)
50
51 # Update LastSeen time
52- datasource[DataSource.LastSeen] = get_timestamp_for_now()
53+ datasource.last_seen = get_timestamp_for_now()
54 self._write_to_disk()
55
56- strid = "%s (%s)" % (uid, datasource[DataSource.Name])
57+ strid = "%s (%s)" % (uid, datasource.name)
58 log.debug("Client disconnected: %s" % strid)
59 if len(self._running[uid]) == 1:
60 log.debug("No remaining client running: %s" % strid)
61 del self._running[uid]
62- datasource[DataSource.Running] = False
63+ datasource.running = False
64 self.DataSourceDisconnected(datasource)
65 else:
66 self._running[uid].remove(owner)
67
68=== modified file 'zeitgeist/datamodel.py'
69--- zeitgeist/datamodel.py 2010-08-26 18:24:48 +0000
70+++ zeitgeist/datamodel.py 2010-08-28 15:16:41 +0000
71@@ -4,7 +4,7 @@
72 #
73 # Copyright © 2009 Mikkel Kamstrup Erlandsen <mikkel.kamstrup@gmail.com>
74 # Copyright © 2009 Markus Korn <thekorn@gmx.de>
75-# Copyright © 2009 Seif Lotfy <seif@lotfy.com>
76+# Copyright © 2009-2010 Seif Lotfy <seif@lotfy.com>
77 # Copyright © 2009-2010 Siegfried-Angel Gevatter Pujals <rainct@ubuntu.com>
78 #
79 # This program is free software: you can redistribute it and/or modify
80@@ -381,7 +381,7 @@
81
82 def is_always(self):
83 """
84- Returns True if this time range goes from timestamp 0 (January 1, 1970)
85+ Returns True if this time range goes from timestamp 0 (January 1, 1970)
86 -or lower- to the most distant future.
87 """
88 return self.begin <= 0 and self.end >= TimeRange._max_stamp
89@@ -483,8 +483,8 @@
90 self = Subject()
91 for key, value in values.iteritems():
92 if not key in ("uri", "interpretation", "manifestation", "origin",
93- "mimetype", "text", "storage"):
94- raise ValueError("Subject parameter '%s' is not supported" % key)
95+ "mimetype", "text", "storage"):
96+ raise ValueError("Subject parameter '%s' is not supported" %key)
97 setattr(self, key, value)
98 return self
99
100@@ -906,6 +906,55 @@
101 LastSeen, # last time the data-source did something (connected,
102 # inserted events, disconnected).
103 Enabled) = range(7)
104+
105+ def get_unique_id(self):
106+ return self[self.UniqueId]
107+
108+ def set_unique_id(self, value):
109+ self[self.UniqueId] = value
110+
111+ def get_name(self):
112+ return self[self.Name]
113+
114+ def set_name(self, value):
115+ self[self.Name] = value
116+
117+ def get_description(self):
118+ return self[self.Description]
119+
120+ def set_description(self, value):
121+ self[self.Description] = value
122+
123+ def get_running(self):
124+ return self[self.Running]
125+
126+ def set_running(self,value):
127+ self[self.Running] = value
128+
129+ def get_running(self):
130+ return self[self.Running]
131+
132+ def running(self, value):
133+ self[self.Running] = value
134+
135+ def get_last_seen(self):
136+ return self[self.LastSeen]
137+
138+ def set_last_seen(self, value):
139+ self[self.LastSeen] = value
140+
141+ def get_enabled(self):
142+ return self[self.Enabled]
143+
144+ def set_enabled(self, value):
145+ self[self.Enabled] = value
146+
147+ unique_id = property(get_unique_id, set_unique_id)
148+ name = property(get_name, set_name)
149+ description = property(get_description, set_description)
150+ running = property(get_running, set_running)
151+ last_seen = property(get_last_seen, set_last_seen)
152+ enabled = property(get_enabled, set_enabled)
153
154 def __init__(self, unique_id, name, description, templates, running=True,
155 last_seen=None, enabled=True):
156@@ -930,6 +979,8 @@
157 def __repr__(self):
158 return "%s: %s (%s)" % (self.__class__.__name__, self[self.UniqueId],
159 self[self.Name])
160+
161+
162
163 NULL_EVENT = ([], [], [])
164 """Minimal Event representation, a tuple containing three empty lists.