[Zeitgeist] [Merge] lp:~zeitgeist/zeitgeist/fix772041 into lp:zeitgeist

2011-05-04 Thread noreply
The proposal to merge lp:~zeitgeist/zeitgeist/fix772041 into lp:zeitgeist has 
been updated.

Status: Approved => Merged

For more details, see:
https://code.launchpad.net/~zeitgeist/zeitgeist/fix772041/+merge/59810
-- 
https://code.launchpad.net/~zeitgeist/zeitgeist/fix772041/+merge/59810
Your team Zeitgeist Framework Team is subscribed to branch 
lp:~zeitgeist/zeitgeist/fix772041.

___
Mailing list: https://launchpad.net/~zeitgeist
Post to : zeitgeist@lists.launchpad.net
Unsubscribe : https://launchpad.net/~zeitgeist
More help   : https://help.launchpad.net/ListHelp


Re: [Zeitgeist] [Merge] lp:~zeitgeist/zeitgeist/fix772041 into lp:zeitgeist

2011-05-04 Thread Markus Korn
Review: Approve
14:55 < thekorn> RainCT: ACK from me, it does not look nice, but it has one 
adv. over 
 the old approach, it is descriptive, you see which query 
belongs to 
 which resulttype at the first glance
14:56 -!- m4n1sh [~manish@ubuntu/member/m4n1sh] has joined #zeitgeist
14:57 < thekorn> RainCT: but IMHO you should either use 'boo' or "boo" for 
quotes, not a 
 mixture of both
14:57 < thekorn> and I think we are using "boo" in the most places

-- 
https://code.launchpad.net/~zeitgeist/zeitgeist/fix772041/+merge/59810
Your team Zeitgeist Framework Team is subscribed to branch 
lp:~zeitgeist/zeitgeist/fix772041.

___
Mailing list: https://launchpad.net/~zeitgeist
Post to : zeitgeist@lists.launchpad.net
Unsubscribe : https://launchpad.net/~zeitgeist
More help   : https://help.launchpad.net/ListHelp


[Zeitgeist] [Merge] lp:~zeitgeist/zeitgeist/fix772041 into lp:zeitgeist

2011-05-03 Thread Seif Lotfy
The proposal to merge lp:~zeitgeist/zeitgeist/fix772041 into lp:zeitgeist has 
been updated.

Status: Needs review => Approved

For more details, see:
https://code.launchpad.net/~zeitgeist/zeitgeist/fix772041/+merge/59810
-- 
https://code.launchpad.net/~zeitgeist/zeitgeist/fix772041/+merge/59810
Your team Zeitgeist Framework Team is requested to review the proposed merge of 
lp:~zeitgeist/zeitgeist/fix772041 into lp:zeitgeist.

___
Mailing list: https://launchpad.net/~zeitgeist
Post to : zeitgeist@lists.launchpad.net
Unsubscribe : https://launchpad.net/~zeitgeist
More help   : https://help.launchpad.net/ListHelp


Re: [Zeitgeist] [Merge] lp:~zeitgeist/zeitgeist/fix772041 into lp:zeitgeist

2011-05-03 Thread Seif Lotfy
Although a bit ugly it actually seems to be the best solution we have. I am 
bothered by the if else statements but I cant find an *performant* way around 
it...
-- 
https://code.launchpad.net/~zeitgeist/zeitgeist/fix772041/+merge/59810
Your team Zeitgeist Framework Team is requested to review the proposed merge of 
lp:~zeitgeist/zeitgeist/fix772041 into lp:zeitgeist.

___
Mailing list: https://launchpad.net/~zeitgeist
Post to : zeitgeist@lists.launchpad.net
Unsubscribe : https://launchpad.net/~zeitgeist
More help   : https://help.launchpad.net/ListHelp


[Zeitgeist] [Merge] lp:~zeitgeist/zeitgeist/fix772041 into lp:zeitgeist

2011-05-03 Thread Siegfried Gevatter
Siegfried Gevatter has proposed merging lp:~zeitgeist/zeitgeist/fix772041 into 
lp:zeitgeist.

Requested reviews:
  Zeitgeist Framework Team (zeitgeist)
Related bugs:
  Bug #772041 in Zeitgeist Framework: "Timestamp isn't considered when choosing 
events by popularity"
  https://bugs.launchpad.net/zeitgeist/+bug/772041

For more details, see:
https://code.launchpad.net/~zeitgeist/zeitgeist/fix772041/+merge/59810

Here we go!

The elif's could be simplified out in exchange of some name parsing code in 
_zeitgeist/engine/datamodel.py, but it's probably not worth it since it'd just 
complicate it more.

