aggregators Package

base Module

class stream_framework.aggregators.base.BaseAggregator(aggregated_activity_class=None, activity_class=None)[source]

Bases: object

Aggregators implement the combining of multiple activities into aggregated activities.

The two most important methods are aggregate and merge

Aggregate takes a list of activities and turns it into a list of aggregated activities

Merge takes two lists of aggregated activities and returns a list of new and changed aggregated activities

activity_class

alias of Activity

aggregate(activities)[source]
Parameters:activties – A list of activities
Returns list:A list of aggregated activities

Runs the group activities (using get group) Ranks them using the giving ranking function And returns the sorted activities

Example

aggregator = ModulusAggregator()
activities = [Activity(1), Activity(2)]
aggregated_activities = aggregator.aggregate(activities)
aggregated_activity_class

alias of AggregatedActivity

get_group(activity)[source]

Returns a group to stick this activity in

group_activities(activities)[source]

Groups the activities based on their group Found by running get_group(actvity on them)

merge(aggregated, activities)[source]
Parameters:
  • aggregated – A list of aggregated activities
  • activities – A list of the new activities
Returns tuple:

Returns new, changed

Merges two lists of aggregated activities and returns the new aggregated activities and a from, to mapping of the changed aggregated activities

Example

aggregator = ModulusAggregator()
activities = [Activity(1), Activity(2)]
aggregated_activities = aggregator.aggregate(activities)
activities = [Activity(3), Activity(4)]
new, changed = aggregator.merge(aggregated_activities, activities)
for activity in new:
    print activity

for from, to in changed:
    print 'changed from %s to %s' % (from, to)
rank(aggregated_activities)[source]

The ranking logic, for sorting aggregated activities

class stream_framework.aggregators.base.NotificationAggregator(aggregated_activity_class=None, activity_class=None)[source]

Bases: stream_framework.aggregators.base.RecentRankMixin, stream_framework.aggregators.base.BaseAggregator

Aggregates based on the same verb, object and day

get_group(activity)[source]

Returns a group based on the verb, object and day

class stream_framework.aggregators.base.RecentRankMixin[source]

Bases: object

Most recently updated aggregated activities are ranked first.

rank(aggregated_activities)[source]

The ranking logic, for sorting aggregated activities

class stream_framework.aggregators.base.RecentVerbAggregator(aggregated_activity_class=None, activity_class=None)[source]

Bases: stream_framework.aggregators.base.RecentRankMixin, stream_framework.aggregators.base.BaseAggregator

Aggregates based on the same verb and same time period

get_group(activity)[source]

Returns a group based on the day and verb