change rules :
- search command will search using pattern (None accepted) - ls command will display result of advanced search
This commit is contained in:
parent
e2476bfb0e
commit
33641953fc
12 changed files with 360 additions and 292 deletions
|
|
@ -19,6 +19,7 @@
|
|||
|
||||
|
||||
from weboob.tools.backend import BaseBackend, BackendConfig
|
||||
from weboob.capabilities.collection import ICapCollection, CollectionNotFound
|
||||
from weboob.capabilities.job import ICapJob
|
||||
from weboob.tools.ordereddict import OrderedDict
|
||||
from weboob.tools.value import Value
|
||||
|
|
@ -28,7 +29,7 @@ from .job import ApecJobAdvert
|
|||
__all__ = ['ApecBackend']
|
||||
|
||||
|
||||
class ApecBackend(BaseBackend, ICapJob):
|
||||
class ApecBackend(BaseBackend, ICapJob, ICapCollection):
|
||||
NAME = 'apec'
|
||||
DESCRIPTION = u'apec website'
|
||||
MAINTAINER = u'Bezleputh'
|
||||
|
|
@ -229,16 +230,27 @@ class ApecBackend(BaseBackend, ICapJob):
|
|||
|
||||
def search_job(self, pattern=None):
|
||||
with self.browser:
|
||||
for job_advert in self.browser.search_job(pattern=pattern,
|
||||
region=self.config['place'].get(),
|
||||
fonction=self.config['fonction'].get(),
|
||||
secteur=self.config['secteur'].get(),
|
||||
salaire=self.config['salaire'].get(),
|
||||
contrat=self.config['contrat'].get(),
|
||||
limit_date=self.config['limit_date'].get(),
|
||||
level=self.config['level'].get()):
|
||||
for job_advert in self.browser.search_job(pattern=pattern):
|
||||
yield job_advert
|
||||
|
||||
def iter_resources(self, objs, split_path):
|
||||
with self.browser:
|
||||
collection = self.get_collection(objs, split_path)
|
||||
if collection.path_level == 0:
|
||||
for job_advert in self.browser.advanced_search_job(region=self.config['place'].get(),
|
||||
fonction=self.config['fonction'].get(),
|
||||
secteur=self.config['secteur'].get(),
|
||||
salaire=self.config['salaire'].get(),
|
||||
contrat=self.config['contrat'].get(),
|
||||
limit_date=self.config['limit_date'].get(),
|
||||
level=self.config['level'].get()):
|
||||
yield job_advert
|
||||
|
||||
def validate_collection(self, objs, collection):
|
||||
if collection.path_level == 0:
|
||||
return
|
||||
raise CollectionNotFound(collection.split_path)
|
||||
|
||||
def get_job_advert(self, _id, advert=None):
|
||||
with self.browser:
|
||||
return self.browser.get_job_advert(_id, advert)
|
||||
|
|
|
|||
|
|
@ -38,22 +38,24 @@ class ApecBrowser(BaseBrowser):
|
|||
'http://cadres.apec.fr/offres-emploi-cadres/offres-emploi-cadres/\d*_\d*_\d*_(.*?)________(.*?).html(.*?)': AdvertPage,
|
||||
}
|
||||
|
||||
def search_job(self, pattern=None, region=None, fonction=None, secteur=None, salaire=None, contrat=None, limit_date=None, level=None):
|
||||
if pattern:
|
||||
self.location('http://cadres.apec.fr/MesOffres/RechercheOffres/ApecRechercheOffre.jsp?keywords=%s'
|
||||
% pattern.replace(' ', '+'))
|
||||
else:
|
||||
self.location(
|
||||
'http://cadres.apec.fr/liste-offres-emploi-cadres/8_0___%s_%s_%s_%s_%s_%s_%s_offre-d-emploi.html'
|
||||
% (
|
||||
region,
|
||||
fonction,
|
||||
secteur,
|
||||
salaire,
|
||||
level,
|
||||
limit_date,
|
||||
contrat
|
||||
))
|
||||
def search_job(self, pattern=None):
|
||||
self.location('http://cadres.apec.fr/MesOffres/RechercheOffres/ApecRechercheOffre.jsp?keywords=%s'
|
||||
% pattern.replace(' ', '+'))
|
||||
assert self.is_on_page(SearchPage)
|
||||
return self.page.iter_job_adverts()
|
||||
|
||||
def advanced_search_job(self, region=None, fonction=None, secteur=None, salaire=None, contrat=None, limit_date=None, level=None):
|
||||
self.location(
|
||||
'http://cadres.apec.fr/liste-offres-emploi-cadres/8_0___%s_%s_%s_%s_%s_%s_%s_offre-d-emploi.html'
|
||||
% (
|
||||
region,
|
||||
fonction,
|
||||
secteur,
|
||||
salaire,
|
||||
level,
|
||||
limit_date,
|
||||
contrat
|
||||
))
|
||||
assert self.is_on_page(SearchPage)
|
||||
return self.page.iter_job_adverts()
|
||||
|
||||
|
|
|
|||
|
|
@ -24,8 +24,14 @@ from weboob.tools.test import BackendTest
|
|||
class ApecTest(BackendTest):
|
||||
BACKEND = 'apec'
|
||||
|
||||
def test_apec(self):
|
||||
def test_apec_search(self):
|
||||
l = list(self.backend.search_job(u'informaticien'))
|
||||
assert len(l)
|
||||
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))
|
||||
|
||||
def test_apec_advanced_search(self):
|
||||
l = list(self.backend.iter_resources([], []))
|
||||
assert len(l)
|
||||
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))
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue