<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def get_objective_banks(self):
 """Gets all ``ObjectiveBanks``. In plenary mode, the returned list contains all known objective banks or an error results. Otherwise, the returned list may contain only those objective banks that are accessible through this session. return: (osid.learning.ObjectiveBankList) - a ``ObjectiveBankList`` raise: OperationFailed - unable to complete request raise: PermissionDenied - authorization failure *compliance: mandatory -- This method must be implemented.* """

        # Implemented from template for
        # osid.resource.BinLookupSession.get_bins_template
        # NOTE: This implementation currently ignores plenary view
        if self._catalog_session is not None:
            return self._catalog_session.get_catalogs()
        collection = JSONClientValidated('learning',
                                         collection='ObjectiveBank',
                                         runtime=self._runtime)
        result = collection.find().sort('_id', DESCENDING)

        return objects.ObjectiveBankList(result, runtime=self._runtime, proxy=self._proxy)