[Lolix] add search management in basic search

This commit is contained in:
Bezleputh 2013-10-16 21:00:08 +02:00
commit abbfad7ba1
3 changed files with 11 additions and 7 deletions

View file

@ -139,8 +139,7 @@ class LolixBackend(BaseBackend, ICapJob):
def search_job(self, pattern=None): def search_job(self, pattern=None):
with self.browser: with self.browser:
if not pattern: for job_advert in self.browser.advanced_search_job(pattern=pattern):
for job_advert in self.browser.advanced_search_job():
yield job_advert yield job_advert
def advanced_search_job(self): def advanced_search_job(self):

View file

@ -36,7 +36,7 @@ class LolixBrowser(BaseBrowser):
'%s://%s/offre.php\?id=(?P<id>.+)' % (PROTOCOL, DOMAIN): AdvertPage, '%s://%s/offre.php\?id=(?P<id>.+)' % (PROTOCOL, DOMAIN): AdvertPage,
} }
def advanced_search_job(self, region=0, poste=0, contrat=0, limit_date=0): def advanced_search_job(self, region=0, poste=0, contrat=0, limit_date=0, pattern=None):
data = { data = {
'mode': 'find', 'mode': 'find',
'page': '0', 'page': '0',
@ -48,7 +48,7 @@ class LolixBrowser(BaseBrowser):
self.location('%s://%s/search.php' % (self.PROTOCOL, self.DOMAIN), urllib.urlencode(data)) self.location('%s://%s/search.php' % (self.PROTOCOL, self.DOMAIN), urllib.urlencode(data))
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)
@id2url(LolixJobAdvert.id2url) @id2url(LolixJobAdvert.id2url)
def get_job_advert(self, url, advert): def get_job_advert(self, url, advert):

View file

@ -69,12 +69,17 @@ class AdvertPage(BasePage):
class SearchPage(BasePage): class SearchPage(BasePage):
def iter_job_adverts(self): def iter_job_adverts(self, pattern):
rows = self.document.getroot().xpath('//td[@class="Contenu"]/table/tr') rows = self.document.getroot().xpath('//td[@class="Contenu"]/table/tr')
for row in rows: for row in rows:
cols = self.is_row_advert(row) cols = self.is_row_advert(row)
if cols is not None: if cols is not None:
yield self.create_job_advert(cols) advert = self.create_job_advert(cols)
if pattern:
if pattern in advert.title:
yield advert
else:
yield advert
def is_row_advert(self, row): def is_row_advert(self, row):
cols = self.parser.select(row, 'td') cols = self.parser.select(row, 'td')