diff --git a/gracedb/management/commands/scrub_mdc_events.py b/gracedb/management/commands/scrub_mdc_events.py index 2c5bee6dcd30f8f602e62d4dc63d57be999d32fc..02fe22ade2fad10da728765bfd25fc275bdf0f0f 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()