示例#1
0
    def test_item_filter_more(self):
        """
        Test the result when a few filters are applied to the results.
        """
        query_tuple = [('limit', 0), ('item:extended_info:i_brand', 'Apple'),
                       ('item:subcategory', 'Laptop Computer'),
                       ('extended_info:app_type', 'tech')]
        request = RequestFactory().get(
            '/?limit=0&item:extended_info:i_brand=Apple&'
            'item:subcategory=Laptop+Computer&'
            'extended_info:app_type=tech')

        spots = get_spots_by_filter(query_tuple)
        filtered_spots = get_filtered_items(spots, request)
        self.assertNotEqual(
            get_item_count(spots), get_item_count(filtered_spots),
            "Filters weren't applied. All items were returned!")
        self.assertEqual(get_item_count(filtered_spots), 8,
                         "Invalid number of filtered items returned")
        for spot in filtered_spots:
            for item in spot.items:
                self.assertEqual(
                    item.brand, "Apple",
                    "Invalid brand for spot %s item %s made through the "
                    "filters." % (spot.name, item.name))
                self.assertEqual(
                    item.subcategory, "Laptop Computer",
                    "Invalid category for spot %s item %s made through the "
                    "filters." % (spot.name, item.name))
示例#2
0
    def test_item_filter(self):
        """
        Test the result when a few filters are applied to the results.
        """
        query_tuple = [
            ('limit', 0),
            ('item:extended_info:i_brand', 'Apple'),
            ('extended_info:app_type', 'tech')
        ]
        request = RequestFactory().get(
            '/?limit=0&item:extended_info:i_brand=Apple&'
            'extended_info:app_type=tech'
        )

        spots = get_spots_by_filter(query_tuple)
        filtered_spots = get_filtered_items(spots, request)
        self.assertNotEqual(
            get_item_count(spots),
            get_item_count(filtered_spots),
            "Filters weren't applied. All items were returned!"
        )
        self.assertEqual(
            get_item_count(filtered_spots),
            15,
            "Invalid number of filtered items returned"
        )
        for spot in filtered_spots:
            for item in spot.items:
                self.assertEqual(
                    item.brand,
                    "Apple",
                    "Invalid brand for spot %s item %s made through the "
                    "filters." % (spot.name, item.name)
                )
示例#3
0
 def test_get_spots_by_filter_pasta_food_court(self):
     filtered_spots = get_spots_by_filter([
         ('extended_info:s_food_pasta', True),
         ('type', 'food_court'),
         ('extended_info:app_type', 'food')
     ])
     self.assertEqual(len(filtered_spots), 1)
示例#4
0
文件: item.py 项目: uw-it-aca/scout
def get_item_by_id(item_id):
    spot = get_spots_by_filter([
            ('item:id', item_id),
            ('extended_info:app_type', 'tech')
    ])
    if spot:
        spot = _filter_spot_items(item_id, spot[0])
    return spot
示例#5
0
def hybrid_tech_list_view(request, campus):
    spots = get_spots_by_filter([('has_items', 'true')])
    context = {"spots": spots,
               "campus": campus,
               "count": len(spots),
               "app_type": 'tech'}
    return render_to_response('hybridize/tech/list.html', context,
                              context_instance=RequestContext(request))
示例#6
0
    def test_item_nofilter(self):
        """
        Test the result when no filters are applied to the results.
        """
        query_tuple = [('limit', 0), ('extended_info:app_type', 'tech')]
        request = RequestFactory().get('/?limit=0&extended_info:app_type=tech')

        spots = get_spots_by_filter(query_tuple)
        filtered_spots = get_filtered_items(spots, request)
        self.assertEqual(
            spots, filtered_spots,
            "Filters weren't applied. All items weren't returned!")
        self.assertEqual(get_item_count(filtered_spots), 115,
                         "Invalid number of filtered items returned")
示例#7
0
    def test_get_spots_by_filter(self):
        """ tests function used by discover cards to load spaces with
        selected filters. Uses mock data that matches order of this filter.
        """

        filters = [('limit', 5), ('center_latitude', u'47.653811'),
                   ('center_longitude', u'-122.307815'), ('distance', 100000),
                   ('fuzzy_hours_start', 'Tuesday,05:00'),
                   ('fuzzy_hours_end', 'Tuesday,11:00'),
                   ('extended_info:app_type', 'food')]

        spots = get_spots_by_filter(filters)
        self.assertEqual(len(spots), 5)
        self.assertEqual(spots[0].extended_info[3].value, 'food')
示例#8
0
    def test_get_spots_by_filter(self):
        """ tests function used by discover cards to load spaces with
        selected filters. Uses mock data that matches order of this filter.
        """

        filters = [
                    ('limit', 5), ('center_latitude', u'47.653811'),
                    ('center_longitude', u'-122.307815'),
                    ('distance', 100000),
                    ('fuzzy_hours_start', 'Tuesday,05:00'),
                    ('fuzzy_hours_end', 'Tuesday,11:00'),
                    ('extended_info:app_type', 'food')
        ]

        spots = get_spots_by_filter(filters)
        self.assertEqual(len(spots), 5)
        self.assertEqual(spots[0].extended_info[3].value, 'food')
