예제 #1
0
    def test_user_is_located(self):
        user = AnonymousUser()
        self.assertFalse(models.user_is_located(user))

        user = self.user1
        self.assertFalse(models.user_is_located(user))

        geoloc = models.Geolocation(lat=12.2, lon=12.2)
        geoloc.save()
        self.famille.geolocation = geoloc
        self.famille.save()
        self.assertTrue(models.user_is_located(user))

        geoloc.has_error = True
        geoloc.save()
        self.assertFalse(models.user_is_located(user))
예제 #2
0
    def filters_post_sorting(self, object_list):
        """
        Apply distance filtering after sorting since it returns a list.
        """
        distance = self.__request.GET.get("distance__iexact")
        postal_code = self.__request.GET.get("pc__iexact")
        tarif = self.__request.GET.get("tarif__in")
        user = self.__request.user
        del self.__request

        object_list = [obj for obj in object_list if obj.visibility_score_is_enough]

        if tarif and len(tarif.split(",")) == 2:
           object_list = self.filter_tarif(tarif.split(","), object_list)

        if postal_code:
            return self.filter_postal_code(postal_code, object_list)

        if not distance or not models.user_is_located(user):
            return object_list

        related = models.get_user_related(user)
        return self.filter_distance(distance, related.geolocation, object_list)