code: def get_sites(self, filter_func=lambda x: True):
          
          response = self._session.get(BASE_URL_TSQUARE + 'site.json')
          response.raise_for_status() # raise an exception if not 200: OK
          site_list = response.json()['site_collection']
          if not site_list:
              # this means that this t-square session expired. It's up
              # to the user to re-authenticate.
              self._authenticated = False
              raise SessionExpiredException('The session has expired')
          result_list = []
          for site in site_list:
              t_site = TSquareSite(**site)
              if not hasattr(t_site, "props"):
                  t_site.props = {}
              if not 'banner-crn' in t_site.props:
                  t_site.props['banner-crn'] = None
              if not 'term' in t_site.props:
                  t_site.props['term'] = None
              if not 'term_eid' in t_site.props:
                  t_site.props['term_eid'] = None
              if filter_func(t_site):
                  result_list.append(t_site)
          return result_list
docs: Returns a list of TSquareSite objects that represent the sites available
          to a user.
          @param filter_func - A function taking in a Site object as a parameter
                               that returns a True or False, depending on whether
                               or not that site should be returned by this
                               function. Filter_func should be used to create
                               filters on the list of sites (i.e. user's
                               preferences on what sites to display by default).
                               If not specified, no filter is applied.
          @returns - A list of TSquareSite objects encapsulating t-square's JSON
                     response.