Author: duncan
Date: Tue Mar  4 16:57:50 2008
New Revision: 10463

Log:
Removed xml version of scheduled recordings from recordserver
Now using a pickled version and a pickled list of favourites
This is much faster when adding or updating a favourite


Modified:
   branches/rel-1/freevo/src/helpers/recordserver.py
   branches/rel-1/freevo/src/tv/epg_types.py
   branches/rel-1/freevo/src/tv/favoriteitem.py
   branches/rel-1/freevo/src/tv/programitem.py
   branches/rel-1/freevo/src/tv/record_client.py
   branches/rel-1/freevo/src/tv/record_types.py
   branches/rel-1/freevo/src/tv/tvguide.py
   branches/rel-1/freevo/src/www/htdocs/config.rpy
   branches/rel-1/freevo/src/www/htdocs/favorites.rpy
   branches/rel-1/freevo/src/www/htdocs/genre.rpy
   branches/rel-1/freevo/src/www/htdocs/guide.rpy
   branches/rel-1/freevo/src/www/htdocs/guidechannel.rpy
   branches/rel-1/freevo/src/www/htdocs/index.rpy
   branches/rel-1/freevo/src/www/htdocs/library.rpy
   branches/rel-1/freevo/src/www/htdocs/record.rpy
   branches/rel-1/freevo/src/www/htdocs/search.rpy

Modified: branches/rel-1/freevo/src/helpers/recordserver.py
==============================================================================
--- branches/rel-1/freevo/src/helpers/recordserver.py   (original)
+++ branches/rel-1/freevo/src/helpers/recordserver.py   Tue Mar  4 16:57:50 2008
@@ -64,8 +64,6 @@
 # have been updated to use kaa.rpc
 
 from video.commdetectclient import initCommDetectJob, queueIt, listJobs, 
connectionTest
-from util.marmalade import jellyToXML, unjellyFromXML
-from twisted.web import sux
 
 import tv.record_types
 from tv.record_types import TYPES_VERSION
@@ -104,14 +102,15 @@
 plugin.init_special_plugin(config.plugin_record)
 
 def print_plugin_warning():