示例#9
0
    def test_item_invalid_filter(self):
        """
        Test the result when invalid filters are applied to the results.
        """
        query_tuple = [
            ('limit', 0),
            ('extended_info:app_type', 'invalid')
        ]
        request = RequestFactory().get(
            '/?limit=0&extended_info:app_type=invalid'
        )

        spots = get_spots_by_filter(query_tuple)
        filtered_spots = get_filtered_items(spots, request)
        self.assertEqual(
            spots,
            filtered_spots,
            "Filters weren't applied. All items weren't returned!"
        )
        self.assertEqual(
            get_item_count(filtered_spots),
            0,
            "Invalid number of filtered items returned"
        )
示例#10
0
 def test_get_spots_by_filter_error(self):
     """
     Assert get_spots_by_filter returns an empty list when encountering
     a failure.
     """
     self.assertEqual(get_spots_by_filter(), [])
示例#11
0
 def test_get_spots_by_filter_pasta_food_court(self):
     filtered_spots = get_spots_by_filter([
         ('extended_info:s_food_pasta', True), ('type', 'food_court'),
         ('extended_info:app_type', 'food')
     ])
     self.assertEqual(len(filtered_spots), 1)
示例#12
0
 def test_get_spots_by_filter_error(self):
     """
     Assert get_spots_by_filter returns an empty list when encountering
     a failure.
     """
     self.assertEqual(get_spots_by_filter(), [])
示例#13
0
def discover_card_view(request, campus, discover_category):
    # Will figure this out later
    lat = request.GET.get('latitude', None)
    lon = request.GET.get('longitude', None)

    # Hardcoded for food at the moment. Change it per need basis.
    discover_categories = {
        "open": {
            "title": "Open Now",
            "spot_type": "food",
            "filter_url": "open_now=true",
            "filter": [
                ('limit', 5),
                ('open_now', True),
                ('center_latitude', lat if lat else DEFAULT_LAT),
                ('center_longitude', lon if lon else DEFAULT_LON),
                ('distance', 100000),
                ('extended_info:app_type', 'food')
                ]
        },
        "morning": {
            "title": "Open Mornings (5am - 11am)",
            "spot_type": "food",
            "filter_url": "period0=morning",
            "filter": [
                ('limit', 5),
                ('center_latitude', lat if lat else DEFAULT_LAT),
                ('center_longitude', lon if lon else DEFAULT_LON),
                ('distance', 100000),
                ('extended_info:app_type', 'food')
                ] + get_period_filter('morning')

        },
        "late": {
            "title": "Open Late Night (10pm - 5am)",
            "spot_type": "food",
            "filter_url": "period0=late_night",
            "filter": [
                ('limit', 5),
                ('center_latitude', lat if lat else DEFAULT_LAT),
                ('center_longitude', lon if lon else DEFAULT_LON),
                ('distance', 100000),
                ('extended_info:app_type', 'food')
                ] + get_period_filter('late_night')
        },
        "studyoutdoors": {
            "title": "Outdoor Study Areas",
            "spot_type": "study",
            "filter_url": "type0=outdoor",
            "filter": [
                ('limit', 5),
                ('center_latitude', lat if lat else DEFAULT_LAT),
                ('center_longitude', lon if lon else DEFAULT_LON),
                ('distance', 100000),
                ('type', 'outdoor')
                ]
        },
        "studycomputerlab": {
            "title": "Computer Labs",
            "spot_type": "study",
            "filter_url": "type0=computer_lab",
            "filter": [
                ('limit', 5),
                ('center_latitude', lat if lat else DEFAULT_LAT),
                ('center_longitude', lon if lon else DEFAULT_LON),
                ('distance', 100000),
                ('type', 'computer_lab')
            ]

        },
    }

    try:
        discover_data = discover_categories[discover_category]
    except KeyError:
        return custom_404_response(request)

    discover_data["filter"].append(('extended_info:campus', campus))

    spots = get_spots_by_filter(discover_data["filter"])
    if len(spots) == 0:
        return custom_404_response(request)
    context = {
        "spots": spots,
        "campus": campus,
        "card_title": discover_data["title"],
        "spot_type": discover_data["spot_type"],
        "card_filter_url": discover_data["filter_url"]
    }

    return render_to_response('scout/discover_card.html',
                              context,
                              context_instance=RequestContext(request))
示例#14
0
def get_item_by_id(item_id):
    spot = get_spots_by_filter([('item:id', item_id),
                                ('extended_info:app_type', 'tech')])
    if spot:
        spot = _filter_spot_items(item_id, spot[0])
    return spot
