Seif Lotfy has proposed merging lp:~zeitgeist/zeitgeist/fix-646124 into
lp:zeitgeist.
Requested reviews:
Zeitgeist Framework Team (zeitgeist)
Related bugs:
#646124 Wrong understanding of the LeastRecentActors
https://bugs.launchpad.net/bugs/646124
Basically all I did is replace LeastRecentActor with a new OldestActor and
ported LeastRecentActor to our new understanding discussed in bug #646124
--
https://code.launchpad.net/~zeitgeist/zeitgeist/fix-646124/+merge/36628
Your team Zeitgeist Framework Team is requested to review the proposed merge of
lp:~zeitgeist/zeitgeist/fix-646124 into lp:zeitgeist.
=== modified file '_zeitgeist/engine/main.py'
--- _zeitgeist/engine/main.py 2010-09-24 17:02:50 +
+++ _zeitgeist/engine/main.py 2010-09-25 11:45:54 +
@@ -343,7 +343,7 @@
else:
raise NotImplementedError, Unsupported return_mode.
- if order == ResultType.LeastRecentActor:
+ if order == ResultType.OldestActor:
sql +=
NATURAL JOIN (
SELECT actor, min(timestamp) AS timestamp
@@ -366,7 +366,8 @@
GROUP BY subj_origin ORDER BY timestamp DESC,
GROUP BY subj_origin ORDER BY timestamp ASC,
GROUP BY subj_origin ORDER BY COUNT(subj_origin) DESC, timestamp DESC,
- GROUP BY subj_origin ORDER BY COUNT(subj_origin) ASC, timestamp ASC)[order]
+ GROUP BY subj_origin ORDER BY COUNT(subj_origin) ASC, timestamp ASC,
+ GROUP BY actor ORDER BY timestamp ASC)[order]
if max_events 0:
sql += LIMIT %d % max_events
=== modified file 'test/engine-test.py'
--- test/engine-test.py 2010-09-24 17:02:50 +
+++ test/engine-test.py 2010-09-25 11:45:54 +
@@ -596,6 +596,15 @@
events = self.engine.find_events(
TimeRange(105,107), [], StorageState.Any, 0, ResultType.MostRecentActor)
self.assertEquals([e[0][1] for e in events], [107, 105])
+
+ def testResultTypesOldestActor(self):
+ import_events(test/data/twenty_events.js, self.engine)
+
+ events = self.engine.find_events(
+ TimeRange.always(),
+ [Event.new_for_values(subject_manifestation=stfu:File)],
+ StorageState.Any, 0, ResultType.OldestActor)
+ self.assertEquals([e[0][1] for e in events], [100, 101, 105])
def testResultTypesLeastRecentActor(self):
import_events(test/data/twenty_events.js, self.engine)
@@ -604,11 +613,9 @@
TimeRange.always(),
[Event.new_for_values(subject_manifestation=stfu:File)],
StorageState.Any, 0, ResultType.LeastRecentActor)
- self.assertEquals([e[0][1] for e in events], [100, 101, 105])
- # LeastRecentActor should really be: 100, 101, 105. See bug #646124.
- # This will be renamed to something like OldestActor.
+ self.assertEquals([e[0][1] for e in events], ['105', '114', '119'])
- def testResultTypesLeastRecentActorBug641968(self):
+ def testResultTypesOldestActorBug641968(self):
events = [
Event.new_for_values(timestamp=1, actor=boo, subject_uri=tmp/boo),
Event.new_for_values(timestamp=2, actor=boo, subject_uri=home/boo),
@@ -619,20 +626,20 @@
# Get the least recent actors
ids = self.engine.find_eventids(TimeRange.always(),
- [], StorageState.Any, 0, ResultType.LeastRecentActor)
+ [], StorageState.Any, 0, ResultType.OldestActor)
self.assertEquals(ids, [1, 3, 4])
# Get the least recent actors for home/boo
template = Event.new_for_values(subject_uri=home/boo)
ids = self.engine.find_eventids(TimeRange.always(),
- [template], StorageState.Any, 0, ResultType.LeastRecentActor)
+ [template], StorageState.Any, 0, ResultType.OldestActor)
self.assertEquals(ids, [2])
# Let's also try the same with MostRecentActor... Although there
# should be no problem here.
template = Event.new_for_values(subject_uri=home/boo)
ids = self.engine.find_eventids(TimeRange.always(),
- [template], StorageState.Any, 0, ResultType.LeastRecentActor)
+ [template], StorageState.Any, 0, ResultType.OldestActor)
self.assertEquals(ids, [2])
def testResultTypesMostPopularOrigin(self):
=== modified file 'zeitgeist/datamodel.py'
--- zeitgeist/datamodel.py 2010-08-28 15:14:42 +
+++ zeitgeist/datamodel.py 2010-09-25 11:45:54 +
@@ -1029,14 +1029,15 @@
ordered by the popularity of the actor))
LeastPopularActor = enum_factory((The last event of each different actor,
ordered ascendingly by the popularity of the actor))
- MostRecentActor = enum_factory((The last event of each different actor))
- LeastRecentActor = enum_factory((The first event of each different actor))
+ MostRecentActor = enum_factory((The most recent event of each different actor))
+ LeastRecentActor = enum_factory((The least recent event of each different actor))
MostRecentOrigin = enum_factory((The last event of each different origin))
LeastRecentOrigin = enum_factory((The first event of each different origin))
MostPopularOrigin = enum_factory((The last event of each different origin,
ordered by the popularity of the origins))
LeastPopularOrigin = enum_factory((The last event of each different origin