def get_sites(self, filter_func=lambda x: True):
        """
        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.
        """
        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
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.