示例#15
0
文件: views.py 项目: uw-it-aca/scout
    def get_context_data(self, **kwargs):
        self.template_name = kwargs['template_name']

        # if h_lat and h_lng is provided, use it
        # otherwise, user latitude and longitude

        # handle hybridize user lat/lng requests
        hlat = self.request.GET.get('h_lat', None)
        hlon = self.request.GET.get('h_lng', None)

        # handle standard lat/lng requests for web
        lat = self.request.GET.get('latitude', None)
        lon = self.request.GET.get('longitude', None)

        # Hardcoded for food at the moment. Change it per need basis.
        discover_categories = {
            "safestudy": {
                "title":
                "Study Spots Open Now",
                "spot_type":
                "study",
                "filter_url":
                "open_now=true",
                "filter": [
                    ('limit', 5),
                    ('open_now', True),
                    ('center_latitude',
                     hlat if hlat else lat if lat else DEFAULT_LAT),
                    ('center_longitude',
                     hlon if hlon else lon if lon else DEFAULT_LON),
                    ('distance', 100000),
                ]
            },
            "safefood": {
                "title":
                "Food Spots Open Now",
                "spot_type":
                "food",
                "filter_url":
                "open_now=true",
                "filter": [('limit', 5), ('open_now', True),
                           ('center_latitude',
                            hlat if hlat else lat if lat else DEFAULT_LAT),
                           ('center_longitude',
                            hlon if hlon else lon if lon else DEFAULT_LON),
                           ('distance', 100000),
                           ('extended_info:app_type', 'food')]
            },
            "open": {
                "title":
                "Open Now",
                "spot_type":
                "food",
                "filter_url":
                "open_now=true",
                "filter": [('limit', 5), ('open_now', True),
                           ('center_latitude',
                            hlat if hlat else lat if lat else DEFAULT_LAT),
                           ('center_longitude',
                            hlon if hlon else lon if lon else DEFAULT_LON),
                           ('distance', 100000),
                           ('extended_info:app_type', 'food')]
            },
            "morning": {
                "title":
                "Open Mornings (5am - 11am)",
                "spot_type":
                "food",
                "filter_url":
                "period0=morning",
                "filter": [('limit', 5),
                           ('center_latitude',
                            hlat if hlat else lat if lat else DEFAULT_LAT),
                           ('center_longitude',
                            hlon if hlon else lon if lon else DEFAULT_LON),
                           ('distance', 100000),
                           ('extended_info:app_type', 'food')] +
                get_period_filter('morning')
            },
            "late": {
                "title":
                "Open Late Night (10pm - 5am)",
                "spot_type":
                "food",
                "filter_url":
                "period0=late_night",
                "filter": [('limit', 5),
                           ('center_latitude',
                            hlat if hlat else lat if lat else DEFAULT_LAT),
                           ('center_longitude',
                            hlon if hlon else lon if lon else DEFAULT_LON),
                           ('distance', 100000),
                           ('extended_info:app_type', 'food')] +
                get_period_filter('late_night')
            },
            "studyoutdoors": {
                "title":
                "Outdoor Study Areas",
                "spot_type":
                "study",
                "filter_url":
                "type0=outdoor",
                "filter": [('limit', 5),
                           ('center_latitude',
                            hlat if hlat else lat if lat else DEFAULT_LAT),
                           ('center_longitude',
                            hlon if hlon else lon if lon else DEFAULT_LON),
                           ('distance', 100000), ('type', 'outdoor')]
            },
            "studycomputerlab": {
                "title":
                "Computer Labs",
                "spot_type":
                "study",
                "filter_url":
                "type0=computer_lab",
                "filter": [('limit', 5),
                           ('center_latitude',
                            hlat if hlat else lat if lat else DEFAULT_LAT),
                           ('center_longitude',
                            hlon if hlon else lon if lon else DEFAULT_LON),
                           ('distance', 100000), ('type', 'computer_lab')]
            },
            "studyrandom": {
                "title": "Places to study",
                "spot_type": "study",
                "filter_url": "",
                "filter": [('limit', 0)]
            },
            "foodrandom": {
                "title": "Places to eat",
                "spot_type": "food",
                "filter_url": "",
                "filter": [('extended_info:app_type', 'food'), ('limit', 0)]
            },
        }

        try:
            discover_data = discover_categories[kwargs['discover_category']]
        except KeyError:
            self.response_class = Response404
            self.template_name = "404.html"
            return custom_404_context(kwargs["campus"])

        discover_data["filter"].append(
            ('extended_info:campus', kwargs['campus']))

        spots = get_spots_by_filter(discover_data["filter"])
        if len(spots) == 0:
            self.response_class = Response404
            self.template_name = "404.html"
            return custom_404_context(kwargs["campus"])
        if kwargs['discover_category'] in ['foodrandom', 'studyrandom']:
            spots = get_random_limit_from_spots(spots, 5)

        context = {
            "spots": spots,
            "campus": kwargs['campus'],
            "card_title": discover_data["title"],
            "spot_type": discover_data["spot_type"],
            "card_filter_url": discover_data["filter_url"]
        }
        return context