add simplified filters

This commit is contained in:
Bezleputh 2013-07-25 13:31:46 +02:00
commit 3010b662e3
2 changed files with 184 additions and 5 deletions

View file

@ -18,8 +18,10 @@
# along with weboob. If not, see <http://www.gnu.org/licenses/>. # along with weboob. If not, see <http://www.gnu.org/licenses/>.
from weboob.tools.backend import BaseBackend from weboob.tools.backend import BaseBackend, BackendConfig
from weboob.capabilities.job import ICapJob from weboob.capabilities.job import ICapJob
from weboob.tools.value import Value
from weboob.tools.ordereddict import OrderedDict
from .browser import PopolemploiBrowser from .browser import PopolemploiBrowser
from .job import PopolemploiJobAdvert from .job import PopolemploiJobAdvert
@ -36,9 +38,174 @@ class PopolemploiBackend(BaseBackend, ICapJob):
BROWSER = PopolemploiBrowser BROWSER = PopolemploiBrowser
places_choices = OrderedDict([(k, u'%s' % (v)) for k, v in sorted({
'': u'Tout type de lieux',
'FRANCE_01': u'France entière',
'REGION_42': u'Alsace',
'DEPARTEMENT_67': u'-- Rhin (Bas) (67)',
'DEPARTEMENT_68': u'-- Rhin (Haut) (68)',
'REGION_72': u'Aquitaine',
'DEPARTEMENT_24': u'-- Dordogne (24)',
'DEPARTEMENT_33': u'-- Gironde (33)',
'DEPARTEMENT_40': u'-- Landes (40)',
'DEPARTEMENT_47': u'-- Lot et Garonne (47)',
'DEPARTEMENT_64': u'-- Pyrénées Atlantiques (64)',
'REGION_83': u'Auvergne',
'DEPARTEMENT_03': u'-- Allier (03)',
'DEPARTEMENT_15': u'-- Cantal (15)',
'DEPARTEMENT_43': u'-- Loire (Haute) (43)',
'DEPARTEMENT_63': u'-- Puy de Dôme (63)',
'REGION_26': u'Bourgogne',
'DEPARTEMENT_21': u'-- Côte d\'Or (21)',
'DEPARTEMENT_58': u'-- Nièvre (58)',
'DEPARTEMENT_71': u'-- Saône et Loire (71)',
'DEPARTEMENT_89': u'-- Yonne (89)',
'REGION_53': u'Bretagne',
'DEPARTEMENT_22': u'-- Côtes d\'Armor (22)',
'DEPARTEMENT_29': u'-- Finistère (29)',
'DEPARTEMENT_35': u'-- Ille et Vilaine (35)',
'DEPARTEMENT_56': u'-- Morbihan (56)',
'REGION_24': u'Centre',
'DEPARTEMENT_18': u'-- Cher (18)',
'DEPARTEMENT_28': u'-- Eure etLoir (28)',
'DEPARTEMENT_36': u'-- Indre (36)',
'DEPARTEMENT_37': u'-- Indre et Loire (37)',
'DEPARTEMENT_41': u'-- Loir et Cher (41)',
'DEPARTEMENT_45': u'-- Loiret (45)',
'REGION_21': u'Champagne Ardenne',
'DEPARTEMENT_08': u'-- Ardennes (08)',
'DEPARTEMENT_10': u'-- Aube (10)',
'DEPARTEMENT_51': u'-- Marne (51)',
'DEPARTEMENT_52': u'-- Marne (Haute) (52)',
'REGION_94': u'Corse',
'DEPARTEMENT_2A': u'-- Corse du Sud (2A)',
'DEPARTEMENT_2B': u'-- Haute Corse (2B)',
'REGION_43': u'Franche Comté',
'DEPARTEMENT_90': u'-- Belfort (Territoire de) (90)',
'DEPARTEMENT_25': u'-- Doubs (25)',
'DEPARTEMENT_39': u'-- Jura (39)',
'DEPARTEMENT_70': u'-- Saône (Haute) (70)',
'REGION_11': u'Ile de France',
'DEPARTEMENT_91': u'-- Essonne (91)',
'DEPARTEMENT_92': u'-- Hauts de Seine (92)',
'DEPARTEMENT_75': u'-- Paris (Dept.) (75)',
'DEPARTEMENT_93': u'-- Seine Saint Denis (93)',
'DEPARTEMENT_77': u'-- Seine et Marne (77)',
'DEPARTEMENT_95': u'-- Val d\'Oise (95)',
'DEPARTEMENT_94': u'-- Val de Marne (94)',
'DEPARTEMENT_78': u'-- Yvelines (78)',
'REGION_91': u'Languedoc Roussillon',
'DEPARTEMENT_11': u'-- Aude (11)',
'DEPARTEMENT_30': u'-- Gard (30)',
'DEPARTEMENT_34': u'-- Hérault (34)',
'DEPARTEMENT_48': u'-- Lozère (48)',
'DEPARTEMENT_66': u'-- Pyrénées Orientales (66)',
'REGION_74': u'Limousin',
'DEPARTEMENT_19': u'-- Corrèze (19)',
'DEPARTEMENT_23': u'-- Creuse (23)',
'DEPARTEMENT_87': u'-- Vienne (Haute) (87)',
'REGION_41': u'Lorraine',
'DEPARTEMENT_54': u'-- Meurthe et Moselle (54)',
'DEPARTEMENT_55': u'-- Meuse (55)',
'DEPARTEMENT_57': u'-- Moselle (57)',
'DEPARTEMENT_88': u'-- Vosges (88)',
'REGION_73': u'Midi Pyrénées',
'DEPARTEMENT_09': u'-- Ariège (09)',
'DEPARTEMENT_12': u'-- Aveyron (12)',
'DEPARTEMENT_31': u'-- Garonne (Haute) (31)',
'DEPARTEMENT_32': u'-- Gers (32)',
'DEPARTEMENT_46': u'-- Lot (46)',
'DEPARTEMENT_65': u'-- Pyrénées (Hautes) (65)',
'DEPARTEMENT_81': u'-- Tarn (81)',
'DEPARTEMENT_82': u'-- Tarn et Garonne (82)',
'REGION_31': u'Nord Pas de Calais',
'DEPARTEMENT_59': u'-- Nord (59)',
'DEPARTEMENT_62': u'-- Pas de Calais (62)',
'REGION_25': u'Normandie (Basse)',
'DEPARTEMENT_14': u'-- Calvados (14)',
'DEPARTEMENT_50': u'-- Manche (50)',
'DEPARTEMENT_61': u'-- Orne (61)',
'REGION_23': u'Normandie (Haute)',
'DEPARTEMENT_27': u'-- Eure (27)',
'DEPARTEMENT_76': u'-- Seine Maritime (76)',
'REGION_52': u'Pays de la Loire',
'DEPARTEMENT_44': u'-- Loire Atlantique (44)',
'DEPARTEMENT_49': u'-- Maine et Loire (49)',
'DEPARTEMENT_53': u'-- Mayenne (53)',
'DEPARTEMENT_72': u'-- Sarthe (72)',
'DEPARTEMENT_85': u'-- Vendée (85)',
'REGION_22': u'Picardie',
'DEPARTEMENT_02': u'-- Aisne (02)',
'DEPARTEMENT_60': u'-- Oise (60)',
'DEPARTEMENT_80': u'-- Somme (80)',
'REGION_54': u'Poitou Charentes',
'DEPARTEMENT_16': u'-- Charente (16)',
'DEPARTEMENT_17': u'-- Charente Maritime (17)',
'DEPARTEMENT_79': u'-- Sèvres (Deux) (79)',
'DEPARTEMENT_86': u'-- Vienne (86)',
'REGION_93': u'Provence Alpes Côte d\'Azur',
'DEPARTEMENT_05': u'-- Alpes (Hautes) (05)',
'DEPARTEMENT_06': u'-- Alpes Maritimes (06)',
'DEPARTEMENT_04': u'-- Alpes de Haute Provence (04)',
'DEPARTEMENT_13': u'-- Bouches du Rhône (13)',
'DEPARTEMENT_83': u'-- Var (83)',
'DEPARTEMENT_84': u'-- Vaucluse (84)',
'REGION_82': u'Rhône Alpes',
'DEPARTEMENT_01': u'-- Ain (01)',
'DEPARTEMENT_07': u'-- Ardèche (07)',
'DEPARTEMENT_26': u'-- Drôme (26)',
'DEPARTEMENT_38': u'-- Isère (38)',
'DEPARTEMENT_42': u'-- Loire (42)',
'DEPARTEMENT_69': u'-- Rhône (69)',
'DEPARTEMENT_73': u'-- Savoie (73)',
'DEPARTEMENT_74': u'-- Savoie (Haute) (74)',
'REGION_96': u'Région Antilles / Guyane',
'DEPARTEMENT_971': u'-- Guadeloupe (971)',
'DEPARTEMENT_973': u'-- Guyane (973)',
'DEPARTEMENT_972': u'-- Martinique (972)',
'DEPARTEMENT_977': u'-- Saint Barthélémy (977)',
'DEPARTEMENT_978': u'-- Saint Martin (978)',
'REGION_98': u'Région Atlantique Nord',
'DEPARTEMENT_975': u'-- Saint Pierre et Miquelon (975)',
'REGION_95': u'Région Pacifique',
'DEPARTEMENT_989': u'-- Ile de Clipperton (989)',
'DEPARTEMENT_988': u'-- Nouvelle Calédonie (988)',
'DEPARTEMENT_987': u'-- Polynésie française (987)',
'DEPARTEMENT_984': u'-- Terres australes/antarctiques (984)',
'DEPARTEMENT_986': u'-- Wallis et Futuna (986)',
'REGION_97': u'Région Réunion / Mayotte',
'DEPARTEMENT_976': u'-- Mayotte (976)',
'DEPARTEMENT_974': u'-- Réunion (974)',
}.iteritems())])
type_contrat_choices = OrderedDict([(k, u'%s' % (v)) for k, v in sorted({
' ': u'Tous types de contrats',
'11': u'CDI tout public',
'14': u'CDI alternance',
'13': u'CDI insertion',
'12': u'CDD tout public',
'16': u'CDD alternance',
'15': u'CDD insertion',
'10': u'CDD Senior',
'3': u'Mission d\'intérim',
'4': u'Contrat de travail saisonnier',
'5': u'Contrat de travail intermittent',
'8': u'Franchise',
'7': u'Profession libérale',
'9': u'Reprise d\'entreprise',
'6': u'Profession commerciale',
}.iteritems())])
CONFIG = BackendConfig(Value('metier', label='Job name', masked=False, default=''),
Value('place', label=u'Place', choices=places_choices, default='FRANCE_01'),
Value('contrat', label=u'Contract', choices=type_contrat_choices, default=''))
def search_job(self, pattern=None): def search_job(self, pattern=None):
with self.browser: with self.browser:
return self.browser.search_job(pattern) return self.browser.search_job(pattern=pattern,
metier=self.config['metier'].get(),
place=self.config['place'].get(),
contrat=self.config['contrat'].get())
def get_job_advert(self, _id, advert=None): def get_job_advert(self, _id, advert=None):
with self.browser: with self.browser:

View file

@ -19,6 +19,7 @@
from weboob.tools.browser.decorators import id2url from weboob.tools.browser.decorators import id2url
from weboob.tools.browser import BaseBrowser from weboob.tools.browser import BaseBrowser
import urllib
from .pages import SearchPage, AdvertPage from .pages import SearchPage, AdvertPage
from .job import PopolemploiJobAdvert from .job import PopolemploiJobAdvert
@ -37,9 +38,20 @@ class PopolemploiBrowser(BaseBrowser):
'http://candidat.pole-emploi.fr/candidat/rechercheoffres/detail/(?P<id>.+)': AdvertPage, 'http://candidat.pole-emploi.fr/candidat/rechercheoffres/detail/(?P<id>.+)': AdvertPage,
} }
def search_job(self, pattern=None): def search_job(self, pattern=None, metier=None, place=None, contrat=None):
self.location('http://offre.pole-emploi.fr/resultat?offresPartenaires=true&libMetier=%s' if pattern:
% pattern.replace(' ', '+')) 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))
assert self.is_on_page(SearchPage) assert self.is_on_page(SearchPage)
return self.page.iter_job_adverts() return self.page.iter_job_adverts()