If the returned deferred is fired with None,
        the item will be disabled as if did not exists.

def initiate(self):
        """If the returned deferred is fired with None,
        the item will be disabled as if did not exists."""
        if not self.model.officer.is_item_allowed(self.model, self._name):
            return defer.succeed(None)

        if not callable(self._enabled):
            d = defer.succeed(self._enabled)
        else:
            context = self.model.make_context(key=self.name)
            d = self._enabled(None, context)
        return d.addCallback(lambda f: self if f else None)