diff --git a/program/management/commands/update_programslots.py b/program/management/commands/update_programslots.py
index f0cc59ddd228de94e6715ed6a425bba64410f2a7..6f7ec90a5e38963cc810f622e92f06f197a65162 100644
--- a/program/management/commands/update_programslots.py
+++ b/program/management/commands/update_programslots.py
@@ -2,23 +2,14 @@ from django.core.management.base import NoArgsCommand
 
 from program.models import ProgramSlot
 
-from datetime import date
+from datetime import datetime
 
 
 class Command(NoArgsCommand):
     help = 'update programslots by setting is_active'
 
     def handle_noargs(self, **options):
-        activated = 0
-        deactivated = 0
-
-        for programslot in ProgramSlot.objects.all():
-            programslot.is_active = programslot.until > date.today()
-            programslot.save()
-
-            if programslot.is_active:
-                activated += 1
-            else:
-                deactivated += 1
+        deactivated = ProgramSlot.objects.filter(until__lt=datetime.now()).update(is_active=False)
+        activated = ProgramSlot.objects.filter(until__gt=datetime.now()).update(is_active=True)
 
         print "%s program slots activated, %s program slots de-activated" % (activated, deactivated)
diff --git a/program/management/commands/update_shows.py b/program/management/commands/update_shows.py
index a337f21c3dafbd74bf5ca8e297f9cb228a37113b..0dafb8837cb47a44bb6aff5f75e8398cc64c1f28 100644
--- a/program/management/commands/update_shows.py
+++ b/program/management/commands/update_shows.py
@@ -2,28 +2,14 @@ from django.core.management.base import NoArgsCommand
 
 from program.models import Show
 
+from datetime import datetime
+
 
 class Command(NoArgsCommand):
     help = 'update shows by setting is_active'
 
     def handle_noargs(self, **options):
-        activated = 0
-        deactivated = 0
-
-        for show in Show.objects.exclude(pk=1):
-            for programslot in show.programslots.all():
-                active_programslots = 0
-                if programslot.is_active:
-                    active_programslots += 1
-                else:
-                    active_programslots -= 1
-
-            show.is_active = active_programslots > 0
-            show.save()
-
-            if show.is_active:
-                activated += 1
-            else:
-                deactivated += 1
+        deactivated = Show.objects.exclude(id=1).filter(programslots__until__lt=datetime.now()).update(is_active=False)
+        activated = Show.objects.exclude(id=1).filter(programslots__until__gt=datetime.now()).distinct().update(is_active=True)
 
         print "%s shows activated, %s shows de-activated" % (activated, deactivated)