From 2ba0c75ba580967f111651e162625792e6d09809 Mon Sep 17 00:00:00 2001 From: Sinisa Veseli <sveseli@aps.anl.gov> Date: Thu, 2 Mar 2017 05:26:47 +0000 Subject: [PATCH] resolve issue with non-printable characters in proposal institution; resolve problem with target directory for gridftp plugin --- src/python/dm/__init__.py | 2 +- src/python/dm/aps_bss/impl/bssClient.py | 8 ++++++-- .../processing/plugins/gridftpFileTransferPlugin.py | 11 ++++++++--- 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/src/python/dm/__init__.py b/src/python/dm/__init__.py index cf4f959e..63426004 100644 --- a/src/python/dm/__init__.py +++ b/src/python/dm/__init__.py @@ -1 +1 @@ -__version__ = "1.0 (2017.01.26)" +__version__ = "1.1 (2017.03.01)" diff --git a/src/python/dm/aps_bss/impl/bssClient.py b/src/python/dm/aps_bss/impl/bssClient.py index a5224e4c..75b56705 100644 --- a/src/python/dm/aps_bss/impl/bssClient.py +++ b/src/python/dm/aps_bss/impl/bssClient.py @@ -1,6 +1,7 @@ #!/usr/bin/env python import datetime +import string from suds.wsse import Security from suds.wsse import UsernameToken @@ -98,12 +99,15 @@ class BssClient: 'badge' : experimenter.badge, 'email' : experimenter.email, 'firstName' : experimenter.firstName, - 'instId' : experimenter.instId, - 'institution' : experimenter.institution, 'lastName' : experimenter.lastName }) if hasattr(experimenter, 'piFlag'): user['piFlag'] = experimenter.piFlag + if hasattr(experimenter, 'instId'): + user['instId'] = experimenter.instId + if hasattr(experimenter, 'institution'): + # Remove non-printable characters + user['institution'] = ''.join(filter(lambda x:x in string.printable, experimenter.institution)) experimenters.append(user) proposalInfo = ProposalInfo({ diff --git a/src/python/dm/common/processing/plugins/gridftpFileTransferPlugin.py b/src/python/dm/common/processing/plugins/gridftpFileTransferPlugin.py index 590e26d2..41957c3f 100755 --- a/src/python/dm/common/processing/plugins/gridftpFileTransferPlugin.py +++ b/src/python/dm/common/processing/plugins/gridftpFileTransferPlugin.py @@ -76,13 +76,18 @@ class GridftpFileTransferPlugin(FileTransferPlugin): (scheme, host, port, replacementDirPath) = FtpUtility.parseFtpUrl(dataDirectory) self.logger.debug('Replacement dir path: %s' % replacementDirPath) self.logger.debug('Number of original files: %s' % len(filePathsDict)) - self.logger.debug('Looking for existing files in %s' % storageDirectory) ftpUtility = SftpUtility(storageHost) destDirectory = storageDirectory if targetDirectory: destDirectory = '%s/%s/' % (destDirectory, targetDirectory) - storageFilePathsDict = ftpUtility.getFiles(destDirectory, {}, replacementDirPath) - self.logger.debug('There are %s files in %s' % (len(storageFilePathsDict), destDirectory)) + storageFilePathsDict = {} + try: + self.logger.debug('Looking for existing files in %s' % destDirectory) + storageFilePathsDict = ftpUtility.getFiles(destDirectory, {}, replacementDirPath) + self.logger.debug('There are %s files in %s' % (len(storageFilePathsDict), destDirectory)) + except Exception, ex: + self.logger.warn('Could not find existing files in %s, assuming there are none (got error: %s)' % (destDirectory,ex)) + # Remove file from plugin dict if we do not need to transfer it for (filePath,storageFilePathDict) in storageFilePathsDict.items(): filePathDict = filePathsDict.get(filePath) -- GitLab