# Call as: def blah(domain, mailbox): blah.isSenderDenied(domain, mailbox)\ .addCallback(_cbSomeReply) def _cbSomeReply(denied): pass def isSenderDenied(self, domain, mailbox): if not self.deniedSendersLoaded: return self.reloadDeniedSenders()\ .addCallback(self._cbIsSenderDenied, domain, mailbox) return defer.succeed(self._cbIsSenderDenied(None, domain, mailbox)) def _cbIsSenderDenied(self, lastResult, domain, mailbox): deniedSenders = self._deniedSenders if domain in deniedSenders: for expr, (source, reason) in deniedSenders[domain].iteritems(): if fnmatch.fnmatch(mailbox, expr): return source, reason