Merge branch 'bug_718_timer_sanitycheck_robustness'
authorghost <andreas.monzner@multimedia-labs.de>
Mon, 14 Mar 2011 09:36:47 +0000 (10:36 +0100)
committerghost <andreas.monzner@multimedia-labs.de>
Mon, 14 Mar 2011 09:36:47 +0000 (10:36 +0100)
RecordTimer.py
lib/python/Screens/InfoBarGenerics.py
lib/python/Screens/TimerEdit.py

index 1cb7eb3b02442b1dd616ec89906ec88446ee80df..d8bed8f0577b012c7f5cdc7302ab67e264ae1574 100755 (executable)
@@ -319,16 +319,14 @@ class RecordTimerEntry(timer.TimerEntry, object):
                timersanitycheck = TimerSanityCheck(NavigationInstance.instance.RecordTimer.timer_list, dummyentry)
                if not timersanitycheck.check():
                        simulTimerList = timersanitycheck.getSimulTimerList()
-                       new_end = simulTimerList[1].begin
-                       del simulTimerList
-                       new_end -= 30                           # 30 Sekunden Prepare-Zeit lassen
-               del dummyentry
+                       if simulTimerList is not None and len(simulTimerList) > 1:
+                               new_end = simulTimerList[1].begin
+                               new_end -= 30                           # 30 Sekunden Prepare-Zeit lassen
                if new_end <= time():
                        return False
                self.end = new_end
                return True
-       
-       
+
        def sendStandbyNotification(self, answer):
                if answer:
                        Notifications.AddNotification(Screens.Standby.Standby)
index 4f6eafca0c752f17ca8d68f8dff53512dd96a42b..0bb7fd37c3230b9868f8f819926a17225e2edf2d 100644 (file)
@@ -1524,28 +1524,30 @@ class InfoBarInstantRecord:
 
                recording = RecordTimerEntry(serviceref, begin, end, name, description, eventid, dirname = preferredInstantRecordPath())
                recording.dontSave = True
-               
+
                if event is None or limitEvent == False:
                        recording.autoincrease = True
-                       if recording.setAutoincreaseEnd():
-                               self.session.nav.RecordTimer.record(recording)
-                               self.recording.append(recording)
+                       recording.setAutoincreaseEnd()
+
+               simulTimerList = self.session.nav.RecordTimer.record(recording)
+
+               if simulTimerList is None:      # no conflict
+                       self.recording.append(recording)
                else:
-                               simulTimerList = self.session.nav.RecordTimer.record(recording)
-                               if simulTimerList is not None:  # conflict with other recording
-                                       name = simulTimerList[1].name
-                                       name_date = ' '.join((name, strftime('%c', localtime(simulTimerList[1].begin))))
-                                       print "[TIMER] conflicts with", name_date
-                                       recording.autoincrease = True   # start with max available length, then increment
-                                       if recording.setAutoincreaseEnd():
-                                               self.session.nav.RecordTimer.record(recording)
-                                               self.recording.append(recording)
-                                               self.session.open(MessageBox, _("Record time limited due to conflicting timer %s") % name_date, MessageBox.TYPE_INFO)
-                                       else:
-                                               self.session.open(MessageBox, _("Couldn't record due to conflicting timer %s") % name, MessageBox.TYPE_INFO)
-                                       recording.autoincrease = False
-                               else:
+                       if len(simulTimerList) > 1: # with other recording
+                               name = simulTimerList[1].name
+                               name_date = ' '.join((name, strftime('%c', localtime(simulTimerList[1].begin))))
+                               print "[TIMER] conflicts with", name_date
+                               recording.autoincrease = True   # start with max available length, then increment
+                               if recording.setAutoincreaseEnd():
+                                       self.session.nav.RecordTimer.record(recording)
                                        self.recording.append(recording)
+                                       self.session.open(MessageBox, _("Record time limited due to conflicting timer %s") % name_date, MessageBox.TYPE_INFO)
+                               else:
+                                       self.session.open(MessageBox, _("Couldn't record due to conflicting timer %s") % name, MessageBox.TYPE_INFO)
+                       else:
+                               self.session.open(MessageBox, _("Couldn't record due to invalid service %s") % serviceref, MessageBox.TYPE_INFO)
+                       recording.autoincrease = False
 
        def isInstantRecordRunning(self):
                print "self.recording:", self.recording
index bf60496fbe5399652e89ecc1b03c01521c9b81b5..572f14b5536fe6c97e2962682ba9d05a58a81847 100644 (file)
@@ -88,7 +88,9 @@ class TimerEditList(Screen):
                                if not timersanitycheck.check():
                                        t.disable()
                                        print "Sanity check failed"
-                                       self.session.openWithCallback(self.finishedEdit, TimerSanityConflict, timersanitycheck.getSimulTimerList())
+                                       simulTimerList = timersanitycheck.getSimulTimerList()
+                                       if simulTimerList is not None:
+                                               self.session.openWithCallback(self.finishedEdit, TimerSanityConflict, simulTimerList)
                                else:
                                        print "Sanity check passed"
                                        if timersanitycheck.doubleCheck():