Display renew confirmation/errors

This commit is contained in:
Florent Fourcot 2012-03-15 23:15:20 +01:00 committed by Romain Bignon
commit 65251c4ceb
5 changed files with 24 additions and 10 deletions

View file

@ -35,7 +35,7 @@ class ChampslibresBackend(BaseBackend, ICapBook):
VERSION = '0.c'
DESCRIPTION = 'Champs Libres (Rennes) Library'
LICENSE = 'AGPLv3+'
CONFIG = BackendConfig(Value('login', label='Account ID', regexp='^\d{1,15}|$'),
CONFIG = BackendConfig(Value('login', label='Account ID', regexp='^\d{1,15}|$'),
ValueBackendPassword('password', label='Password of account'),
)
BROWSER = ChampslibresBrowser
@ -47,8 +47,6 @@ class ChampslibresBackend(BaseBackend, ICapBook):
browser.login()
return browser
def get_rented(self):
for book in self.browser.get_rented_books_list():
yield book
@ -57,8 +55,7 @@ class ChampslibresBackend(BaseBackend, ICapBook):
raise NotImplementedError()
def renew_book(self, id):
self.browser.renew(id)
return self.browser.renew(id)
def iter_books(self):
#for book in self.get_booked():

View file

@ -29,7 +29,7 @@ __all__ = ['ChampslibresBrowser']
# Browser
class ChampslibresBrowser(BaseBrowser):
PROTOCOL = 'http'
ENCODING = None
ENCODING = 'utf-8'
PAGES = {
'.*login.*': LoginPage,
'.*home\?lang=frf.*': HomePage,
@ -66,6 +66,7 @@ class ChampslibresBrowser(BaseBrowser):
self.location('https://sbib.si.leschampslibres.fr/patroninfo~S1*frf/%s/items' % self.iduser)
self.page.renew(id)
self.page.confirm_renew()
return self.page.read_renew(id)
# TODO
def get_booked_books_list(self):

View file

@ -18,9 +18,10 @@
# along with weboob. If not, see <http://www.gnu.org/licenses/>.
from datetime import date
from weboob.capabilities.library import Book
from weboob.capabilities.library import Book, Renew
from weboob.tools.browser import BasePage
from weboob.tools.mech import ClientForm
from weboob.tools.misc import html2text
class SkipPage(BasePage):
@ -62,11 +63,20 @@ class RentedPage(BasePage):
self.browser.controls.append(ClientForm.TextControl('text', 'requestRenewSome', {'value': 'requestRenewSome'}))
self.browser.submit()
def confirm_renew(self):
def confirm_renew(self):
self.browser.select_form("checkout_form")
self.browser.form.set_all_readonly(False)
self.browser.submit(name='renewsome')
def read_renew(self, id):
for tr in self.document.getroot().xpath('//tr[@class="patFuncEntry"]'):
if len(tr.xpath('td/input[@value="%s"]' % id)) > 0:
message = self.browser.parser.tostring(tr.xpath('td[@class="patFuncStatus"]')[0])
renew = Renew(id)
renew.message = html2text(message).replace('\n', '')
return renew
class HistoryPage(BasePage):
pass