From 7172f633feedebcf379b75166736425ef6b8896a Mon Sep 17 00:00:00 2001
From: Branson Stephens <branson.stephens@ligo.org>
Date: Mon, 14 Sep 2015 17:05:27 -0500
Subject: [PATCH] Fixed scrub_mdc_events management command to remove
 associated GroupObjectPermissions.

---
 .../management/commands/scrub_mdc_events.py   | 33 ++++++++++++++++++-
 1 file changed, 32 insertions(+), 1 deletion(-)

diff --git a/gracedb/management/commands/scrub_mdc_events.py b/gracedb/management/commands/scrub_mdc_events.py
index 2c5bee6dc..02fe22ade 100644
--- a/gracedb/management/commands/scrub_mdc_events.py
+++ b/gracedb/management/commands/scrub_mdc_events.py
@@ -1,6 +1,9 @@
 import os, shutil
 from django.core.management.base import NoArgsCommand
 from gracedb.models import Event, Search, Group
+from gracedb.models import CoincInspiralEvent, MultiBurstEvent
+from guardian.models import GroupObjectPermission
+from django.contrib.contenttypes.models import ContentType
 
 class Command(NoArgsCommand):
     help = "I kill the MDC events."
@@ -31,7 +34,35 @@ class Command(NoArgsCommand):
                 print 'Problem! Have not deleted datadir %s' % datadir
                 exit(1)
 
+            # We need to delete the relevant GroupObjectPermission objects as well.
+            # Any CoincInspiralEvent for this event? If so, delete their associated 
+            # GroupObjectPermissions.
+            try:
+                coinc_event = CoincInspiralEvent.objects.get(id=e.id)
+                ctype = ContentType.objects.get(app_label='gracedb', model='coincinspiralevent')
+                gops = GroupObjectPermission.objects.filter(object_pk=e.id, content_type=ctype)
+                for g in gops:
+                    g.delete() 
+            except:
+                pass
+
+            # Any MultiBurstEvent for this event? If so, delete their associated 
+            # GroupObjectPermissions.
+            try:
+                coinc_event = MultiBurstEvent.objects.get(id=e.id)
+                ctype = ContentType.objects.get(app_label='gracedb', model='multiburstevent')
+                gops = GroupObjectPermission.objects.filter(object_pk=e.id, content_type=ctype)
+                for g in gops:
+                    g.delete() 
+            except:
+                pass
+
+            # Finally delete the GroupObjectPermissions on the Event itself.
+            ctype = ContentType.objects.get(app_label='gracedb', model='event')
+            gops = GroupObjectPermission.objects.filter(object_pk=e.id, content_type=ctype)
+            for g in gops:
+                g.delete() 
+
             # Now, say goodbye to the database entry
-            # Does this delete annotations too? That's something to test.
             e.delete()
 
-- 
GitLab