code: def initiate(self):
          
          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)
docs: If the returned deferred is fired with None,
          the item will be disabled as if did not exists.