From 1ee756130945cf5e60955945d01a6bb018620cac Mon Sep 17 00:00:00 2001
From: Ernesto Rico-Schmidt <ernesto.rico-schmidt@evolaris.net>
Date: Wed, 3 Aug 2016 21:17:26 +0200
Subject: added management commands to chech and remove stale automation_ids


diff --git a/program/management/commands/check_automation_ids.py b/program/management/commands/check_automation_ids.py
new file mode 100644
index 0000000..be57ae2
--- /dev/null
+++ b/program/management/commands/check_automation_ids.py
@@ -0,0 +1,35 @@
+import json
+from os.path import join
+
+from django.conf import settings
+from django.core.management.base import NoArgsCommand
+
+from program.models import ProgramSlot
+
+
+class Command(NoArgsCommand):
+    help = 'checks the automation_ids used by program slots against the exported'
+
+    def handle_noargs(self, **options):
+        cache_dir = getattr(settings, 'AUTOMATION_CACHE_DIR', 'cache')
+        cached_shows = join(cache_dir, 'shows.json')
+        with open(cached_shows) as shows_json:
+            shows = json.loads(shows_json.read())['shows']
+
+            automation_ids = []
+            for show in shows:
+                automation_ids.append(show['id'])
+            automation_ids.sort()
+
+            automation_ids2 = []
+            for programslot in ProgramSlot.objects.filter(automation_id__isnull=False):
+                automation_ids2.append(int(programslot.automation_id))
+            automation_ids2.sort()
+
+            for automation_id in automation_ids:
+                if automation_id not in automation_ids2:
+                    print '+', automation_id
+
+            for automation_id in automation_ids2:
+                if automation_id not in automation_ids:
+                    print '-', automation_id
diff --git a/program/management/commands/remove_automation_id.py b/program/management/commands/remove_automation_id.py
new file mode 100644
index 0000000..4fb8ee7
--- /dev/null
+++ b/program/management/commands/remove_automation_id.py
@@ -0,0 +1,16 @@
+from django.core.management.base import BaseCommand, CommandError
+
+from program.models import ProgramSlot
+
+
+class Command(BaseCommand):
+    help = 'removes the automation_id from the program slots'
+    args = '<automation_id>'
+
+    def handle(self, *args, **options):
+        if len(args) == 1:
+            automation_id = args[0]
+        else:
+            raise CommandError('you must provide the automation_id')
+
+        ProgramSlot.objects.filter(automation_id=automation_id).update(automation_id=None)
-- 
cgit v0.10.2