[cci] add pattern management in basic search

This commit is contained in:
Bezleputh 2013-10-16 20:59:35 +02:00
commit 9cf7f01dae
4 changed files with 11 additions and 9 deletions

View file

@ -38,9 +38,8 @@ class CciBackend(BaseBackend, ICapJob):
BROWSER = CciBrowser BROWSER = CciBrowser
def search_job(self, pattern=None): def search_job(self, pattern=None):
if not pattern:
with self.browser: with self.browser:
for job_advert in self.browser.search_job(): for job_advert in self.browser.search_job(pattern):
yield job_advert yield job_advert
def advanced_search_job(self): def advanced_search_job(self):

View file

@ -35,10 +35,10 @@ class CciBrowser(BaseBrowser):
'%s://%s' % (PROTOCOL, DOMAIN): SearchPage, '%s://%s' % (PROTOCOL, DOMAIN): SearchPage,
} }
def search_job(self): def search_job(self, pattern):
self.location('%s://%s' % (self.PROTOCOL, self.DOMAIN)) self.location('%s://%s' % (self.PROTOCOL, self.DOMAIN))
assert self.is_on_page(SearchPage) assert self.is_on_page(SearchPage)
return self.page.iter_job_adverts() return self.page.iter_job_adverts(pattern)
def get_job_advert(self, _id, advert): def get_job_advert(self, _id, advert):
self.location('%s://%s' % (self.PROTOCOL, self.DOMAIN)) self.location('%s://%s' % (self.PROTOCOL, self.DOMAIN))

View file

@ -26,7 +26,7 @@ __all__ = ['SearchPage']
class SearchPage(BasePage): class SearchPage(BasePage):
def iter_job_adverts(self): def iter_job_adverts(self, pattern):
trs = self.document.getroot().xpath("//tr[@class='texteCol2TableauClair']") \ trs = self.document.getroot().xpath("//tr[@class='texteCol2TableauClair']") \
+ self.document.getroot().xpath("//tr[@class='texteCol2TableauFonce']") + self.document.getroot().xpath("//tr[@class='texteCol2TableauFonce']")
@ -38,6 +38,10 @@ class SearchPage(BasePage):
advert.society_name = u'CCI %s' % tds[3].text advert.society_name = u'CCI %s' % tds[3].text
advert.place = u'%s' % tds[0].text advert.place = u'%s' % tds[0].text
advert.job_name = u'%s' % tds[1].text advert.job_name = u'%s' % tds[1].text
if pattern is not None:
if pattern in advert.title or pattern in advert.job_name:
yield advert
else:
yield advert yield advert
def get_job_advert(self, _id, advert): def get_job_advert(self, _id, advert):

View file

@ -29,4 +29,3 @@ class CciTest(BackendTest):
assert len(l) assert len(l)
advert = self.backend.get_job_advert(l[0].id, None) advert = self.backend.get_job_advert(l[0].id, None)
self.assertTrue(advert.url, 'URL for announce "%s" not found: %s' % (advert.id, advert.url)) self.assertTrue(advert.url, 'URL for announce "%s" not found: %s' % (advert.id, advert.url))