""" Defines the plugin to perform evaluation on the lfn name """ from __future__ import absolute_import from __future__ import division from __future__ import print_function __RCSID__ = "$Id $" from DIRAC.Resources.Catalog.ConditionPlugins.FCConditionBasePlugin import FCConditionBasePlugin class FilenamePlugin(FCConditionBasePlugin): """ This plugin is to be used when filtering based on the LFN name """ def __init__(self, conditions): """the condition can be any method of the python string object that can be evaluated as True or False: * endswith * find * isalnum * isalpha * isdigit * islower * isspace * istitle * isupper * startswith It should be written just like if you were calling the python call yourself. For example:: Filename=startswith('/lhcb') Filename=istitle() """ super(FilenamePlugin, self).__init__(conditions) def eval(self, **kwargs): """evaluate the parameters. The lfn argument is mandatory""" lfn = kwargs.get("lfn") if not lfn: return False evalStr = "'%s'.%s" % (lfn, self.conditions) try: ret = eval(evalStr) # Special case of 'find' which returns -1 if the pattern does not exist if self.conditions.startswith("find("): ret = False if ret == -1 else True return ret except Exception: return False