Package Gnumed :: Package business :: Module gmExportTray
[frames] | no frames]

Source Code for Module Gnumed.business.gmExportTray

  1  """GNUmed export tray / filing cabinet. 
  2   
  3  Think shopping cart in a web shop. 
  4  """ 
  5  #============================================================ 
  6  __license__ = "GPL" 
  7  __author__ = "K.Hilbert <Karsten.Hilbert@gmx.net>" 
  8   
  9   
 10  import sys 
 11  import logging 
 12  import shutil 
 13  import os 
 14   
 15   
 16  if __name__ == '__main__': 
 17          sys.path.insert(0, '../../') 
 18  from Gnumed.pycommon import gmTools 
 19  #from Gnumed.pycommon import gmPG2 
 20  #from Gnumed.pycommon import gmDateTime 
 21   
 22  #from Gnumed.business import gmStaff 
 23   
 24  _log = logging.getLogger('gm.tray') 
 25  #============================================================ 
26 -class cExportTray(object):
27
28 - def __init__(self, directory):
29 if not gmTools.mkdir(directory = directory): 30 raise ValueError('[%s.__init__()]: path [%s] is not valid' % (self.__class__.__name__, directory)) 31 self.__dir = directory 32 _log.debug('export tray [%s]', self.__dir) 33 self.__tray_items = {}
34 #--------------------------------------------------------
35 - def add_file(self, filename=None, description=None, remove_source_file=False):
36 37 src_filename = filename 38 if description is None: 39 description = src_filename 40 41 # check for dupes 42 try: 43 item_fname = self.__tray_items[description] 44 item_md5 = gmTools.file2md5(filename = item_fname, return_hex = False) 45 src_md5 = gmTools.file2md5(filename = src_filename, return_hex = False) 46 if item_md5 == src_md5: 47 _log.debug('md5 match: [%s] (%s) already in tray as [%s]', description, src_filename, item_fname) 48 return True 49 except KeyError: 50 pass 51 except StandardError: 52 _log.exception('cannot check [%s] for dupes in export tray [%s]', src_filename, self.__dir) 53 return False 54 55 # move into tray 56 src_dir, src_name = os.path.split(src_filename) 57 target_filename = os.path.join(self.__dir, src_name) 58 try: 59 shutil.copy2(src_filename, target_filename) 60 except StandardError: 61 _log.exception('cannot copy [%s] into export tray as [%s]', src_filename, target_filename) 62 return False 63 self.__tray_items[description] = target_filename 64 65 # remove source 66 if remove_source_file: 67 try: 68 os.remove(src_filename) 69 except StandardError: 70 _log.exception('cannot remove [%s]', src_filename) 71 72 return True
73 #--------------------------------------------------------
74 - def _get_tray_items(self):
75 return self.__tray_items
76 77 items = property(_get_tray_items, lambda x:x) 78 #--------------------------------------------------------
79 - def _get_filenames(self):
80 return self.__tray_items.values()
81 82 filenames = property(_get_filenames, lambda x:x)
83 #============================================================ 84 if __name__ == '__main__': 85 86 if len(sys.argv) < 2: 87 sys.exit() 88 89 if sys.argv[1] != 'test': 90 sys.exit() 91 92 from Gnumed.pycommon import gmI18N 93 94 gmI18N.activate_locale() 95 gmI18N.install_domain() 96 97 #---------------------------------------
98 - def test_tray():
99 tray = cExportTray(os.path.expanduser('~/tmp/')) 100 print tray 101 print tray.items 102 print tray.filenames
103 #--------------------------------------- 104 test_tray() 105