| Viewing file:  callbacks.py (4.56 KB)      -rw-r--r-- Select action/file-type:
 
  (+) |  (+) |  (+) | Code (+) | Session (+) |  (+) | SDB (+) |  (+) |  (+) |  (+) |  (+) |  (+) | 
 
#!/usr/bin/python -tt# This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # the Free Software Foundation; either version 2 of the License, or
 # (at your option) any later version.
 #
 # This program is distributed in the hope that it will be useful,
 # but WITHOUT ANY WARRANTY; without even the implied warranty of
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 # GNU Library General Public License for more details.
 #
 # You should have received a copy of the GNU General Public License
 # along with this program; if not, write to the Free Software
 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 
 # imports
 
 import logging
 from urlgrabber.progress import BaseMeter,format_time,format_number
 
 
 # ProcessTransaction States
 
 PT_DOWNLOAD        = 10    # Start Download
 PT_DOWNLOAD_PKGS   = 11    # Packages to download
 PT_GPGCHECK        = 20    # Start Checkin Package Signatures
 PT_TEST_TRANS      = 30    # Start Test Transaction
 PT_TRANSACTION     = 40    # Start Transaction
 
 PT_MESSAGES = { PT_DOWNLOAD    : "Downloading Packages",
 PT_GPGCHECK    : "Check Package Signatures",
 PT_TEST_TRANS  : "Running Test Transaction",
 PT_TRANSACTION : "Running Transaction"}
 
 
 
 class ProcessTransBaseCallback:
 
 def __init__(self):
 self.logger = logging.getLogger('yum.verbose.ProcessTrasactionBaseCallback')
 
 def event(self,state,data=None):
 if state in PT_MESSAGES.keys():
 self.logger.info(PT_MESSAGES[state])
 
 class ProcessTransNoOutputCallback:
 def __init__(self):
 pass
 
 def event(self,state,data=None):
 pass
 
 class DownloadBaseCallback( BaseMeter ):
 """
 This is class is a base class to use by implement a download progress
 handler to be used with YumBase.repos.setProgressBar.
 
 Example:
 
 from yum.callbacks import DownloadBaseCallback
 
 class MyDownloadCallback(  DownloadBaseCallback ):
 
 def updateProgress(self,name,frac,fread,ftime):
 '''
 Update the progressbar
 @param name: filename
 @param frac: Progress fracment (0 -> 1)
 @param fread: formated string containing BytesRead
 @param ftime : formated string containing remaining or elapsed time
 '''
 pct = int( frac*100 )
 print " %s : %s " % (name,pct)
 
 
 if __name__ == '__main__':
 my = YumBase()
 my.doConfigSetup()
 dnlcb = MyDownloadCallback()
 my.repos.repos.setProgressBar( dnlcb )
 for pkg in my.pkgSack:
 print pkg.name
 
 """
 
 def __init__(self):
 BaseMeter.__init__( self )
 self.totSize = ""   # Total size to download in a formatted string (Kb, MB etc)
 
 def update( self, amount_read, now=None ):
 BaseMeter.update( self, amount_read, now )
 
 def _do_start( self, now=None ):
 name = self._getName()
 self.updateProgress(name,0.0,"","")
 if not self.size is None:
 self.totSize = format_number( self.size )
 
 def _do_update( self, amount_read, now=None ):
 fread = format_number( amount_read )
 name = self._getName()
 if self.size is None:
 # Elapsed time
 etime = self.re.elapsed_time()
 fetime = format_time( etime )
 frac = 0.0
 self.updateProgress(name,frac,fread,fetime)
 else:
 # Remaining time
 rtime = self.re.remaining_time()
 frtime = format_time( rtime )
 frac = self.re.fraction_read()
 self.updateProgress(name,frac,fread,frtime)
 
 
 def _do_end( self, amount_read, now=None ):
 total_time = format_time( self.re.elapsed_time() )
 total_size = format_number( amount_read )
 name = self._getName()
 self.updateProgress(name,1.0,total_size,total_time)
 
 def _getName(self):
 '''
 Get the name of the package being downloaded
 '''
 if self.text and type( self.text ) == type( "" ):
 name = self.text
 else:
 name = self.basename
 return name
 
 def updateProgress(self,name,frac,fread,ftime):
 '''
 Update the progressbar (Overload in child class)
 @param name: filename
 @param frac: Progress fracment (0 -> 1)
 @param fread: formated string containing BytesRead
 @param ftime : formated string containing remaining or elapsed time
 '''
 pass
 
 
 |