log_source.py
changeset 103 0e829e6275dc
parent 102 e396613bc873
child 106 0690d715385d
equal deleted inserted replaced
102:e396613bc873 103:0e829e6275dc
   160             Return a sequence of dates, telling which days in the given month (as a datetime) have logs available
   160             Return a sequence of dates, telling which days in the given month (as a datetime) have logs available
   161         """
   161         """
   162 
   162 
   163         abstract
   163         abstract
   164     
   164     
   165     def get_modified (self, dt=None, after=None) :
   165     def get_modified (self, dt=None, after=None, until=None) :
   166         """
   166         """
   167             Returns a sequence of LogLines that may have been *modified* from their old values since the given datetime.
   167             Returns a sequence of LogLines that may have been *modified* from their old values since the given datetime.
   168 
   168 
   169             If the datetime is not given, *all* lines are returned.
   169             If the datetime is not given, *all* lines are returned.
   170 
   170 
   171             If after is given, only lines after said date will be returned, regardless of modification.
   171             If after is given, only lines after said date will be returned, regardless of modification.
       
   172             If until is given, only lines up to said date will be returned, regardless of modification.
   172 
   173 
   173             The LogLines should be in time order.
   174             The LogLines should be in time order.
   174         """
   175         """
   175 
   176 
   176         abstract
   177         abstract
   413                 return None
   414                 return None
   414 
   415 
   415             else :
   416             else :
   416                 raise
   417                 raise
   417     
   418     
   418     def _iter_logfile_dates (self, after=None) :
   419     def _iter_logfile_dates (self, after=None, until=None) :
   419         """
   420         """
   420             Yields a series of naive datetime objects representing the logfiles that are available, in time order.
   421             Yields a series of naive datetime objects representing the logfiles that are available, in time order.
   421 
   422 
   422             If after is given, only dates after said date will be returned
   423             If after is given, only dates after said date will be returned
       
   424             If until is given, only dates up to said date will be returned
   423         """
   425         """
   424 
   426 
   425         # listdir
   427         # listdir
   426         filenames = os.listdir(self.path)
   428         filenames = os.listdir(self.path)
   427 
   429 
   437             except :
   439             except :
   438                 # ignore
   440                 # ignore
   439                 continue
   441                 continue
   440 
   442 
   441             else :
   443             else :
       
   444                 # ignore before?
       
   445                 if after and date < after :
       
   446                     continue
       
   447                 
   442                 # ignore after?
   448                 # ignore after?
   443                 if after and date < after :
   449                 if until and date > until :
   444                     continue
   450                     continue
   445 
   451 
   446                 else :
   452                 else :
   447                     # yield
   453                     # yield
   448                     yield date
   454                     yield date
   615             # test for it
   621             # test for it
   616             if self._get_logfile_date(log_date, load=False) :
   622             if self._get_logfile_date(log_date, load=False) :
   617                 # valid
   623                 # valid
   618                 yield dt.date()
   624                 yield dt.date()
   619 
   625 
   620     def get_modified (self, dt=None, after=None) :
   626     def get_modified (self, dt=None, after=None, until=None) :
   621         """
   627         """
   622             Returns the contents off all logfiles with mtimes past the given date
   628             Returns the contents off all logfiles with mtimes past the given date
   623         """
   629         """
   624 
   630 
   625         # iterate through all available logfiles in date order, as datetimes, from the given date on
   631         # iterate through all available logfiles in date order, as datetimes, from the given date on
   626         for log_date in self._iter_logfile_dates(after) :
   632         for log_date in self._iter_logfile_dates(after, until) :
   627             # compare against dt?
   633             # compare against dt?
   628             if dt :
   634             if dt :
   629                 # stat
   635                 # stat
   630                 mtime = self._get_logfile_date(log_date, load=False, mtime=True)
   636                 mtime = self._get_logfile_date(log_date, load=False, mtime=True)
   631                 
   637