sueurdemetal: fix date and category filters

This commit is contained in:
Vincent A 2014-01-15 16:10:19 +01:00
commit 0ffef61c4c
2 changed files with 31 additions and 5 deletions

View file

@ -55,9 +55,17 @@ class SueurDeMetalBackend(BaseBackend, ICapCalendarEvent):
yield self._make_event(d)
def search_events(self, query):
city_id = self.find_city_id(query.city)
for d in self.browser.get_concerts_city(city_id):
yield self._make_event(d)
if not self.has_matching_categories(query):
raise StopIteration()
if query.city:
city_id = self.find_city_id(query.city)
for d in self.browser.get_concerts_city(city_id):
if self._date_matches(d['date'], query):
yield self._make_event(d)
else:
for e in self.list_events(query.start_date, query.end_date):
yield e
def get_event(self, _id):
d = self.browser.get_concert(_id)
@ -110,6 +118,10 @@ class SueurDeMetalBackend(BaseBackend, ICapCalendarEvent):
if c['id'] == _id:
return c['name']
def _date_matches(self, date, query):
return ((not query.start_date or query.start_date <= date) and
(not query.end_date or date <= query.end_date))
def fill_concert(self, obj, fields):
if set(fields) & set(('price', 'location', 'description')):
return self.get_event(obj.id)

View file

@ -19,15 +19,29 @@
from weboob.tools.test import BackendTest
from weboob.capabilities.calendar import Query
from weboob.capabilities.calendar import Query, CATEGORIES
from datetime import datetime, timedelta
class SueurDeMetalTest(BackendTest):
BACKEND = 'sueurdemetal'
def test_sueurdemetal_searchcity(self):
q = Query()
q.city = 'paris'
q.city = u'paris'
self.assertTrue(len(list(self.backend.search_events(q))) > 0)
ev = self.backend.search_events(q).next()
self.assertTrue(self.backend.get_event(ev.id))
def test_sueurdemetal_datefrom(self):
q = Query()
later = (datetime.now() + timedelta(days=31))
q.start_date = later
ev = self.backend.search_events(q).next()
self.assertTrue(later.date() <= ev.start_date.date())
def test_sueurdemetal_nocategory(self):
q = Query()
q.categories = [CATEGORIES.CINE]
self.assertTrue(len(list(self.backend.search_events(q))) == 0)