Once this is merged I'll follow up with the code for sorting by event_origin 
and current_uri.
-- 
https://code.launchpad.net/~zeitgeist/zeitgeist/fix772041/+merge/59810
Your team Zeitgeist Framework Team is requested to review the proposed merge of 
lp:~zeitgeist/zeitgeist/fix772041 into lp:zeitgeist.
=== modified file '_zeitgeist/engine/main.py'
--- _zeitgeist/engine/main.py	2011-04-27 18:56:34 +
+++ _zeitgeist/engine/main.py	2011-05-03 17:57:25 +
@@ -447,43 +447,84 @@
 		else:
 			raise NotImplementedError, "Unsupported return_mode."
 		
-		if order == ResultType.OldestActor:
-			sql += """
+		wheresql = " WHERE %s" % where.sql if where else ""
+		
+		def group_and_sort(field, wheresql, time_asc=False, count_asc=None,
+			aggregation_type='max'):
+			
+			args = {
+'field': field,
+'aggregation_type': aggregation_type,
+'where_sql': wheresql,
+'time_sorting': 'ASC' if time_asc else 'DESC',
+'aggregation_sql': '',
+'order_sql': '',
+			}
+			
+			if count_asc is not None:
+args['aggregation_sql'] = ', COUNT(%s) AS num_events' % \
+	field
+args['order_sql'] = 'num_events %s,' % \
+	('ASC' if count_asc else 'DESC')
+			
+			return """
 NATURAL JOIN (
-	SELECT actor, min(timestamp) AS timestamp
-	FROM event_view %s
-	GROUP BY actor)
-""" % ("WHERE " + where.sql if where.sql else "")
-		elif where:
-			sql += " WHERE " + where.sql
+	SELECT %(field)s,
+		%(aggregation_type)s(timestamp) AS timestamp
+		%(aggregation_sql)s
+	FROM event_view %(where_sql)s
+	GROUP BY %(field)s)
+GROUP BY %(field)s
+ORDER BY %(order_sql)s timestamp %(time_sorting)s
+""" % args
 		
-		sql += (
-			" ORDER BY timestamp DESC",
-			" ORDER BY timestamp ASC",
-			# thekorn: please note, event.subj_id == uri.id, as in
-			# the subj_id points directly to an entry in the uri table,
-			# so we are in fact grouping by subj_uris here
-			" GROUP BY subj_id ORDER BY timestamp DESC",
-			" GROUP BY subj_id ORDER BY timestamp ASC",
-			" GROUP BY subj_id ORDER BY COUNT(subj_id) DESC, timestamp DESC",
-			" GROUP BY subj_id ORDER BY COUNT(subj_id) ASC, timestamp ASC",
-			" GROUP BY actor ORDER BY COUNT(actor) DESC, timestamp DESC", 
-			" GROUP BY actor ORDER BY COUNT(actor) ASC, timestamp ASC",
-			" GROUP BY actor ORDER BY timestamp DESC",
-			" GROUP BY actor ORDER BY timestamp ASC",
-			" 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",
-			" GROUP BY actor ORDER BY timestamp ASC",
-			" GROUP BY subj_interpretation ORDER BY timestamp DESC",
-			" GROUP BY subj_interpretation ORDER BY timestamp ASC",
-			" GROUP BY subj_interpretation ORDER BY COUNT(subj_interpretation) DESC",
-			" GROUP BY subj_interpretation ORDER BY COUNT(subj_interpretation) ASC",
-			" GROUP BY subj_mimetype ORDER BY timestamp DESC",
-			" GROUP BY subj_mimetype ORDER BY timestamp ASC",
-			" GROUP BY subj_mimetype ORDER BY COUNT(subj_mimetype) DESC",
-			" GROUP BY subj_mimetype ORDER BY COUNT(subj_mimetype) ASC")[order]
+		if order == ResultType.MostRecentEvents:
+			sql += wheresql + " ORDER BY timestamp DESC"
+		elif order == ResultType.LeastRecentEvents:
+			sql += wheresql + " ORDER BY timestamp ASC"
+		elif order == ResultType.MostRecentSubjects:
+			# Remember, event.subj_id identifies the subject URI
+			sql += group_and_sort('subj_id', wheresql, time_asc=False)
+		elif order == ResultType.LeastRecentSubjects:
+			sql += group_and_sort('subj_id', wheresql, time_asc=True)
+		elif order == ResultType.MostPopularSubjects:
+			sql += group_and_sort('subj_id', wheresql, time_asc=False, count_asc=False)
+		elif order == ResultType.LeastPopularSubjects:
+			sql += group_and_sort('subj_id', wheresql, time_asc=True, count_asc=True)
+		elif order == ResultType.MostRecentActor:
+			sql += group_and_sort('actor', wheresql, time_asc=False)
+		elif order == ResultType.LeastRecentActor:
+			sql += group_and_sort('actor', wheresql, time_asc=True)
+		elif order == ResultType.MostPopularActor:
+			sql += group_and_sort('actor', wheresql, time_asc=False, count_asc=False)
+		elif order == ResultType.LeastPopularActor:
+			sql += group_and_sort('actor', wheresql, time_asc=True, count