def get_all_regions(self):
        '''
        Request a list of regions from Datapoint. Returns each Region
        as a Site object. Regions rarely change, so we cache the response
        for one hour to minimise requests to API.
        '''
        if (time() - self.regions_last_update) < self.regions_update_time:
            return self.regions_last_request

        response = self.call_api(self.all_regions_path)
        regions = []
        for location in response['Locations']['Location']:
            region = Site()
            region.id = location['@id']
            region.region = location['@name']
            region.name = REGION_NAMES[location['@name']]
            regions.append(region)

        self.regions_last_update = time()
        self.regions_last_request = regions
        return regions
Request a list of regions from Datapoint. Returns each Region
        as a Site object. Regions rarely change, so we cache the response
        for one hour to minimise requests to API.