From 5243c95fb9e250c2b3efb1815b4bf3b1b25c83dc Mon Sep 17 00:00:00 2001 From: Ignacio Vaggione Date: Thu, 3 Jul 2014 13:48:50 -0300 Subject: [PATCH 1/3] Added optional arg to delete stale --- .../commands/delete_empty_subscriptions.py | 24 +++++++++++++++---- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/subscription/management/commands/delete_empty_subscriptions.py b/subscription/management/commands/delete_empty_subscriptions.py index 0f10c64..f2478fc 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)) \ No newline at end of file From 31eed0629e5969b26a67445cf5c2dc475c9c0836 Mon Sep 17 00:00:00 2001 From: Ignacio Vaggione Date: Thu, 3 Jul 2014 13:54:13 -0300 Subject: [PATCH 2/3] PEP8 --- subscription/management/commands/delete_empty_subscriptions.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/subscription/management/commands/delete_empty_subscriptions.py b/subscription/management/commands/delete_empty_subscriptions.py index f2478fc..19b8924 100644 --- a/subscription/management/commands/delete_empty_subscriptions.py +++ b/subscription/management/commands/delete_empty_subscriptions.py @@ -58,4 +58,4 @@ def handle(self, *args, **options): 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)) \ No newline at end of file + stale_subscriptions_counter, deleted_stale_counter)) From b8857ebc666e03ccc0d825908832301b6b020bf5 Mon Sep 17 00:00:00 2001 From: Ignacio Vaggione Date: Wed, 15 Apr 2015 18:51:02 -0300 Subject: [PATCH 3/3] Support for non cluster messages --- subscription/cluster.py | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) 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 +