-    _debug_("""
+    warning = """
     *************************************************
     **  Warning: No recording plugin registered.   **
     **           Check your local_conf.py for a    **
     **           bad "plugin_record =" line or     **
     **           this log for a plugin failure.    **
     **           Recordings will fail!             **
-    *************************************************""", DWARNING)
+    *************************************************"""
+    _debug_(warning, DWARNING)
 
 
 if not plugin.getbyname('RECORD'):
@@ -132,12 +131,16 @@
         self.vg = None
         self.previouslyRecordedShows = None
         self.delay_recording = None
+        self.schedule = ScheduledRecordings()
+        self.updateFavoritesSchedule()
 
 
     @kaa.rpc.expose('ping')
     def pingtest(self):
+        _debug_('pingtest()', 2)
         return True
 
+
     @kaa.rpc.expose('isRecording')
     def isRecording(self):
         _debug_('isRecording()', 1)
@@ -155,9 +158,9 @@
         return 0
 
 
-    def findOverlaps(self, scheduledRecordings):
-        _debug_('in findOverlaps', 2)
-        progs = scheduledRecordings.getProgramList()
+    def findOverlaps(self, schedule):
+        _debug_('findOverlaps(schedule=%r)' % (schedule,), 2)
+        progs = schedule.getProgramList()
         proglist = list(progs)
         proglist.sort(self.progsTimeCompare)
         for progitem in proglist:
@@ -228,94 +231,77 @@
 
     @kaa.rpc.expose('getScheduledRecordings')
     def getScheduledRecordings(self):
-        _debug_('getScheduledRecordings()', 2)
+        _debug_('getScheduledRecordings()', 1)
         file_ver = None
-        scheduledRecordings = None
+        schedule = None
 
         if os.path.isfile(config.TV_RECORD_SCHEDULE):
             _debug_('reading cache (%r)' % config.TV_RECORD_SCHEDULE, 2)
-            if hasattr(self, 'scheduledRecordings_cache'):
-                mod_time, scheduledRecordings = self.scheduledRecordings_cache
+            if hasattr(self, 'schedule_cache'):
+                mod_time, schedule = self.schedule_cache
                 try:
                     if os.stat(config.TV_RECORD_SCHEDULE)[stat.ST_MTIME] == 
mod_time:
                         _debug_('using cached schedule', 2)
-                        return scheduledRecordings
+                        return schedule
                 except OSError, why:
                     _debug_('Failed to stat %r: %s' % 
(config.TV_RECORD_SCHEDULE, why), DERROR)
                     pass
 
-            try:
-                f = open(config.TV_RECORD_SCHEDULE, 'r')
-                scheduledRecordings = unjellyFromXML(f)
-                f.close()
-            except sux.ParseError, e:
-                _debug_('%r is corrupt, removed' % 
(config.TV_RECORD_SCHEDULE), DWARNING)
-                os.unlink(config.TV_RECORD_SCHEDULE)
+            schedule = self.schedule.loadRecordSchedule()
 
             try:
-                file_ver = scheduledRecordings.TYPES_VERSION
+                file_ver = schedule.TYPES_VERSION
             except AttributeError:
                 _debug_('The cache does not have a version and must be 
recreated', DWARNING)
 
             if file_ver != TYPES_VERSION:
                 _debug_(('ScheduledRecordings version number %s is stale (new 
is %s), must be reloaded') % \
                     (file_ver, TYPES_VERSION), DINFO)
-                scheduledRecordings = None
+                schedule = None
             else:
                 _debug_('Got ScheduledRecordings (version %s).' % file_ver, 
DINFO)
 
-            #FIXME This should be removed when the xml is not used
-            scheduledRecordings.initialize()
-
-        if not scheduledRecordings:
+        if not schedule:
             _debug_('Created a new ScheduledRecordings', DINFO)
-            scheduledRecordings = ScheduledRecordings()
-            self.saveScheduledRecordings(scheduledRecordings)
+            schedule = ScheduledRecordings()
+            self.saveScheduledRecordings(schedule)
 
-        _debug_('ScheduledRecordings has %s items.' % 
len(scheduledRecordings.program_list))
+        _debug_('ScheduledRecordings has %s items.' % 
len(schedule.program_list))
 
         try:
             mod_time = os.stat(config.TV_RECORD_SCHEDULE)[stat.ST_MTIME]
-            self.scheduledRecordings_cache = mod_time, scheduledRecordings
+            self.schedule_cache = mod_time, schedule
         except OSError:
             pass
-        return scheduledRecordings
+        return schedule
 
 
-    @kaa.rpc.expose('saveScheduledRecordings')
-    def saveScheduledRecordings(self, scheduledRecordings=None):
+    [EMAIL PROTECTED]('saveScheduledRecordings')
+    def saveScheduledRecordings(self, schedule=None):
         """ Save the schedule to disk """
-        _debug_('saveScheduledRecordings(scheduledRecordings=%r)' % 
(scheduledRecordings), 1)
+        _debug_('saveScheduledRecordings(schedule=%r)' % (schedule), 1)
 
-        if not scheduledRecordings:
+        if not schedule:
             _debug_('making a new ScheduledRecordings', DINFO)
-            scheduledRecordings = ScheduledRecordings()
-
-        scheduledRecordings.saveRecordSchedule()
+            schedule = ScheduledRecordings()
 
-        self.findOverlaps(scheduledRecordings)
-        _debug_('saving cached file %r with %s items' % \
-            (config.TV_RECORD_SCHEDULE, 
len(scheduledRecordings.program_list)), 2)
-        try:
-            f = open(config.TV_RECORD_SCHEDULE, 'w')
-        except IOError:
-            os.unlink(config.TV_RECORD_SCHEDULE)
-            f = open(config.TV_RECORD_SCHEDULE, 'w')
+        self.findOverlaps(schedule)
+        _debug_('saving cached file %r with %s items' % 
(config.TV_RECORD_SCHEDULE, len(schedule.program_list)), 1)
 
-        #print 'scheduledRecordings=%r' % (scheduledRecordings,)
-        jellyToXML(scheduledRecordings, f)
-        f.close()
+        schedule.saveRecordSchedule()
 
         try:
             mod_time = os.stat(config.TV_RECORD_SCHEDULE)[stat.ST_MTIME]
-            self.scheduledRecordings_cache = mod_time, scheduledRecordings
+            self.schedule_cache = mod_time, schedule
         except OSError:
             pass
 
-        return True
+        return (True, _('scheduled recordings saved'))
+
 
     def loadPreviouslyRecordedShows(self):
         """ Load the saved set of recorded shows """
+        _debug_('loadPreviouslyRecordedShows()', 1)
         if self.previouslyRecordedShows:
             return
 
@@ -326,16 +312,20 @@
             self.previouslyRecordedShows = {}
             pass
 
+
     def savePreviouslyRecordedShows(self):
         """ Save the set of recorded shows """
+        _debug_('savePreviouslyRecordedShows()', 1)
         if not self.previouslyRecordedShows:
             return
 
         cacheFile = config.FREEVO_CACHEDIR+"/previouslyRecorded.pickle"
         pickle.dump(self.previouslyRecordedShows, open(cacheFile, "w"))
 
+
     def newEpisode(self, prog=None):
         """ Return true if this is a new episode of 'prog' """
+        _debug_('newEpisode(prog=%r)' % (prog,), 1)
         todayStr = datetime.date.today().strftime('%Y%m%d')
         progStr = str(prog.date)
         _debug_('Program Date: "%s"' % progStr, DINFO)
@@ -380,9 +370,11 @@
             _debug_('No good date format, assuming new Episode to be on the 
safe side', DINFO)
             return True
 
+
     def shrink(self, text):
         """ Shrink a string by removing all spaces and making it
         lower case and then returning the MD5 digest of it. """
+        _debug_('shrink(text=%r)' % (text,), 2)
         if text:
             text = md5.new(text.lower().replace(' ', '')).hexdigest()
         else:
@@ -393,6 +385,7 @@
     def getPreviousRecordingKey(self, prog):
         """Return the key to be used for a given prog in the
         previouslyRecordedShows hashtable."""
+        _debug_('getPreviousRecordingKey(prog=%r)' % (prog,), 2)
         shrunkTitle = self.shrink(prog.title)
         shrunkSub   = self.shrink(prog.sub_title)
         shrunkDesc  = self.shrink(prog.desc);
@@ -403,6 +396,7 @@
 
     def getPreviousRecording(self, prog):
         """Get a previous recording, or None if none."""
+        _debug_('getPreviousRecording(prog=%r)' % (prog,), 2)
         try:
             return 
self.previouslyRecordedShows[self.getPreviousRecordingKey(prog)]
         except KeyError:
@@ -411,6 +405,7 @@
 
     def removeDuplicate(self, prog=None):
         """Remove a duplicate recording"""
+        _debug_('removeDuplicate(prog=%r)' % (prog,), 2)
         self.loadPreviouslyRecordedShows()
         previous = self.getPreviousRecording(prog)
         if previous:
@@ -421,8 +416,7 @@
 
     def addDuplicate(self, prog=None):
         """Add program to duplicates hash"""
-        _debug_('No previous recordings for "%s", "%s", "%s", adding to hash 
and saving' % \
-        (prog.title, prog.sub_title, prog.desc), 2)
+        _debug_('addDuplicate(prog=%r)' % (prog,), 2)
         self.loadPreviouslyRecordedShows()
         self.previouslyRecordedShows[self.getPreviousRecordingKey(prog)] = prog
         for key in self.getPreviousRecordingKey(prog):
@@ -433,6 +427,7 @@
     def duplicate(self, prog=None):
         """Identify if the given programme is a duplicate. If not,
         record it as previously recorded."""
+        _debug_('duplicate(prog=%r)' % (prog,), 2)
         self.loadPreviouslyRecordedShows()
         previous = self.getPreviousRecording(prog)
         if previous:
@@ -443,31 +438,35 @@
 
 
     def addRecordingToSchedule(self, prog=None, inputSchedule=None):
+        _debug_('addRecordingToSchedule(%s, inputSchedule=%r)' % (prog, 
inputSchedule), 1)
         if inputSchedule:
-            scheduledRecordings=inputSchedule
+            schedule = inputSchedule
         else:
-            scheduledRecordings = self.getScheduledRecordings()
-        scheduledRecordings.addProgram(prog, tv_util.getKey(prog))
+            schedule = self.getScheduledRecordings()
+        schedule.addProgram(prog, tv_util.getKey(prog))
         if not inputSchedule:
             if config.TV_RECORD_DUPLICATE_DETECTION:
                 self.addDuplicate(prog)
-            self.saveScheduledRecordings(scheduledRecordings)
+            self.saveScheduledRecordings(schedule)
 
 
     def removeRecordingFromSchedule(self, prog=None, inputSchedule=None):
+        _debug_('removeRecordingFromSchedule(%s, inputSchedule=%r)' % (prog, 
inputSchedule), 1)
         if inputSchedule:
-            scheduledRecordings = inputSchedule
+            schedule = inputSchedule
         else:
-            scheduledRecordings = self.getScheduledRecordings()
-        scheduledRecordings.removeProgram(prog, tv_util.getKey(prog))
+            schedule = self.getScheduledRecordings()
+        schedule.removeProgram(prog, tv_util.getKey(prog))
         if not inputSchedule:
             if config.TV_RECORD_DUPLICATE_DETECTION:
                 self.removeDuplicate(prog)
-            self.saveScheduledRecordings(scheduledRecordings)
+            self.saveScheduledRecordings(schedule)
 
 
     def conflictResolution(self, prog):
+        _debug_('conflictResolution(prog=%r)' % (prog,), 2)
         def exactMatch(self, prog):
+            _debug_('exactMatch(prog=%r)' % (prog,), 2)
             if prog.desc:
                 descResult = False
                 descMatches = None
@@ -485,8 +484,9 @@
                     return sub_titleMatches
             return None
 
+
         def getConflicts(self, prog, myScheduledRecordings):
-            _debug_('Before mySched recordings; ignore all addProgram lines', 
DINFO)
+            _debug_('getConflicts(prog=%r, myScheduledRecordings=%r)' % (prog, 
myScheduledRecordings), 2)
             self.addRecordingToSchedule(prog, myScheduledRecordings)
             progs = myScheduledRecordings.getProgramList()
             proglist = list(progs)
@@ -503,10 +503,11 @@
                     elif nextprog == prog:
                         conflicts.append(thisprog)
             self.removeRecordingFromSchedule(prog, myScheduledRecordings)
-            _debug_('After mySched recordings; stop ignoring all addProgram 
lines', DINFO)
             return (conflictRating, conflicts)
 
+
         def getRatedConflicts(self, prog, myScheduledRecordings):
+            _debug_('getRatedConflicts(prog=%r, myScheduledRecordings=%r)' % 
(prog, myScheduledRecordings), 2)
             ratedConflicts = []
             occurances = exactMatch(self, prog)
             if not occurances:
@@ -639,8 +640,8 @@
 
 
     def checkOnlyNewDetection(self, prog=None):
+        _debug_('checkOnlyNewDetection(prog=%r)' % (prog,), 2)
         if config.TV_RECORD_ONLY_NEW_DETECTION:
-            _debug_('Only new episode detection enabled', DINFO)
             if not self.doesFavoriteRecordOnlyNewEpisodes(prog):
                 return (True, 'Favorite records all episodes, record')
             if self.newEpisode(prog):
@@ -652,8 +653,8 @@
 
 
     def checkDuplicateDetection(self, prog=None):
+        _debug_('checkDuplicateDetection(prog=%r)' % (prog,), 2)
         if config.TV_RECORD_DUPLICATE_DETECTION:
-            _debug_('Duplicate detection enabled', DINFO)
             if self.doesFavoriteAllowDuplicates(prog):
                 return (True, 'Favorite allows duplicates, record')
             if not self.duplicate(prog):
@@ -665,6 +666,7 @@
 
 
     def setTunerid(self, prog):
+        _debug_('setTunerid(prog=%r)' % (prog,), 2)
         for chan in guide.chan_list:
             if prog.channel_id == chan.id:
                 prog.tunerid = chan.tunerid
@@ -674,7 +676,7 @@
 
     @kaa.rpc.expose('scheduleRecording')
     def scheduleRecording(self, prog=None):
-        _debug_('scheduleRecording(prog=%r)' % (prog), 1)
+        _debug_('scheduleRecording(%s)' % (prog,), 1)
         global guide
 
         if prog is None:
@@ -728,14 +730,12 @@
 
     @kaa.rpc.expose('removeScheduledRecording')
     def removeScheduledRecording(self, prog=None):
-        _debug_('removeScheduledRecording(prog=%r)' % (prog), 1)
+        _debug_('removeScheduledRecording(prog=%r)' % (prog,), 1)
         if prog is None:
             return (False, _('program is not set'))
 
-        # get our version of 'prog'
-        # It's a bad hack, but we can use isRecording than
-        sr = self.getScheduledRecordings()
-        progs = sr.getProgramList()
+        schedule = self.getScheduledRecordings()
+        progs = schedule.getProgramList()
 
         for saved_prog in progs.values():
             if String(saved_prog) == String(prog):
@@ -769,12 +769,12 @@
             schedule = self.getScheduledRecordings().getProgramList()
 
         if schedule == {}:
-            return False
+            return (False, _('program list is empty'))
 
         for me in schedule.values():
             if me.start == prog.start and me.channel_id == prog.channel_id:
-                return True
-        return False
+                return (True, _('program is scheduled'))
+        return (False, _('program is not scheduled'))
 
 
     @kaa.rpc.expose('findProg')
@@ -844,18 +844,28 @@
 
 
     def updateGuide(self):
+        _debug_('updateGuide()', 2)
         global guide
         guide = tv.epg_xmltv.get_guide()
 
 
+    def addFavoritesToSchedule(self):
+        _debug_('addFavoritesToSchedule()', 1)
+        pass
+
+
     def checkToRecord(self):
-        _debug_('checkToRecord %s' % (time.strftime('%H:%M:%S', 
time.localtime(time.time()))), 2)
+        _debug_('checkToRecord %s' % (time.strftime('%H:%M:%S', 
time.localtime(time.time()))), 1)
         rec_cmd = None
         rec_prog = None
         cleaned = None
 
-        sr = self.getScheduledRecordings()
-        progs = sr.getProgramList()
+        schedule = self.getScheduledRecordings()
+        if schedule is None:
+            _debug_('no scheduled recordings')
+            return
+
+        progs = schedule.getProgramList()
 
         currently_recording = None
         for prog in progs.values():
@@ -902,7 +912,7 @@
                             and now < (prog.stop + 
config.TV_RECORD_PADDING_POST):
                             _debug_('Ignoring %s' % prog, DINFO)
                             continue
-                        sr.removeProgram(currently_recording,
+                        schedule.removeProgram(currently_recording,
                                          tv_util.getKey(currently_recording))
                         plugin.getbyname('RECORD').Stop()
                         _debug_('CALLED RECORD STOP 1: %s' % 
currently_recording, DINFO)
@@ -913,10 +923,9 @@
                             # Therefore we have overlapping paddings but not 
real stop / start times.
                             overlap = (currently_recording.stop + 
config.TV_RECORD_PADDING_POST) - \
                                       (prog.start - 
config.TV_RECORD_PADDING_PRE)
-                            if overlap <= ((config.TV_RECORD_PADDING_PRE +
-                                            config.TV_RECORD_PADDING_POST)/4):
-                                sr.removeProgram(currently_recording,
-                                                 
tv_util.getKey(currently_recording))
+                            if overlap <= ((config.TV_RECORD_PADDING_PRE + 
config.TV_RECORD_PADDING_POST)/4):
+                                schedule.removeProgram(currently_recording,
+                                    tv_util.getKey(currently_recording))
                                 plugin.getbyname('RECORD').Stop()
                                 _debug_('CALLED RECORD STOP 2: %s' % 
currently_recording, DINFO)
                     self.delay_recording = prog
@@ -940,8 +949,8 @@
                 del progs[tv_util.getKey(prog)]
 
         if rec_prog or cleaned:
-            sr.setProgramList(progs)
-            self.saveScheduledRecordings(sr)
+            schedule.setProgramList(progs)
+            self.saveScheduledRecordings(schedule)
 
         if rec_prog:
             _debug_('start recording: %s' % rec_prog, DINFO)
@@ -978,9 +987,10 @@
                         freespace = util.freespace(path)
                         i = i + 1
 
+
     @kaa.rpc.expose('addFavorite')
     def addFavorite(self, name, prog, exactchan=False, exactdow=False, 
exacttod=False):
-        _debug_('addFavorite(name=%r)' % (name,), 1)
+        _debug_('addFavorite(name=%r, prog=%r, exactchan=%r, exactdow=%r, 
exacttod=%r)' % (name, prog, exactchan, exactdow, exacttod), 1)
         if not name:
             return (False, _('no favorite name'))
 
@@ -988,9 +998,9 @@
         priority = len(favs) + 1
         fav = tv.record_types.Favorite(name, prog, exactchan, exactdow, 
exacttod, priority, allowDuplicates, onlyNew)
 
-        scheduledRecordings = self.getScheduledRecordings()
-        scheduledRecordings.addFavorite(fav)
-        self.saveScheduledRecordings(scheduledRecordings)
+        schedule = self.getScheduledRecordings()
+        schedule.addFavorite(fav)
+        self.saveScheduledRecordings(schedule)
         self.addFavoriteToSchedule(fav)
 
         return (True, _('favorite added'))
@@ -998,7 +1008,7 @@
 
     @kaa.rpc.expose('addEditedFavorite')
     def addEditedFavorite(self, name, title, chan, dow, mod, priority, 
allowDuplicates, onlyNew):
-        _debug_('addEditedFavorite(name=%r)' % (name), 1)
+        _debug_('addEditedFavorite(name=%r, title=%r, chan=%r, dow=%r, mod=%r, 
priority=%r, allowDuplicates=%r, onlyNew=%r)' % (name, title, chan, dow, mod, 
priority, allowDuplicates, onlyNew), 1)
         fav = tv.record_types.Favorite()
 
         fav.name = name
@@ -1010,9 +1020,9 @@
         fav.allowDuplicates = allowDuplicates
         fav.onlyNew = onlyNew
 
-        scheduledRecordings = self.getScheduledRecordings()
-        scheduledRecordings.addFavorite(fav)
-        self.saveScheduledRecordings(scheduledRecordings)
+        schedule = self.getScheduledRecordings()
+        schedule.addFavorite(fav)
+        self.saveScheduledRecordings(schedule)
         self.addFavoriteToSchedule(fav)
 
         return (True, _('favorite added'))
@@ -1026,9 +1036,9 @@
 
         (status, fav) = self.getFavorite(name)
         self.removeFavoriteFromSchedule(fav)
-        scheduledRecordings = self.getScheduledRecordings()
-        scheduledRecordings.removeFavorite(name)
-        self.saveScheduledRecordings(scheduledRecordings)
+        schedule = self.getScheduledRecordings()
+        schedule.removeFavorite(name)
+        self.saveScheduledRecordings(schedule)
 
         return (True, _('favorite removed'))
 
@@ -1036,9 +1046,9 @@
     @kaa.rpc.expose('clearFavorites')
     def clearFavorites(self):
         _debug_('clearFavorites()', 1)
-        scheduledRecordings = self.getScheduledRecordings()
-        scheduledRecordings.clearFavorites()
-        self.saveScheduledRecordings(scheduledRecordings)
+        schedule = self.getScheduledRecordings()
+        schedule.clearFavorites()
+        self.saveScheduledRecordings(schedule)
 
         return (True, _('favorites cleared'))
 
@@ -1072,10 +1082,10 @@
 
         _debug_('ap: mod=%s' % mod, DINFO)
 
-        sr = self.getScheduledRecordings()
-        favs = sr.getFavorites().values()
+        schedule = self.getScheduledRecordings()
+        favs = schedule.getFavorites().values()
 
-        _debug_('adjusting prio of '+favname, DINFO)
+        _debug_('adjusting prio of %r' % (favname,), DINFO)
         for fav in favs:
             fav.priority = int(fav.priority)
 
@@ -1099,8 +1109,8 @@
                 fav.priority = fav.priority - 1
                 _debug_('moved prio of %s: %s => %s' % (fav.name, 
fav.priority+1, fav.priority), DINFO)
 
-        sr.setFavoritesList(favs)
-        self.saveScheduledRecordings(sr)
+        schedule.setFavoritesList(favs)
+        self.saveScheduledRecordings(schedule)
 
         return (True, _('priority adjusted'))
 
@@ -1108,7 +1118,7 @@
     @kaa.rpc.expose('getFavoriteObject')
     def getFavoriteObject(self, prog, favs=None):
         """ more liberal favorite check that returns an object """
-        _debug_('getFavoriteObject(prog=%r)' % (prog), 1)
+        _debug_('getFavoriteObject(prog=%r, favs=%r)' % (prog, favs), 1)
         if not favs:
             favs = self.getFavorites()
         # first try the strict test
@@ -1126,7 +1136,8 @@
 
     @kaa.rpc.expose('isProgAFavorite')
     def isProgAFavorite(self, prog, favs=None):
-        _debug_('isProgAFavorite(prog=%r)' % (prog), 2)
+        #_debug_('isProgAFavorite(prog=%s, favs=%r)' % (prog, favs), 1)
+        _debug_('isProgAFavorite(%s)' % (prog,), 2)
         if not favs:
             favs = self.getFavorites()
 
@@ -1151,6 +1162,7 @@
 
 
     def doesFavoriteRecordOnlyNewEpisodes(self, prog, favs=None):
+        _debug_('doesFavoriteRecordOnlyNewEpisodes(prog=%r, favs=%r)' % (prog, 
favs), 1)
         if not favs:
             favs = self.getFavorites()
         for fav in favs.values():
@@ -1163,6 +1175,7 @@
 
 
     def doesFavoriteAllowDuplicates(self, prog, favs=None):
+        _debug_('doesFavoriteAllowDuplicates(prog=%r, favs=%r)' % (prog, 
favs), 1)
         if not favs:
             favs = self.getFavorites()
         for fav in favs.values():
@@ -1183,8 +1196,8 @@
         tmp = {}
         tmp[fav.name] = fav
 
-        scheduledRecordings = self.getScheduledRecordings()
-        progs = scheduledRecordings.getProgramList()
+        schedule = self.getScheduledRecordings()
+        progs = schedule.getProgramList()
         for prog in progs.values():
             (isFav, favorite) = self.isProgAFavorite(prog, tmp)
             if isFav:
@@ -1228,7 +1241,7 @@
             for prog in ch.programs:
                 if prog.start > last: last = prog.start
 
-        scheduledRecordings = self.getScheduledRecordings()
+        schedule = self.getScheduledRecordings()
 
         favs = self.getFavorites()
 
@@ -1238,7 +1251,7 @@
 
         # Then remove all scheduled favorites in that timeframe to
         # make up for schedule changes.
-        progs = scheduledRecordings.getProgramList()
+        progs = schedule.getProgramList()
         for prog in progs.values():
 
             # try:
@@ -1266,6 +1279,7 @@
 
 
     def create_fxd(self, rec_prog):
+        _debug_('create_fxd(rec_prog=%r)' % (rec_prog,), 1)
         from util.fxdimdb import FxdImdb, makeVideo
         fxd = FxdImdb()
 
@@ -1291,30 +1305,12 @@
         fxd.writeFxd()
 
 
-    def startMinuteCheck(self):
-        next_minute = (int(time.time()/60) * 60 + 60) - int(time.time())
-        _debug_('top of the minute in %s seconds' % next_minute, DINFO)
-        reactor.callLater(next_minute, self.minuteCheck)
-
-
-    def minuteCheck(self):
-        next_minute = (int(time.time()/60) * 60 + 60) - int(time.time())
-        if next_minute != 60:
-            # Compensate for timer drift
-            _debug_('top of the minute in %s seconds' % next_minute, DINFO)
-            reactor.callLater(next_minute, self.minuteCheck)
-        else:
-            reactor.callLater(60, self.minuteCheck)
-
-        self.checkToRecord()
-
-
     def handleEvents(self, event):
         if event:
             if hasattr(event, 'arg'):
-                _debug_('event=%s arg=%r' % (event, event.arg))
+                _debug_('handleEvents(event=%s arg=%r)' % (event, event.arg))
             else:
-                _debug_('event=%s' % (event))
+                _debug_('handleEvents(event=%s)' % (event))
 
             if event == OS_EVENT_KILL:
                 pass
@@ -1353,8 +1349,8 @@
                 # This is a really nasty hack but if it fixes the problem then 
great
                 if self.delay_recording:
                     prog = self.delay_recording
-                    #sr.setProgramList(progs)
-                    #self.saveScheduledRecordings(sr)
+                    #schedule.setProgramList(progs)
+                    #self.saveScheduledRecordings(schedule)
                     prog.isRecording = True
                     duration = int(prog.stop) - int(time.time())
                     prog.rec_duration = duration + 
config.TV_RECORD_PADDING_POST - 10
@@ -1376,6 +1372,7 @@
 
 
     def handleAtTimer(self):
+        _debug_('handleAtTimer()', 2)
         self.checkToRecord()
 
 

Modified: branches/rel-1/freevo/src/tv/epg_types.py
==============================================================================
--- branches/rel-1/freevo/src/tv/epg_types.py   (original)
+++ branches/rel-1/freevo/src/tv/epg_types.py   Tue Mar  4 16:57:50 2008
@@ -270,10 +270,6 @@
         # Return a cached version?
         global cache_last_start, cache_last_stop, cache_last_chanids, 
cache_last_time, cache_last_result
 
-        print 'DJW:start:', cache_last_start, start, 'stop:', cache_last_stop, 
stop, 'chanids:', cache_last_chanids, chanids, 'time:', time.time(), 
cache_last_time, time.time() < cache_last_time
-        #import traceback
-        #traceback.print_stack()
-
         if (cache_last_start == start and cache_last_stop == stop and
             cache_last_chanids == chanids and time.time() < cache_last_time):
             _debug_('GetPrograms: return cached results, valid for %1.1f 
secs.' % cache_last_time - time.time())

Modified: branches/rel-1/freevo/src/tv/favoriteitem.py
==============================================================================
--- branches/rel-1/freevo/src/tv/favoriteitem.py        (original)
+++ branches/rel-1/freevo/src/tv/favoriteitem.py        Tue Mar  4 16:57:50 2008
@@ -329,10 +329,6 @@
             result = True
 
         if result:
-            print 'DJW:self.fav.__dict__=%r' % (self.fav.__dict__)
-            f = Favorite(self.fav.name, TvProgram(self.fav.title, 
self.fav.channel), self.fav.dow, self.fav.mod,
-                self.fav.priority, self.fav.allowDuplicates, self.fav.onlyNew)
-            print 'DJW:f.__dict__=%r' % (f.__dict__,)
             # create a new edited favorite
             (result, msg) = 
self.recordclient.addEditedFavoriteNow(self.fav.name,
                 self.fav.title, self.fav.channel, self.fav.dow, self.fav.mod,

Modified: branches/rel-1/freevo/src/tv/programitem.py
==============================================================================
--- branches/rel-1/freevo/src/tv/programitem.py (original)
+++ branches/rel-1/freevo/src/tv/programitem.py Tue Mar  4 16:57:50 2008
@@ -104,9 +104,9 @@
         # 'Schedule for recording' OR 'Remove from schedule'
         (status, schedule) = self.recordclient.getScheduledRecordingsNow()
         if schedule:
-            (status, self.scheduled) = 
self.recordclient.isProgScheduledNow(self.prog, schedule.getProgramList())
+            (self.scheduled, reason) = 
self.recordclient.isProgScheduledNow(self.prog, schedule.getProgramList())
 
-        if self.scheduled:
+        if status:
             items.append((self.remove_program, _('Remove from schedule')))
         else:
             items.append((self.schedule_program, _('Schedule for recording')))

Modified: branches/rel-1/freevo/src/tv/record_client.py
==============================================================================
--- branches/rel-1/freevo/src/tv/record_client.py       (original)
+++ branches/rel-1/freevo/src/tv/record_client.py       Tue Mar  4 16:57:50 2008
@@ -209,7 +209,7 @@
         try:
             inprogress = self.recordserver_rpc('getScheduledRecordings')
             if inprogress is None:
-                return (None, recordserverdown)
+                return (None, self.recordserverdown)
             inprogress.wait()
             result = inprogress.get_result()
             _debug_('getScheduledRecordingsNow.result=%r' % (result,), 1)
@@ -225,7 +225,7 @@
         try:
             inprogress = self.recordserver_rpc('updateFavoritesSchedule')
             if inprogress is None:
-                return (None, recordserverdown)
+                return (None, self.recordserverdown)
             inprogress.wait()
             result = inprogress.get_result()
             _debug_('updateFavoritesScheduleNow.result=%r' % (result,), 1)
@@ -241,7 +241,7 @@
         try:
             inprogress = self.recordserver_rpc('findProg', chan, start)
             if inprogress is None:
-                return (None, recordserverdown)
+                return (None, self.recordserverdown)
             inprogress.wait()
             result = inprogress.get_result()
             _debug_('findProgNow.result=%r' % (result,), 1)
@@ -257,7 +257,7 @@
         try:
             inprogress = self.recordserver_rpc('findMatches', title)
             if inprogress is None:
-                return (None, recordserverdown)
+                return (None, self.recordserverdown)
             inprogress.wait()
             result = inprogress.get_result()
             _debug_('findMatchesNow.result=%r' % (result,), 1)
@@ -273,7 +273,7 @@
         try:
             inprogress = self.recordserver_rpc('isProgScheduled', prog, 
schedule)
             if inprogress is None:
-                return (None, recordserverdown)
+                return (None, self.recordserverdown)
             inprogress.wait()
             result = inprogress.get_result()
             _debug_('isProgScheduledNow.result=%r' % (result,), 1)
@@ -289,7 +289,7 @@
         try:
             inprogress = self.recordserver_rpc('isProgAFavorite', prog, favs)
             if inprogress is None:
-                return (None, recordserverdown)
+                return (None, self.recordserverdown)
             inprogress.wait()
             result = inprogress.get_result()
             _debug_('isProgAFavoriteNow.result=%r' % (result,), 1)
@@ -305,7 +305,7 @@
         try:
             inprogress = self.recordserver_rpc('clearFavorites')
             if inprogress is None:
-                return (None, recordserverdown)
+                return (None, self.recordserverdown)
             inprogress.wait()
             result = inprogress.get_result()
             _debug_('clearFavoritesNow.result=%r' % (result,), 1)
@@ -321,7 +321,7 @@
         try:
             inprogress = self.recordserver_rpc('getFavorites')
             if inprogress is None:
-                return (None, recordserverdown)
+                return (None, self.recordserverdown)
             inprogress.wait()
             result = inprogress.get_result()
             _debug_('getFavoritesNow.result=%r' % (result,), 1)
@@ -337,7 +337,7 @@
         try:
             inprogress = self.recordserver_rpc('getFavorite', name)
             if inprogress is None:
-                return (None, recordserverdown)
+                return (None, self.recordserverdown)
             inprogress.wait()
             result = inprogress.get_result()
             _debug_('getFavoriteNow.result=%r' % (result,), 1)
@@ -353,7 +353,7 @@
         try:
             inprogress = self.recordserver_rpc('removeFavorite', name)
             if inprogress is None:
-                return (None, recordserverdown)
+                return (None, self.recordserverdown)
             inprogress.wait()
             result = inprogress.get_result()
             _debug_('removeFavoriteNow.result=%r' % (result,), 1)
@@ -372,7 +372,7 @@
             inprogress = self.recordserver_rpc('addEditedFavorite', \
                 name, title, chan, dow, mod, priority, allowDuplicates, 
onlyNew)
             if inprogress is None:
-                return (None, recordserverdown)
+                return (None, self.recordserverdown)
             inprogress.wait()
             result = inprogress.get_result()
             _debug_('addEditedFavoriteNow.result=%r' % (result,), 1)
@@ -388,7 +388,7 @@
         try:
             inprogress = self.recordserver_rpc('adjustPriority', name, mod)
             if inprogress is None:
-                return (None, recordserverdown)
+                return (None, self.recordserverdown)
             inprogress.wait()
             result = inprogress.get_result()
             _debug_('adjustPriorityNow.result=%r' % (result,), 1)
@@ -404,7 +404,7 @@
         try:
             inprogress = self.recordserver_rpc('getFavoriteObject', prog)
             if inprogress is None:
-                return (None, recordserverdown)
+                return (None, self.recordserverdown)
             inprogress.wait()
             result = inprogress.get_result()
             _debug_('getFavoriteObjectNow.result=%r' % (result,), 1)
@@ -420,7 +420,7 @@
         try:
             inprogress = self.recordserver_rpc('scheduleRecording', prog)
             if inprogress is None:
-                return (None, recordserverdown)
+                return (None, self.recordserverdown)
             inprogress.wait()
             result = inprogress.get_result()
             _debug_('scheduleRecordingNow.result=%r' % (result,), 1)
@@ -436,7 +436,7 @@
         try:
             inprogress = self.recordserver_rpc('removeScheduledRecording', 
prog)
             if inprogress is None:
-                return (None, recordserverdown)
+                return (None, self.recordserverdown)
             inprogress.wait()
             result = inprogress.get_result()
             _debug_('removeScheduledRecordingNow.result=%r' % (result,), 1)
@@ -601,7 +601,11 @@
 
     elif function == "getscheduledrecordingsnow":
         result = rc.getScheduledRecordingsNow()
-        print 'result: %r\n"%s"' % (result, result)
+        status, schedule = result
+        if status:
+            print 'result: %r\n"%s"' % (schedule.__dict__, result)
+        else:
+            print 'result: %r' % (result,)
         raise SystemExit
 
     elif function == "getscheduledrecordings":

Modified: branches/rel-1/freevo/src/tv/record_types.py
==============================================================================
--- branches/rel-1/freevo/src/tv/record_types.py        (original)
+++ branches/rel-1/freevo/src/tv/record_types.py        Tue Mar  4 16:57:50 2008
@@ -40,10 +40,11 @@
 
 # The file format version number. It must be updated when incompatible
 # changes are made to the file format.
-TYPES_VERSION = 2
+TYPES_VERSION = 3
 
 critical_section = threading.Lock()
 
+
 class ScheduledRecordings:
     """
     """
@@ -51,48 +52,40 @@
         """ """
         _debug_('ScheduledRecordings.__init__()', 1)
         self.TYPES_VERSION = TYPES_VERSION
-        self.favorites_file_name = os.path.join(config.FREEVO_STATICDIR, 
'favorites.pickle')
-        self.favorites_text_name = os.path.join(config.FREEVO_STATICDIR, 
'favorites.txt')
-        self.schedule_file_name = os.path.join(config.FREEVO_STATICDIR, 
'schedule.pickle')
         self.program_list = {}
+        self.manual_recordings = self.loadManualRecordings()
         self.favorites = self.loadFavorites()
 
 
-    def initialize(self):
-        if not hasattr(self, 'favorites_file_name'):
-            self.favorites_file_name = os.path.join(config.FREEVO_STATICDIR, 
'favorites.pickle')
-        if not hasattr(self, 'favorites_text_name'):
-            self.favorites_text_name = os.path.join(config.FREEVO_STATICDIR, 
'favorites.txt')
-        if not hasattr(self, 'schedule_file_name'):
-            self.schedule_file_name = os.path.join(config.FREEVO_STATICDIR, 
'schedule.pickle')
-        if not hasattr(self, 'program_list'):
-            self.program_list = {}
-        if not hasattr(self, 'favorites'):
-            self.favorites = self.loadFavorites()
-
-
     def loadRecordSchedule(self):
-        """ Load the recording schedule from a file """
+        """ Load the tv recording schedule from a pickle file """
         _debug_('loadRecordSchedule()', 1)
         # may need to use a critical section here
-        self.schedules = {}
+        recordSchedule = None
         try:
-            schedules_fh = open(self.schedule_file_name, 'rb')
-            self.program_list = pickle.load(schedules_fh)
-            schedules_fh.close()
+            schedule_fh = open(config.TV_RECORD_SCHEDULE, 'rb')
+            recordSchedule = pickle.load(schedule_fh)
+            schedule_fh.close()
         except IOError, why:
-            return {}
-        return self.schedules
+            _debug_('loadRecordSchedule: %s' % why, DWARNING)
+            return None
+        except Exception, why:
+            import traceback
+            traceback.print_stack()
+            print why
+        return recordSchedule
 
 
     def saveRecordSchedule(self):
-        """ Save the recording schedule to a file """
+        """ Save the tv recording schedule to a pickle file """
         _debug_('saveRecordSchedule()', 1)
-        # save the favourites as a pickle file
         try:
-            schedules_fh = open(self.schedule_file_name, 'wb')
-            pickle.dump(self.program_list, schedules_fh)
-            schedules_fh.close()
+            schedule_fh = open(config.TV_RECORD_SCHEDULE, 'wb')
+            pickle.dump(self, schedule_fh)
+            schedule_fh.close()
+        except IOError, why:
+            _debug_('saveRecordSchedule: %s' % why, DWARNING)
+            return None
         except Exception, why:
             import traceback
             traceback.print_stack()
@@ -101,31 +94,32 @@
 
     def addProgram(self, prog, key=None):
         """ """
-        _debug_('addProgram(prog=%r, key=%r)' % (prog, key), 1)
+        _debug_('addProgram(%s, key=%r)' % (prog, key), 1)
         if not key:
             # key = rec_interface.getKey(prog)
             pass
 
         if not self.program_list.has_key(key):
             self.program_list[key] = prog
-            _debug_('added \"%s\" %s"' % (String(key), prog), 2)
+            _debug_('%s "%s" added' % (key, prog), 1)
         else:
             _debug_('We already know about this recording \"%s\"' % (key), 
DINFO)
-        _debug_('"%s" items' % len(self.program_list), 2)
+        _debug_('"%s" items' % len(self.program_list), 1)
 
 
     def removeProgram(self, prog, key=None):
         """ """
-        _debug_('removeProgram(prog=%r, key=%r)' % (prog, key), 1)
+        _debug_('removeProgram(%s, key=%r)' % (prog, key), 1)
         if not key:
             # key = rec_interface.getKey(prog)
             pass
 
         if self.program_list.has_key(key):
             del self.program_list[key]
-            _debug_('removed %r %s"' % (key, prog), 2)
+            _debug_('%s "%s" removed' % (key, prog), 1)
         else:
             _debug_('We do not know about this recording \"%s\"' % (prog), 
DINFO)
+        _debug_('"%s" items' % len(self.program_list), 1)
 
 
     def getProgramList(self):
@@ -140,13 +134,25 @@
         self.program_list = pl
 
 
+    def loadManualRecordings(self):
+        """ Load the manual recordings from a file """
+        _debug_('loadManualRecordings()', 1)
+        return {}
+
+
+    def saveManualRecordings(self):
+        """ Save the manual recordings to a file """
+        _debug_('saveManualRecordings()', 1)
+        pass
+
+
     def loadFavorites(self):
         """ Load the favourites from a file """
         _debug_('loadFavorites()', 1)
         # may need to use a critical section here
         self.favorites = {}
         try:
-            favorites_fh = open(self.favorites_file_name, 'rb')
+            favorites_fh = open(config.TV_RECORD_FAVORITES, 'rb')
             self.favorites = pickle.load(favorites_fh)
             favorites_fh.close()
         except IOError, why:
@@ -159,7 +165,7 @@
         _debug_('saveFavorites()', 1)
         # save the favourites as a pickle file
         try:
-            favorites_fh = open(self.favorites_file_name, 'wb')
+            favorites_fh = open(config.TV_RECORD_FAVORITES, 'wb')
             pickle.dump(self.favorites, favorites_fh)
             favorites_fh.close()
         except Exception, why:
@@ -168,7 +174,7 @@
             print why
         # save the favourites as a text file
         try:
-            favorites_fh = open(self.favorites_text_name, 'w')
+            favorites_fh = open(config.TV_RECORD_FAVORITES_LIST, 'w')
             print >>favorites_fh, TYPES_VERSION
             for favourite in self.favorites.keys():
                 f = self.favorites[favourite]
@@ -185,7 +191,6 @@
     def addFavorite(self, fav):
         """ """
         _debug_('addFavorite(fav=%r)' % (fav,), 1)
-        print 'DJW:self.favorites=%r' % (self.favorites,)
         if self.favorites and self.favorites.has_key(fav.name):
             _debug_('We already have a favorite called "%s"' % 
String(fav.name), DINFO)
             return

Modified: branches/rel-1/freevo/src/tv/tvguide.py
==============================================================================
--- branches/rel-1/freevo/src/tv/tvguide.py     (original)
+++ branches/rel-1/freevo/src/tv/tvguide.py     Tue Mar  4 16:57:50 2008
@@ -121,13 +121,12 @@
 
 
     def update_schedules(self, force=False):
-        _debug_('update_schedules(force=False)', 2)
         """
         update schedule
 
         reload the list of scheduled programs and check for overlapping
         """
-        print 'DJW:update_schedules(force=%r)' % (force)
+        _debug_('update_schedules(force=%r)' % (force,), 1)
         if not force and self.last_update + 60 > time.time():
             return
 

Modified: branches/rel-1/freevo/src/www/htdocs/config.rpy
==============================================================================
--- branches/rel-1/freevo/src/www/htdocs/config.rpy     (original)
+++ branches/rel-1/freevo/src/www/htdocs/config.rpy     Tue Mar  4 16:57:50 2008
@@ -664,7 +664,6 @@
     return htmlctrl
 
 
-
 def DisplayConfigChanges(current_version):
     '''
     '''
@@ -712,6 +711,7 @@
     return None
 
 
+
 class ConfigResource(FreevoResource):
 
     def __init__(self):

Modified: branches/rel-1/freevo/src/www/htdocs/favorites.rpy
==============================================================================
--- branches/rel-1/freevo/src/www/htdocs/favorites.rpy  (original)
+++ branches/rel-1/freevo/src/www/htdocs/favorites.rpy  Tue Mar  4 16:57:50 2008
@@ -31,8 +31,8 @@
 
 import sys, time, string
 import urllib
-import config
 
+import config
 from tv.record_client import RecordClient
 import util.tv_util as tv_util
 

Modified: branches/rel-1/freevo/src/www/htdocs/genre.rpy
==============================================================================
--- branches/rel-1/freevo/src/www/htdocs/genre.rpy      (original)
+++ branches/rel-1/freevo/src/www/htdocs/genre.rpy      Tue Mar  4 16:57:50 2008
@@ -31,7 +31,8 @@
 
 import sys, time, string
 
-import util, config
+import config
+import util
 from tv.record_client import RecordClient
 from www.web_types import HTMLResource, FreevoResource
 import tv.epg_xmltv
@@ -83,7 +84,7 @@
         category = fv.formValue(form, 'category')
 
         guide = tv.epg_xmltv.get_guide()
-        schedule = self.recordclient.getScheduledRecordingsNow()
+        (status, schedule) = self.recordclient.getScheduledRecordingsNow()
         if schedule is not None:
             schedule = schedule.getProgramList()
 
@@ -158,7 +159,7 @@
                     # use counter to see if we have data
                     gotdata += 1
                     if got_schedule:
-                        result = self.recordclient.isProgScheduledNow(prog, 
schedule)
+                        (result, reason) = 
self.recordclient.isProgScheduledNow(prog, schedule)
                         if result:
                             status = 'scheduled'
                             really_now = time.time()

Modified: branches/rel-1/freevo/src/www/htdocs/guide.rpy
==============================================================================
--- branches/rel-1/freevo/src/www/htdocs/guide.rpy      (original)
+++ branches/rel-1/freevo/src/www/htdocs/guide.rpy      Tue Mar  4 16:57:50 2008
@@ -141,7 +141,7 @@
             mfrprevguide = 0
 
         guide = tv.epg_xmltv.get_guide()
-        schedule = self.recordclient.getScheduledRecordingsNow()
+        (status, schedule) = self.recordclient.getScheduledRecordingsNow()
         if schedule:
             schedule = schedule.getProgramList()
 
@@ -211,7 +211,7 @@
                     status = 'program'
 
                     if schedule:
-                        result = self.recordclient.isProgScheduledNow(prog, 
schedule)
+                        (result, reason) = 
self.recordclient.isProgScheduledNow(prog, schedule)
                         if result:
                             status = 'scheduled'
                             really_now = time.time()

Modified: branches/rel-1/freevo/src/www/htdocs/guidechannel.rpy
==============================================================================
--- branches/rel-1/freevo/src/www/htdocs/guidechannel.rpy       (original)
+++ branches/rel-1/freevo/src/www/htdocs/guidechannel.rpy       Tue Mar  4 
16:57:50 2008
@@ -86,7 +86,7 @@
             program_tip = 'Scheduled Program : %s' %  
Unicode(sch_prog.sub_title)
 
         if self.got_schedule:
-            result = self.recordclient.isProgScheduledNow(prog, self.schedule)
+            (result, reason) = self.recordclient.isProgScheduledNow(prog, 
self.schedule)
             if result:
                 status = 'programlinerecord'
                 if self.currenttime > prog.start  and self.currenttime < 
prog.stop:
@@ -214,7 +214,6 @@
         if getprogramlist:
             chan = self.GetChannel(getprogramlist,self.guide)
             fv.res = self.GetChannelPrograms(chan)
-
             return String(fv.res)
 
         dchan = self.GetChannel(display_channel,self.guide)

Modified: branches/rel-1/freevo/src/www/htdocs/index.rpy
==============================================================================
--- branches/rel-1/freevo/src/www/htdocs/index.rpy      (original)
+++ branches/rel-1/freevo/src/www/htdocs/index.rpy      Tue Mar  4 16:57:50 2008
@@ -31,9 +31,10 @@
 
 import sys, time
 
+import config
+import util
 from tv.record_client import RecordClient
 from www.web_types import HTMLResource, FreevoResource
-import util, config
 import util.tv_util as tv_util
 
 TRUE = 1
@@ -50,9 +51,9 @@
         fv.res += '<br/><br/><h2>'+_('Freevo Web Status as of %s') % \
                 (time.strftime('%B %d '+config.TV_TIME_FORMAT, 
time.localtime())) +'</h2>'
 
-        recordings = RecordClient().getScheduledRecordingsNow()
+        (status, schedule) = RecordClient().getScheduledRecordingsNow()
 
-        if recordings is None:
+        if schedule is None:
             fv.res += '<p class="alert"><b>'+_('Notice')+'</b>: '+_('Recording 
server is not available')+'</p>\n'
         else:
             fv.res += '<p class="normal">'+_('Recording server is up and 
running')+'</p>\n'
@@ -66,8 +67,8 @@
         else:
             fv.res += '<p class="normal">'+_('Your listings are up to 
date')+'</p>\n'
 
-        if recordings:
-            progl = recordings.getProgramList().values()
+        if schedule:
+            progl = schedule.getProgramList().values()
             f = lambda a, b: cmp(a.start, b.start)
             progl.sort(f)
             for prog in progl:

Modified: branches/rel-1/freevo/src/www/htdocs/library.rpy
==============================================================================
--- branches/rel-1/freevo/src/www/htdocs/library.rpy    (original)
+++ branches/rel-1/freevo/src/www/htdocs/library.rpy    Tue Mar  4 16:57:50 2008
@@ -333,7 +333,7 @@
             favre = ''
             favs = []
             if action_mediatype == 'movies' or action_mediatype == 'rectv':
-                schedule = self.recordclient.getScheduledRecordingsNow()
+                (status, schedule) = 
self.recordclient.getScheduledRecordingsNow()
                 if schedule:
                     progs = schedule.getProgramList()
                     f = lambda a, b: cmp(a.start, b.start)

Modified: branches/rel-1/freevo/src/www/htdocs/record.rpy
==============================================================================
--- branches/rel-1/freevo/src/www/htdocs/record.rpy     (original)
+++ branches/rel-1/freevo/src/www/htdocs/record.rpy     Tue Mar  4 16:57:50 2008
@@ -32,12 +32,11 @@
 import sys, time
 import util.tv_util as tv_util
 
+import config
 from tv.record_client import RecordClient
 
 from www.web_types import HTMLResource, FreevoResource
 
-import config
-
 TRUE = 1
 FALSE = 0
 
@@ -63,8 +62,8 @@
             return String( fv.res )
 
         if action == 'remove':
-            recordings = self.recordclient.getScheduledRecordingsNow()
-            progs = recordings.getProgramList()
+            (status, schedule) = self.recordclient.getScheduledRecordingsNow()
+            progs = schedule.getProgramList()
 
             prog = None
             for what in progs.values():
@@ -87,8 +86,8 @@
 
             self.recordclient.scheduleRecordingNow(prog)
 
-        recordings = self.recordclient.getScheduledRecordingsNow()
-        progs = recordings.getProgramList()
+        (status, schedule) = self.recordclient.getScheduledRecordingsNow()
+        progs = schedule.getProgramList()
         favs = self.recordclient.getFavoritesNow()
 
         fv.printHeader(_('Scheduled Recordings'), 'styles/main.css', 
selected=_('Scheduled Recordings'))

Modified: branches/rel-1/freevo/src/www/htdocs/search.rpy
==============================================================================
--- branches/rel-1/freevo/src/www/htdocs/search.rpy     (original)
+++ branches/rel-1/freevo/src/www/htdocs/search.rpy     Tue Mar  4 16:57:50 2008
@@ -68,10 +68,10 @@
         (got_matches, progs) = self.recordclient.findMatchesNow(find, 
movies_only)
 
         if got_matches:
-            (result, favs) = self.recordclient.getFavoritesNow()
-            (result, recordings) = 
self.recordclient.getScheduledRecordingsNow()
-            if result:
-                rec_progs = recordings.getProgramList()
+            (status, favs) = self.recordclient.getFavoritesNow()
+            (status, schedule) = self.recordclient.getScheduledRecordingsNow()
+            if status:
+                rec_progs = schedule.getProgramList()
 
         fv.printHeader(_('Search'), 'styles/main.css', selected=_('Search'))
 

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Freevo-cvslog mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/freevo-cvslog

Reply via email to