From 03f998a33f9653de50124ffca062c09be2351bf3 Mon Sep 17 00:00:00 2001 From: Florent Fourcot Date: Thu, 15 Mar 2012 22:35:03 +0100 Subject: [PATCH] Renew command on champslibres --- modules/champslibres/backend.py | 4 ++++ modules/champslibres/browser.py | 6 ++++++ modules/champslibres/pages.py | 14 ++++++++++++++ 3 files changed, 24 insertions(+) diff --git a/modules/champslibres/backend.py b/modules/champslibres/backend.py index 696ca66f..74491024 100644 --- a/modules/champslibres/backend.py +++ b/modules/champslibres/backend.py @@ -56,6 +56,10 @@ class ChampslibresBackend(BaseBackend, ICapBook): def get_booked(self): raise NotImplementedError() + def renew_book(self, id): + self.browser.renew(id) + + def iter_books(self): #for book in self.get_booked(): # yield book diff --git a/modules/champslibres/browser.py b/modules/champslibres/browser.py index 9e36c245..49fa1806 100644 --- a/modules/champslibres/browser.py +++ b/modules/champslibres/browser.py @@ -61,6 +61,12 @@ class ChampslibresBrowser(BaseBrowser): self.location('https://sbib.si.leschampslibres.fr/patroninfo~S1*frf/%s/items' % self.iduser) return self.page.get_list() + def renew(self, id): + if not self.is_on_page(RentedPage): + self.location('https://sbib.si.leschampslibres.fr/patroninfo~S1*frf/%s/items' % self.iduser) + self.page.renew(id) + self.page.confirm_renew() + # TODO def get_booked_books_list(self): return [] diff --git a/modules/champslibres/pages.py b/modules/champslibres/pages.py index e1c203c3..aa4cd5ba 100644 --- a/modules/champslibres/pages.py +++ b/modules/champslibres/pages.py @@ -20,6 +20,7 @@ from datetime import date from weboob.capabilities.library import Book from weboob.tools.browser import BasePage +from weboob.tools.mech import ClientForm class SkipPage(BasePage): @@ -52,6 +53,19 @@ class RentedPage(BasePage): book.date = txt2date(date.replace('RETOUR', '')) yield book + def renew(self, id): + # find the good box + input = self.document.find('//input[@value="%s"]' % id) + self.browser.select_form("checkout_form") + self.browser.form.set_all_readonly(False) + self.browser.controls.append(ClientForm.TextControl('text', input.attrib['name'], {'value': id})) + self.browser.controls.append(ClientForm.TextControl('text', 'requestRenewSome', {'value': 'requestRenewSome'})) + self.browser.submit() + + def confirm_renew(self): + self.browser.select_form("checkout_form") + self.browser.form.set_all_readonly(False) + self.browser.submit(name='renewsome') class HistoryPage(BasePage): pass