diff --git a/subscription/cluster.py b/subscription/cluster.py index ae83182..b45a4fc 100644 --- a/subscription/cluster.py +++ b/subscription/cluster.py @@ -48,8 +48,16 @@ def cluster_specs(specs): def render_clusters(specs): for cluster, items in specs.items(): items = sorted(items, key=lambda x: x['published'], reverse=True) - formatting = {} - formatting['actor'] = render_actors([i['actor'] for i in items if i['actor'].get('displayName')]) - formatting['target'] = items[0]['target']['displayName'] - verbage = settings.SUBSCRIPTION_VERB_RENDER_MAP[items[0]['verb']] % formatting - yield datetime.datetime.fromtimestamp(max(i["published"] for i in items)), verbage + if cluster[2] in settings.NON_CLUSTER_SUBSCRIPTION_VERBS: + for item in items: + formatting = {'actor': item['actor']['displayName'] if item['actor'].get('displayName') else '', + 'target': item['target']['displayName']} + verbage = settings.SUBSCRIPTION_VERB_RENDER_MAP[item['verb']] % formatting + yield datetime.datetime.fromtimestamp(item["published"]), verbage + else: + formatting = {} + formatting['actor'] = render_actors([i['actor'] for i in items if i['actor'].get('displayName')]) + formatting['target'] = items[0]['target']['displayName'] + verbage = settings.SUBSCRIPTION_VERB_RENDER_MAP[items[0]['verb']] % formatting + yield datetime.datetime.fromtimestamp(max(i["published"] for i in items)), verbage + diff --git a/subscription/management/commands/delete_empty_subscriptions.py b/subscription/management/commands/delete_empty_subscriptions.py index 0f10c64..19b8924 100644 --- a/subscription/management/commands/delete_empty_subscriptions.py +++ b/subscription/management/commands/delete_empty_subscriptions.py @@ -1,4 +1,4 @@ -from django.core.management.base import BaseCommand +from django.core.management.base import BaseCommand, make_option from subscription.models import Subscription @@ -28,10 +28,20 @@ def queryset_iterator(queryset, chunksize=1000): class Command(BaseCommand): args = "" help = "Deletes all subscriptions with None as content_object" + option_list = BaseCommand.option_list + ( + make_option('--ds', + action='store_true', + dest='delete_stale', + default=False, + help='Delete stale subscriptions also'), + ) def handle(self, *args, **options): + delete_stale = options.get('delete_stale') deleted_subscriptions_counter = 0 total_subscriptions_counter = 0 + stale_subscriptions_counter = 0 + deleted_stale_counter = 0 subscription_iterator = queryset_iterator(Subscription.objects.all()) for subscription in subscription_iterator: total_subscriptions_counter += 1 @@ -40,8 +50,12 @@ def handle(self, *args, **options): subscription.delete() deleted_subscriptions_counter += 1 except AttributeError: - subscription.delete() - deleted_subscriptions_counter += 1 + stale_subscriptions_counter += 1 + if delete_stale: + subscription.delete() + deleted_stale_counter += 1 - self.stdout.write('Total subscriptions: %s\nSuccessfully deleted subscriptions: %s\n' % - (total_subscriptions_counter, deleted_subscriptions_counter)) + self.stdout.write('Total subscriptions: %s\nSuccessfully deleted subscriptions: %s\n' + 'Stale subscriptions: %s\nSuccessfully deleted stale subscriptions: %s\n' % + (total_subscriptions_counter, deleted_subscriptions_counter, + stale_subscriptions_counter, deleted_stale_counter))