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.value import Value
|
||||
from weboob.tools.ordereddict import OrderedDict
|
||||
|
|
@ -29,7 +30,7 @@ from .job import PopolemploiJobAdvert
|
|||
__all__ = ['PopolemploiBackend']
|
||||
|
||||
|
||||
class PopolemploiBackend(BaseBackend, ICapJob):
|
||||
class PopolemploiBackend(BaseBackend, ICapJob, ICapCollection):
|
||||
NAME = 'popolemploi'
|
||||
DESCRIPTION = u'Pole Emploi website'
|
||||
MAINTAINER = u'Bezleputh'
|
||||
|
|
@ -202,10 +203,20 @@ class PopolemploiBackend(BaseBackend, ICapJob):
|
|||
|
||||
def search_job(self, pattern=None):
|
||||
with self.browser:
|
||||
return self.browser.search_job(pattern=pattern,
|
||||
metier=self.config['metier'].get(),
|
||||
place=self.config['place'].get(),
|
||||
contrat=self.config['contrat'].get())
|
||||
return self.browser.search_job(pattern=pattern)
|
||||
|
||||
def iter_resources(self, objs, split_path):
|
||||
with self.browser:
|
||||
collection = self.get_collection(objs, split_path)
|
||||
if collection.path_level == 0:
|
||||
return self.browser.advanced_search_job(metier=self.config['metier'].get(),
|
||||
place=self.config['place'].get(),
|
||||
contrat=self.config['contrat'].get())
|
||||
|
||||
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:
|
||||
|
|
|
|||
|
|
@ -39,19 +39,21 @@ class PopolemploiBrowser(BaseBrowser):
|
|||
}
|
||||
|
||||
def search_job(self, pattern=None, metier=None, place=None, contrat=None):
|
||||
if pattern:
|
||||
self.location('http://offre.pole-emploi.fr/resultat?offresPartenaires=true&libMetier=%s'
|
||||
% pattern.replace(' ', '+'))
|
||||
else:
|
||||
data = {
|
||||
't:formdata': 'H4sIAAAAAAAAAJVSwUocQRAtJ1HBPSQonoLIEo1BpPeiErJ42AQ8LYlkMRdPPW3N2trT3emu2Vkv3vIb+YIg5Bs85JZ/yAfkmlMO6d5hR0UY1oEZpqtfVb33qr7/gfnyDew7FGfowmuyzKHvDGRulcwk4luuFLoROq94jeIjrgWid3CUOWaR5YIJk+eFZsQtenKXTJ7lMWaNRk2e9aW+GBRpLqk3QvHeaMIx4caRMwK9n9x4L40+/vrj+qDVXksgOYFFUeEIVk7656FrR3E97HxMz1FQtw8tVJiH8h94jgTLdyADclIPu2MHz2OQxSCr8uD2GVtL8GKi8HNQ2Oefpgp7lcJyB7YbvMHwZ2QNCH7sGTdk3PJwqq3YCz44VDJlKffIemkIckGHEtXpxgCpsJvHN63fqz//JTAXREXRzqgo6gtcQTKO3ycEz6p2NcdHk+s9ltyD6dxcn+5mf7/9SoJ3E1ZlG9YbOCiJhY/ABYKn8TADPsKXypfQbsD5MHhB08oL1XGmnKr6Fmw2IOsrF0w7nHXD35mCjK52vGmv5+7v7b0RL922Ll/DqwaOljtCzcN8/dSG1p3Y7NkTQ/4DH0zoXggEAAA=',
|
||||
'emploiRecherche': metier,
|
||||
'lieu': place,
|
||||
'select': contrat,
|
||||
'partenaires': 'on',
|
||||
}
|
||||
self.location('http://candidat.pole-emploi.fr/candidat/rechercheoffres/simplifiee.recherche',
|
||||
urllib.urlencode(data))
|
||||
self.location('http://offre.pole-emploi.fr/resultat?offresPartenaires=true&libMetier=%s'
|
||||
% pattern.replace(' ', '+'))
|
||||
assert self.is_on_page(SearchPage)
|
||||
return self.page.iter_job_adverts()
|
||||
|
||||
def advanced_search_job(self, metier=None, place=None, contrat=None):
|
||||
data = {
|
||||
't:formdata': 'H4sIAAAAAAAAAJVSwUocQRAtJ1HBPSQonoLIEo1BpPeiErJ42AQ8LYlkMRdPPW3N2trT3emu2Vkv3vIb+YIg5Bs85JZ/yAfkmlMO6d5hR0UY1oEZpqtfVb33qr7/gfnyDew7FGfowmuyzKHvDGRulcwk4luuFLoROq94jeIjrgWid3CUOWaR5YIJk+eFZsQtenKXTJ7lMWaNRk2e9aW+GBRpLqk3QvHeaMIx4caRMwK9n9x4L40+/vrj+qDVXksgOYFFUeEIVk7656FrR3E97HxMz1FQtw8tVJiH8h94jgTLdyADclIPu2MHz2OQxSCr8uD2GVtL8GKi8HNQ2Oefpgp7lcJyB7YbvMHwZ2QNCH7sGTdk3PJwqq3YCz44VDJlKffIemkIckGHEtXpxgCpsJvHN63fqz//JTAXREXRzqgo6gtcQTKO3ycEz6p2NcdHk+s9ltyD6dxcn+5mf7/9SoJ3E1ZlG9YbOCiJhY/ABYKn8TADPsKXypfQbsD5MHhB08oL1XGmnKr6Fmw2IOsrF0w7nHXD35mCjK52vGmv5+7v7b0RL922Ll/DqwaOljtCzcN8/dSG1p3Y7NkTQ/4DH0zoXggEAAA=',
|
||||
'emploiRecherche': metier,
|
||||
'lieu': place,
|
||||
'select': contrat,
|
||||
'partenaires': 'on',
|
||||
}
|
||||
self.location('http://candidat.pole-emploi.fr/candidat/rechercheoffres/simplifiee.recherche',
|
||||
urllib.urlencode(data))
|
||||
assert self.is_on_page(SearchPage)
|
||||
return self.page.iter_job_adverts()
|
||||
|
||||
|
|
|
|||
|
|
@ -24,8 +24,14 @@ from weboob.tools.test import BackendTest
|
|||
class PopolemploiTest(BackendTest):
|
||||
BACKEND = 'popolemploi'
|
||||
|
||||
def test_popolemploi(self):
|
||||
def test_popolemploi_search(self):
|
||||
l = list(self.backend.search_job('infographiste'))
|
||||
assert len(l)
|
||||
advert = self.backend.get_job_advert(l[0].id, l[0])
|
||||
self.assertTrue(advert.url, 'URL for announce "%s" not found: %s' % (advert.id, advert.url))
|
||||
|
||||
def test_popolemploi_advanced_search(self):
|
||||
l = list(self.backend.iter_resources([], []))
|
||||
assert len(l)
|
||||
advert = self.backend.get_job_advert(l[0].id, l[0])
|
||||
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