[popolemploi] fix place selection

This commit is contained in:
Bezleputh 2014-04-06 01:01:45 +02:00 committed by Romain Bignon
commit 76a7a8ab04
3 changed files with 142 additions and 240 deletions

View file

@ -39,142 +39,142 @@ class PopolemploiBackend(BaseBackend, ICapJob):
BROWSER = PopolemploiBrowser BROWSER = PopolemploiBrowser
places_choices = OrderedDict([(k, u'%s' % (v)) for k, v in sorted({ places_choices = OrderedDict([(k, u'%s' % (v)) for k, v in sorted({
'100|FRANCE|FRANCE': u'France entière', '100|FRANCE|O1': u'France entière',
'102|REGION|checkbox': u'Alsace', '102|REGION|42': u'Alsace',
'103|DEPARTEMENT|checkbox_66': u'-- Rhin (Bas) (67)', '103|DEPARTEMENT|67': u'-- Rhin (Bas) (67)',
'104|DEPARTEMENT|checkbox_67': u'-- Rhin (Haut) (68)', '104|DEPARTEMENT|68': u'-- Rhin (Haut) (68)',
'105|REGION|checkbox_0': u'Aquitaine', '105|REGION|72': u'Aquitaine',
'106|DEPARTEMENT|checkbox_21': u'-- Dordogne (24)', '106|DEPARTEMENT|24': u'-- Dordogne (24)',
'107|DEPARTEMENT|checkbox_32': u'-- Gironde (33)', '107|DEPARTEMENT|33': u'-- Gironde (33)',
'108|DEPARTEMENT|checkbox_39': u'-- Landes (40)', '108|DEPARTEMENT|40': u'-- Landes (40)',
'109|DEPARTEMENT|checkbox_46': u'-- Lot et Garonne (47)', '109|DEPARTEMENT|47': u'-- Lot et Garonne (47)',
'110|DEPARTEMENT|checkbox_63': u'-- Pyrénées Atlantiques (64)', '110|DEPARTEMENT|64': u'-- Pyrénées Atlantiques (64)',
'111|REGION|checkbox_1': u'Auvergne', '111|REGION|83': u'Auvergne',
'112|DEPARTEMENT|checkbox_1': u'-- Allier (03)', '112|DEPARTEMENT|03': u'-- Allier (03)',
'113|DEPARTEMENT|checkbox_13': u'-- Cantal (15)', '113|DEPARTEMENT|15': u'-- Cantal (15)',
'114|DEPARTEMENT|checkbox_42': u'-- Loire (Haute) (43)', '114|DEPARTEMENT|43': u'-- Loire (Haute) (43)',
'115|DEPARTEMENT|checkbox_62': u'-- Puy de Dôme (63)', '115|DEPARTEMENT|63': u'-- Puy de Dôme (63)',
'116|REGION|checkbox_2': u'Bourgogne', '116|REGION|26': u'Bourgogne',
'117|DEPARTEMENT|checkbox_18': u'-- Côte d\'Or (21)', '117|DEPARTEMENT|21': u'-- Côte d\'Or (21)',
'118|DEPARTEMENT|checkbox_57': u'-- Nièvre (58)', '118|DEPARTEMENT|58': u'-- Nièvre (58)',
'119|DEPARTEMENT|checkbox_70': u'-- Saône et Loire (71)', '119|DEPARTEMENT|71': u'-- Saône et Loire (71)',
'120|DEPARTEMENT|checkbox_88': u'-- Yonne (89)', '120|DEPARTEMENT|89': u'-- Yonne (89)',
'121|REGION|checkbox_3': u'Bretagne', '121|REGION|53': u'Bretagne',
'122|DEPARTEMENT|checkbox_19': u'-- Côtes d\'Armor (22)', '122|DEPARTEMENT|22': u'-- Côtes d\'Armor (22)',
'123|DEPARTEMENT|checkbox_26': u'-- Finistère (29)', '123|DEPARTEMENT|29': u'-- Finistère (29)',
'124|DEPARTEMENT|checkbox_34': u'-- Ille et Vilaine (35)', '124|DEPARTEMENT|35': u'-- Ille et Vilaine (35)',
'125|DEPARTEMENT|checkbox_54': u'-- Morbihan (56)', '125|DEPARTEMENT|56': u'-- Morbihan (56)',
'126|REGION|checkbox_4': u'Centre', '126|REGION|24': u'Centre',
'127|DEPARTEMENT|checkbox_16': u'-- Cher (18)', '127|DEPARTEMENT|18': u'-- Cher (18)',
'128|DEPARTEMENT|checkbox_25': u'-- Eure et Loir (28)', '128|DEPARTEMENT|28': u'-- Eure et Loir (28)',
'129|DEPARTEMENT|checkbox_35': u'-- Indre (36)', '129|DEPARTEMENT|36': u'-- Indre (36)',
'130|DEPARTEMENT|checkbox_36': u'-- Indre et Loire (37)', '130|DEPARTEMENT|37': u'-- Indre et Loire (37)',
'131|DEPARTEMENT|checkbox_40': u'-- Loir et Cher (41)', '131|DEPARTEMENT|41': u'-- Loir et Cher (41)',
'132|DEPARTEMENT|checkbox_44': u'-- Loiret (45)', '132|DEPARTEMENT|45': u'-- Loiret (45)',
'133|REGION|checkbox_5': u'Champagne Ardenne', '133|REGION|21': u'Champagne Ardenne',
'134|DEPARTEMENT|checkbox_6': u'-- Ardennes (08)', '134|DEPARTEMENT|08': u'-- Ardennes (08)',
'135|DEPARTEMENT|checkbox_8': u'-- Aube (10)', '135|DEPARTEMENT|10': u'-- Aube (10)',
'136|DEPARTEMENT|checkbox_50': u'-- Marne (51)', '136|DEPARTEMENT|51': u'-- Marne (51)',
'137|DEPARTEMENT|checkbox_51': u'-- Marne (Haute) (52)', '137|DEPARTEMENT|52': u'-- Marne (Haute) (52)',
'138|REGION|checkbox_6': u'Corse', '138|REGION|94': u'Corse',
'139|DEPARTEMENT|checkbox_26': u'-- Corse du Sud (2A)', '139|DEPARTEMENT|2A': u'-- Corse du Sud (2A)',
'140|DEPARTEMENT|checkbox_27': u'-- Haute Corse (2B)', '140|DEPARTEMENT|2B': u'-- Haute Corse (2B)',
'141|REGION|checkbox_7': u'Franche Comté', '141|REGION|43': u'Franche Comté',
'142|DEPARTEMENT|checkbox_89': u'-- Belfort (Territoire de) (90)', '142|DEPARTEMENT|90': u'-- Belfort (Territoire de) (90)',
'143|DEPARTEMENT|checkbox_22': u'-- Doubs (25)', '143|DEPARTEMENT|25': u'-- Doubs (25)',
'144|DEPARTEMENT|checkbox_38': u'-- Jura (39)', '144|DEPARTEMENT|39': u'-- Jura (39)',
'145|DEPARTEMENT|checkbox_69': u'-- Saône (Haute) (70)', '145|DEPARTEMENT|70': u'-- Saône (Haute) (70)',
'146|REGION|checkbox_8': u'Ile de France', '146|REGION|11': u'Ile de France',
'147|DEPARTEMENT|checkbox_90': u'-- Essonne (91)', '147|DEPARTEMENT|91': u'-- Essonne (91)',
'148|DEPARTEMENT|checkbox_91': u'-- Hauts de Seine (92)', '148|DEPARTEMENT|92': u'-- Hauts de Seine (92)',
'149|DEPARTEMENT|checkbox_74': u'-- Paris (Dept.) (75)', '149|DEPARTEMENT|75': u'-- Paris (Dept.) (75)',
'150|DEPARTEMENT|checkbox_92': u'-- Seine Saint Denis (93)', '150|DEPARTEMENT|93': u'-- Seine Saint Denis (93)',
'151|DEPARTEMENT|checkbox_76': u'-- Seine et Marne (77)', '151|DEPARTEMENT|77': u'-- Seine et Marne (77)',
'152|DEPARTEMENT|checkbox_94': u'-- Val d\'Oise (95)', '152|DEPARTEMENT|95': u'-- Val d\'Oise (95)',
'153|DEPARTEMENT|checkbox_93': u'-- Val de Marne (94)', '153|DEPARTEMENT|94': u'-- Val de Marne (94)',
'154|DEPARTEMENT|checkbox_77': u'-- Yvelines (78)', '154|DEPARTEMENT|78': u'-- Yvelines (78)',
'155|REGION|checkbox_9': u'Languedoc Roussillon', '155|REGION|91': u'Languedoc Roussillon',
'156|DEPARTEMENT|checkbox_9': u'-- Aude (11)', '156|DEPARTEMENT|11': u'-- Aude (11)',
'157|DEPARTEMENT|checkbox_39': u'-- Gard (30)', '157|DEPARTEMENT|30': u'-- Gard (30)',
'158|DEPARTEMENT|checkbox_33': u'-- Hérault (34)', '158|DEPARTEMENT|34': u'-- Hérault (34)',
'159|DEPARTEMENT|checkbox_47': u'-- Lozère (48)', '159|DEPARTEMENT|48': u'-- Lozère (48)',
'161|DEPARTEMENT|checkbox_65': u'-- Pyrénées Orientales (66)', '161|DEPARTEMENT|66': u'-- Pyrénées Orientales (66)',
'162|REGION|checkbox_10': u'Limousin', '162|REGION|74': u'Limousin',
'163|DEPARTEMENT|checkbox_17': u'-- Corrèze (19)', '163|DEPARTEMENT|19': u'-- Corrèze (19)',
'164|DEPARTEMENT|checkbox_20': u'-- Creuse (23)', '164|DEPARTEMENT|23': u'-- Creuse (23)',
'165|DEPARTEMENT|checkbox_86': u'-- Vienne (Haute) (87)', '165|DEPARTEMENT|87': u'-- Vienne (Haute) (87)',
'166|REGION|checkbox_11': u'Lorraine', '166|REGION|41': u'Lorraine',
'167|DEPARTEMENT|checkbox_53': u'-- Meurthe et Moselle (54)', '167|DEPARTEMENT|54': u'-- Meurthe et Moselle (54)',
'168|DEPARTEMENT|checkbox_54': u'-- Meuse (55)', '168|DEPARTEMENT|55': u'-- Meuse (55)',
'169|DEPARTEMENT|checkbox_56': u'-- Moselle (57)', '169|DEPARTEMENT|57': u'-- Moselle (57)',
'170|DEPARTEMENT|checkbox_87': u'-- Vosges (88)', '170|DEPARTEMENT|88': u'-- Vosges (88)',
'171|REGION|checkbox_12': u'Midi Pyrénées', '171|REGION|73': u'Midi Pyrénées',
'172|DEPARTEMENT|checkbox_7': u'-- Ariège (09)', '172|DEPARTEMENT|09': u'-- Ariège (09)',
'173|DEPARTEMENT|checkbox_10': u'-- Aveyron (12)', '173|DEPARTEMENT|12': u'-- Aveyron (12)',
'174|DEPARTEMENT|checkbox_30': u'-- Garonne (Haute) (31)', '174|DEPARTEMENT|31': u'-- Garonne (Haute) (31)',
'175|DEPARTEMENT|checkbox_31': u'-- Gers (32)', '175|DEPARTEMENT|32': u'-- Gers (32)',
'176|DEPARTEMENT|checkbox_45': u'-- Lot (46)', '176|DEPARTEMENT|46': u'-- Lot (46)',
'177|DEPARTEMENT|checkbox_64': u'-- Pyrénées (Hautes) (65)', '177|DEPARTEMENT|65': u'-- Pyrénées (Hautes) (65)',
'178|DEPARTEMENT|checkbox_80': u'-- Tarn (81)', '178|DEPARTEMENT|81': u'-- Tarn (81)',
'179|DEPARTEMENT|checkbox_81': u'-- Tarn et Garonne (82)', '179|DEPARTEMENT|82': u'-- Tarn et Garonne (82)',
'180|REGION|checkbox_13': u'Nord Pas de Calais', '180|REGION|31': u'Nord Pas de Calais',
'181|DEPARTEMENT|checkbox_58': u'-- Nord (59)', '181|DEPARTEMENT|59': u'-- Nord (59)',
'182|DEPARTEMENT|checkbox_61': u'-- Pas de Calais (62)', '182|DEPARTEMENT|62': u'-- Pas de Calais (62)',
'183|REGION|checkbox_14': u'Normandie (Basse)', '183|REGION|25': u'Normandie (Basse)',
'184|DEPARTEMENT|checkbox_12': u'-- Calvados (14)', '184|DEPARTEMENT|14': u'-- Calvados (14)',
'185|DEPARTEMENT|checkbox_49': u'-- Manche (50)', '185|DEPARTEMENT|50': u'-- Manche (50)',
'186|DEPARTEMENT|checkbox_60': u'-- Orne (61)', '186|DEPARTEMENT|61': u'-- Orne (61)',
'187|REGION|checkbox_15': u'Normandie (Haute)', '187|REGION|23': u'Normandie (Haute)',
'188|DEPARTEMENT|checkbox_24': u'-- Eure (27)', '188|DEPARTEMENT|27': u'-- Eure (27)',
'189|DEPARTEMENT|checkbox_75': u'-- Seine Maritime (76)', '189|DEPARTEMENT|76': u'-- Seine Maritime (76)',
'190|REGION|checkbox_16': u'Pays de la Loire', '190|REGION|52': u'Pays de la Loire',
'191|DEPARTEMENT|checkbox_43': u'-- Loire Atlantique (44)', '191|DEPARTEMENT|44': u'-- Loire Atlantique (44)',
'192|DEPARTEMENT|checkbox_48': u'-- Maine et Loire (49)', '192|DEPARTEMENT|49': u'-- Maine et Loire (49)',
'193|DEPARTEMENT|checkbox_52': u'-- Mayenne (53)', '193|DEPARTEMENT|53': u'-- Mayenne (53)',
'194|DEPARTEMENT|checkbox_71': u'-- Sarthe (72)', '194|DEPARTEMENT|72': u'-- Sarthe (72)',
'195|DEPARTEMENT|checkbox_84': u'-- Vendée (85)', '195|DEPARTEMENT|85': u'-- Vendée (85)',
'196|REGION|checkbox_17': u'Picardie', '196|REGION|22': u'Picardie',
'197|DEPARTEMENT|checkbox_0': u'-- Aisne (02)', '197|DEPARTEMENT|02': u'-- Aisne (02)',
'198|DEPARTEMENT|checkbox_59': u'-- Oise (60)', '198|DEPARTEMENT|60': u'-- Oise (60)',
'199|DEPARTEMENT|checkbox_79': u'-- Somme (80)', '199|DEPARTEMENT|80': u'-- Somme (80)',
'200|REGION|checkbox_18': u'Poitou Charentes', '200|REGION|54': u'Poitou Charentes',
'201|DEPARTEMENT|checkbox_14': u'-- Charente (16)', '201|DEPARTEMENT|16': u'-- Charente (16)',
'202|DEPARTEMENT|checkbox_15': u'-- Charente Maritime (17)', '202|DEPARTEMENT|17': u'-- Charente Maritime (17)',
'203|DEPARTEMENT|checkbox_78': u'-- Sèvres (Deux) (79)', '203|DEPARTEMENT|79': u'-- Sèvres (Deux) (79)',
'204|DEPARTEMENT|checkbox_85': u'-- Vienne (86)', '204|DEPARTEMENT|86': u'-- Vienne (86)',
'205|REGION|checkbox_19': u'Provence Alpes Côte d\'Azur', '205|REGION|93': u'Provence Alpes Côte d\'Azur',
'206|DEPARTEMENT|checkbox_3': u'-- Alpes (Hautes) (05)', '206|DEPARTEMENT|05': u'-- Alpes (Hautes) (05)',
'207|DEPARTEMENT|checkbox_4': u'-- Alpes Maritimes (06)', '207|DEPARTEMENT|06': u'-- Alpes Maritimes (06)',
'208|DEPARTEMENT|checkbox_2': u'-- Alpes de Haute Provence (04)', '208|DEPARTEMENT|04': u'-- Alpes de Haute Provence (04)',
'209|DEPARTEMENT|checkbox_13': u'-- Bouches du Rhône (13)', '209|DEPARTEMENT|13': u'-- Bouches du Rhône (13)',
'210|DEPARTEMENT|checkbox_82': u'-- Var (83)', '210|DEPARTEMENT|83': u'-- Var (83)',
'211|DEPARTEMENT|checkbox_83': u'-- Vaucluse (84)', '211|DEPARTEMENT|84': u'-- Vaucluse (84)',
'212|REGION|checkbox_20': u'Rhône Alpes', '212|REGION|82': u'Rhône Alpes',
'213|DEPARTEMENT|checkbox': u'-- Ain (01)', '213|DEPARTEMENT|01': u'-- Ain (01)',
'214|DEPARTEMENT|checkbox_5': u'-- Ardèche (07)', '214|DEPARTEMENT|07': u'-- Ardèche (07)',
'215|DEPARTEMENT|checkbox_23': u'-- Drôme (26)', '215|DEPARTEMENT|26': u'-- Drôme (26)',
'216|DEPARTEMENT|checkbox_37': u'-- Isère (38)', '216|DEPARTEMENT|38': u'-- Isère (38)',
'217|DEPARTEMENT|checkbox_41': u'-- Loire (42)', '217|DEPARTEMENT|42': u'-- Loire (42)',
'218|DEPARTEMENT|checkbox_68': u'-- Rhône (69)', '218|DEPARTEMENT|69': u'-- Rhône (69)',
'219|DEPARTEMENT|checkbox_72': u'-- Savoie (73)', '219|DEPARTEMENT|73': u'-- Savoie (73)',
'220|DEPARTEMENT|checkbox_73': u'-- Savoie (Haute) (74)', '220|DEPARTEMENT|74': u'-- Savoie (Haute) (74)',
'221|REGION|checkbox_21': u'Région Antilles / Guyane', '221|REGION|03': u'Région Antilles / Guyane',
'222|DEPARTEMENT|checkbox_95': u'-- Guadeloupe (971)', '222|DEPARTEMENT|971': u'-- Guadeloupe (971)',
'223|DEPARTEMENT|checkbox_97': u'-- Guyane (973)', '223|DEPARTEMENT|973': u'-- Guyane (973)',
'224|DEPARTEMENT|checkbox_96': u'-- Martinique (972)', '224|DEPARTEMENT|972': u'-- Martinique (972)',
'225|DEPARTEMENT|checkbox_101': u'-- Saint Barthélémy (977)', '225|DEPARTEMENT|977': u'-- Saint Barthélémy (977)',
'226|DEPARTEMENT|checkbox_102': u'-- Saint Martin (978)', '226|DEPARTEMENT|978': u'-- Saint Martin (978)',
'227|REGION|checkbox_22': u'Région Atlantique Nord', '227|REGION|98': u'Région Atlantique Nord',
'228|DEPARTEMENT|checkbox_99': u'-- Saint Pierre et Miquelon (975)', '228|DEPARTEMENT|975': u'-- Saint Pierre et Miquelon (975)',
'229|REGION|checkbox_23': u'Région Pacifique', '229|REGION|95': u'Région Pacifique',
'230|DEPARTEMENT|checkbox_107': u'-- Ile de Clipperton (989)', '230|DEPARTEMENT|989': u'-- Ile de Clipperton (989)',
'231|DEPARTEMENT|checkbox_106': u'-- Nouvelle Calédonie (988)', '231|DEPARTEMENT|988': u'-- Nouvelle Calédonie (988)',
'232|DEPARTEMENT|checkbox_105': u'-- Polynésie française (987)', '232|DEPARTEMENT|987': u'-- Polynésie française (987)',
'233|DEPARTEMENT|checkbox_103': u'-- Terres australes/antarctiques (984)', '233|DEPARTEMENT|984': u'-- Terres australes/antarctiques (984)',
'234|DEPARTEMENT|checkbox_104': u'-- Wallis et Futuna (986)', '234|DEPARTEMENT|986': u'-- Wallis et Futuna (986)',
'235|REGION|checkbox_24': u'Région Réunion / Mayotte', '235|REGION|97': u'Région Réunion / Mayotte',
'236|DEPARTEMENT|checkbox_100': u'-- Mayotte (976)', '236|DEPARTEMENT|976': u'-- Mayotte (976)',
'237|DEPARTEMENT|checkbox_98': u'-- Réunion (974)', '237|DEPARTEMENT|974': u'-- Réunion (974)',
}.iteritems())]) }.iteritems())])
type_contrat_choices = OrderedDict([(k, u'%s' % (v)) for k, v in sorted({ type_contrat_choices = OrderedDict([(k, u'%s' % (v)) for k, v in sorted({
@ -323,7 +323,7 @@ class PopolemploiBackend(BaseBackend, ICapJob):
}.iteritems())]) }.iteritems())])
CONFIG = BackendConfig(Value('metier', label='Job name', masked=False, default=''), CONFIG = BackendConfig(Value('metier', label='Job name', masked=False, default=''),
Value('place', label=u'Place', choices=places_choices, default='100|FRANCE|FRANCE'), Value('place', label=u'Place', choices=places_choices, default='100|FRANCE|01'),
Value('contrat', label=u'Contract', choices=type_contrat_choices, default=''), Value('contrat', label=u'Contract', choices=type_contrat_choices, default=''),
Value('salary', label=u'Salary', choices=salary_choices, default=''), Value('salary', label=u'Salary', choices=salary_choices, default=''),
Value('qualification', label=u'Qualification', choices=qualification_choices, default=''), Value('qualification', label=u'Qualification', choices=qualification_choices, default=''),

View file

@ -19,11 +19,9 @@
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 re
import urllib import urllib
import copy
from .pages import SearchPage, AdvertPage, ChangeLocationReturnPage, ChangeLocationPage from .pages import SearchPage, AdvertPage
from .job import PopolemploiJobAdvert from .job import PopolemploiJobAdvert
@ -36,8 +34,6 @@ class PopolemploiBrowser(BaseBrowser):
ENCODING = None ENCODING = None
PAGES = { PAGES = {
'http://candidat.pole-emploi.fr/candidat/rechercheoffres/avancee.recherche': ChangeLocationPage,
'http://candidat.pole-emploi.fr/candidat/rechercheoffres/avancee/(.*?)': ChangeLocationReturnPage,
'http://candidat.pole-emploi.fr/candidat/rechercheoffres/resultats(.*?)': SearchPage, 'http://candidat.pole-emploi.fr/candidat/rechercheoffres/resultats(.*?)': SearchPage,
'http://candidat.pole-emploi.fr/candidat/rechercheoffres/detail/(?P<id>.+)': AdvertPage, 'http://candidat.pole-emploi.fr/candidat/rechercheoffres/detail/(?P<id>.+)': AdvertPage,
} }
@ -51,48 +47,11 @@ class PopolemploiBrowser(BaseBrowser):
def advanced_search_job(self, metier='', place=None, contrat=None, salary=None, def advanced_search_job(self, metier='', place=None, contrat=None, salary=None,
qualification=None, limit_date=None, domain=None): qualification=None, limit_date=None, domain=None):
data = { splitted_place = place.split('|')
't:formdata': 'H4sIAAAAAAAAALVYz2/cRBj9sqilZFtafkkICSQgvSEn67YQkqZlu9lWgNNEXcolBzTr/XYzxfaYmfGue4ETR5A4I3HiiCoB9x7oASkHDvwH/AGckDiBxIxnbSfbJu16TKREyvM3b957M54Zzw9/wonJKrzN0d9Drn7ZcMhRLLfHJPIR10gQIB8jFwEpSgQN44AOKaLgsDPkToxO6Ds+C8MkciSJUUh+16F7ocZiFmEkhePR6NNe0g+pbI/R77BIYipxaYczH4XInghBWXT7yx/vbTRff7UBjV142jd1El7Y9e6QMVkOSDRa3u7fQV+ue9DEAENFf5OEKOH5AyU9yWk0Wk85nNOgo0HHtIPyJ41jCa9lJj9WJj1yKzfZK0xOrsDlo+IpcGKAzK8gkXQ4GVA24iyJVUirjI8cEhNVWORzSYXDMaD9gyHd0q1u6FZLPZRJ/M3K/bd+fvavXxqwoMzqMDgLtNnP4HNopPrvUxIWy85qEHuxgtjWfrq//1Pv3/sNlWmmarIGq/MLEShbKy0l4tKxIvpEoNPuK5D48jrFYGDiOn/7QfOPl3795/i4TppeLBW251X40Ex/cG9wcfj3d7/ZZ+YqRZqhacy5FuZUW810dvIeXJmfYMRJNBiwkNAIc0WnM3DTgPa0Rt1N8OxolqYrh8iWJDWenWMXspCmNBJO1zQy69jDI/rtF199/f327u9q7fLglB9QVfv+IJt85Vqm/13I5+KhcOLJVdioMGosETOZNzWWR25LahJ/F96Zn0XuqbxyUSey/yyIjJAb0K3YfmbMNd2Luax40oH2/LzTiGLCD1k9O8V3CP8oM10HubFfaTSjJETOTHk+RQy2rTFrUoslI2QDvc1y9bIkmTZQW/LpHPUUWk2dvBtjtgMQWVjWWMdg1qTG8hZ8aMXy6Cl5UGg8uQxrFd5fRezLT1Zy76dywI7OuO5CZ36KIUs0LiUKEhBazsTnyic986SmDoxYG7+t2fhadnQWivYw4RiStFCUAVsktaMziiqdGjGNkastzjcjeVIdREvIllIzLk424dr8JGMSaHOH1anEzpkH3VJjLfQWCSYRlThQZIXGxQza1JAtpdHVhqsVNh7dHqeHmlzamQztTtEaiC1OckK9TWoQ1NmajpVftYByjDkVWLywr0xL2tOSbllSd5f/hw/38T7curu0Xy7d2eXStaOzV3RhVtEFOzoLRfoGIkFRbik5YEdn8ZpHdIwkMUSFrDMG9QxaA7F9ZO5sZBWnVd66psjcR0bm1kBsBG7AeoWzpfrCHOr7hlzcMwViSWhEefBBhful4upQcqqWn5BJ4Qfq03mq8eWioGcKtlRBRxXU251xcB7ePIpSf2lhlJ1Ni2+GA9gTNjXdLMEbj1XOBYfrT3qBeo0lkkVHXT2U16YLh69FZ24Ki67/A14oWbX6FQAA',
'radiogroup': u'MOTS_CLES',
'set101': metier,
'set201': u'',
'grandDomaine': u'',
'sousDomaine': u'',
'theme': u'',
'domaineParTheme': u'',
'numeroOffre': u'',
'lieu': u'',
'lieuCode': u'',
'lieuCodePostal': u'',
'lieuType': u'',
'typeContrat': contrat,
'fourchetteSalaire': salary,
'select_1': qualification,
'heureMax': u'',
'experience': u'INDIFFERENT',
'dureeEmission': limit_date,
'secteurActiviteEntreprise1': domain,
'secteurActiviteEntreprise2': u'',
'select_2': u'',
'select_3': u'',
'langues1': u'',
'langues2': u'',
'textfield': u'',
}
if place.split('|')[1] == 'DEPARTEMENT':
place_type, place_number = self.choose_departement(place.split('|')[2], copy.deepcopy(data))
elif place.split('|')[1] == 'REGION':
place_type, place_number = self.choose_region(place.split('|')[2], copy.deepcopy(data))
else:
place_type = 'FRANCE'
place_number = '01'
params = 'A_%s_%s_%s__%s_P_%s_%s_%s_______INDIFFERENT______________%s' % (urllib.quote(metier).replace('%', '$00'), params = 'A_%s_%s_%s__%s_P_%s_%s_%s_______INDIFFERENT______________%s' % (urllib.quote(metier).replace('%', '$00'),
place_type, splitted_place[1],
place_number, splitted_place[2],
contrat, contrat,
domain, domain,
salary, salary,
@ -105,55 +64,6 @@ class PopolemploiBrowser(BaseBrowser):
assert self.is_on_page(SearchPage) assert self.is_on_page(SearchPage)
return self.page.iter_job_adverts() return self.page.iter_job_adverts()
def choose_region(self, place, data):
data['select'] = u'10'
data['radiogroup_0'] = u'REGION'
data['choixRegion:hiddenelementSubmit'] = u'choixRegion:hiddenelementSubmit'
self.location('http://candidat.pole-emploi.fr/candidat/rechercheoffres/avancee.recherche',
urllib.urlencode(data))
data2 = {
't:formdata': 'H4sIAAAAAAAAAOWZwWoUQRCGK8GIZD2IoHjxEIigl944u6vRIJIYoodBxSVn6emt2e040z129ybjxZO+hi+gBnwDIQdvvoMP4EXEkwe7XTfbIEgc0BxqYBjo6ar6v545/PC/+QwLeyvADIoRGn/rPDdo23yXK4HYvjPS0kqTon2EQ6mVvVloXVkDTJsh4xX3JczxCq0zz3pMaIOFzPyzrLRC5SxL/f7l5EuVX7l7/vXteYDawJkd358VXA3Zg2wHhYPZVVf/QU/n/eUX9zpf30LQ8xSew9xeF5KjD/V7xJNM135w74+DM26RrWd+kQu3JbEYLPfRjatL2wetT+c+fJ+HuRRaQitndHGfl+jgbBpOpx1Op913Rqrh2kSig1PTuY3Vrv+t2odGC7S2P85Kaa1vd7A/6ObfXn2cndy//1zd+PdpODSUnWh4bqF2wcHidOHxSrNGoc9iM+mnj5n4KjnihBxxhxxxlxxxjxzxNXLE18kRr5IjvkGEuDVzIFRMV4RMxXVFyFRsV4RMxXdFyFSMV4RMxXlFyFSsV4RMxXtFyFTMV4RMz30l9NxXQs99JfTcV0LPfSXH4b42YePoZbu8kAM0hS/Qsh6gNZMX1sBWbliFrBQhJSjH6jA+YHJUxsnBhh47rX4GF+73GGP75bv9W62li5MABgssfVEIYILak9PA5cIvISkGjfXmocIfuzXN7zgbAAA=',
place: 'on',
'validerLeChoixDesRegions': u'',
'validerLeChoixDesRegions:hiddenelementSubmit': 'validerLeChoixDesRegions:hiddenelementSubmit',
}
self.location('http://candidat.pole-emploi.fr/candidat/rechercheoffres/avancee/choisirlesregions.choisirdeslieux',
urllib.urlencode(data2))
return self.decode_place(self.page.url)
def decode_place(self, url):
re_url = re.compile('http://candidat.pole-emploi.fr/candidat/rechercheoffres/avancee/A_(.*?)_(.*?)_(.*?)__(.*?)_P_(.*?)_(.*?)_(.*?)_______INDIFFERENT______________(.*?)', re.DOTALL)
if re_url.match(url):
return re_url.search(url).group(2), re_url.search(url).group(3)
else:
return 'FRANCE', '01'
def choose_departement(self, place, data):
data['select'] = u'10'
data['radiogroup_0'] = u'DEPARTEMENT'
data['choixDepartement:hiddenelementSubmit'] = u'choixDepartement:hiddenelementSubmit'
self.location('http://candidat.pole-emploi.fr/candidat/rechercheoffres/avancee.recherche',
urllib.urlencode(data))
data2 = {
't:formdata': 'H4sIAAAAAAAAAO3dT2sTQRzG8alYkaYHEfTWg1BBL5u2afpHEamW6iFUofQsm82k3bq7s85M2njxpG/DN6AWfAdCD958D74ALyKePDjz1LYjglACVZinEArJ7swvn/bwpQ3M2y9ifK8tWlpm21K7h+r3tTTNdDetMimb97dVbnLdkWZV1qm2spSVNbcKpWqjRaL0VpLWqbsvsWktjdXP20mmtCzyrvte1qry1ycdd/303Ne6f/PB1Td3zwkx1OLSjtskKdJqK3nU3ZGZFSdfw/qshmp9uPHyYevbO+GHeiZeiLG9ZbF4yp3dhdnTrhq63dt/3b2bGpmsdN2TaWbXcln0pjekHdTXNw8an698/HFOjHVEI1OV1apYT0tpxeWOd2p6p+aG1Xm1dftwTisuHu072sgrpx35sVaZNGZj0C1zY3JVHez35vvfX386MTyjn958+Cs1ys7+3vOjMPoFxq2YOHriycwIq/nFJkZ4J5P/jcIsFZzCHBWcQosKTmGeCk6hTQWnsEAFp7BIBaewRAWnsByxQuOkmmKOx4Ah5noMGGLOx4Ah5n4MGGIOyIAh5oIMGGJOyIAh5oYMGGKOyICBFYm/OrEiwcCKBAMrEgysSDCwIsHAigQDKxIMrEgwsCLBwIrEf+1YkWBgRYKBFQkGViQYWJFgYEWCgRUJBlYkGFiRYGBF4lNPrEgwsCLBwIoEAysSDKxIMLAiwcCKBAMrEgysSDCwIj1DmxUJBlYkGFiRYGBFgoEVCQZWJBhYkWBgRYKBFQkGVqRnWGBFgoEVCQZWJBhYkWBgRYKBFQkGViQYWJFgYEWCgRXpGRZZkWBgRYKBFQkGViQYWJFgYEWCgRUJBlYkGFiRYGBFeoYlViQYWJFgYEWCgRUJBlYkGFiRYGBFgoEVCQZWJBhYkZ5hmRUJBlYkGFiRYGBFgoEVCQZWJBhYkWBgRYKBFQmGmCty8phhdibmjAwdYu7I0CHmkAwdYi7J0CHmlAwdYm7J0CHmmAwd/m1NrovOKe/dTYu8J3Xh7lL5sCdNL3jVaLHW10ktkzLzB+6Vg+r4JL4k3y7DQ/juqYFVFQ4CtH8eC7j56v3+nca1qcNTDWWB9f2phn7uC0enGE79mqYj/bTD1d9n/QkhTJ63oXIAAA==',
place: 'on',
'validerLeChoixDesDepartements': u'',
'validerLeChoixDesDepartements:hiddenelementSubmit': 'validerLeChoixDesDepartements:hiddenelementSubmit',
}
self.location('http://candidat.pole-emploi.fr/candidat/rechercheoffres/avancee/choisirlesdepartements.choisirdeslieux',
urllib.urlencode(data2))
return self.decode_place(self.page.url)
@id2url(PopolemploiJobAdvert.id2url) @id2url(PopolemploiJobAdvert.id2url)
def get_job_advert(self, url, advert): def get_job_advert(self, url, advert):
self.location(url) self.location(url)

View file

@ -25,7 +25,7 @@ import re
from .job import PopolemploiJobAdvert from .job import PopolemploiJobAdvert
__all__ = ['SearchPage', 'AdvertPage', 'ChangeLocationPage', 'ChangeLocationReturnPage'] __all__ = ['SearchPage', 'AdvertPage']
class SearchPage(BasePage): class SearchPage(BasePage):
@ -100,11 +100,3 @@ class AdvertPage(BasePage):
advert.pay = pay.strip() advert.pay = pay.strip()
return advert return advert
class ChangeLocationReturnPage(BasePage):
pass
class ChangeLocationPage(BasePage):
pass