sueurdemetal: fix date and category filters
This commit is contained in:
parent
d7eb42f7d4
commit
0ffef61c4c
2 changed files with 31 additions and 5 deletions
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue