weboob-devel/modules/champslibres/pages.py
Romain Bignon d61e15cf84 rename things related to browsers
weboob.tools.browser -> weboob.deprecated.browser
weboob.tools.parsers -> weboob.deprecated.browser.parsers
weboob.tools.mech -> weboob.deprecated.mech
weboob.browser2 -> weboob.browser
weboob.core.exceptions -> weboob.exceptions

Also, the new tree for browser2 is:

weboob.browser: import weboob.browser.browsers.* and weboob.browser.url.*
weboob.browser.browsers: all browsers (including PagesBrowser and LoginBrowser)
weboob.browser.url: the URL class
weboob.browser.profiles: all Profile classes
weboob.browser.sessions: WeboobSession and FuturesSession
weboob.browser.cookies: that's a cookies thing
weboob.browser.pages: all Page and derivated classes, and Form class
weboob.browser.exceptions: specific browser exceptions
weboob.browser.elements: AbstractElement classes, and 'method' decorator
weboob.browser.filters.*: all filters
2014-10-07 00:30:07 +02:00

95 lines
3.2 KiB
Python
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# -*- coding: utf-8 -*-
# Copyright(C) 2012 Florent Fourcot
#
# This file is part of weboob.
#
# weboob is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# weboob is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with weboob. If not, see <http://www.gnu.org/licenses/>.
from datetime import date
from weboob.capabilities.library import Book, Renew
from weboob.deprecated.browser import Page
from weboob.deprecated.mech import ClientForm
from weboob.tools.html import html2text
class SkipPage(Page):
pass
class HomePage(Page):
def on_loaded(self):
link = self.document.find('//a[@id="patronRSSFeedLinkComponent"]')
self.id = link.attrib['href'].split('/')[4]
def get_id(self):
return self.id
def txt2date(s):
split = s.split('-')
return date(int(split[2]) + 2000, int(split[1]), int(split[0]))
class RentedPage(Page):
def get_list(self):
for tr in self.document.getroot().xpath('//tr[@class="patFuncEntry"]'):
id = tr.xpath('td/input')[0].attrib["value"]
book = Book(id)
bigtitle = tr.xpath('td[@class="patFuncTitle"]/label/a')[0].text
book.name = bigtitle.split('/')[0]
book.author = bigtitle.split('/')[1]
date = tr.xpath('td[@class="patFuncStatus"]')[0].text
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')
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(Page):
pass
class BookedPage(Page):
# TODO: book some books...
pass
class LoginPage(Page):
def login(self, login, passwd):
self.browser.select_form(nr=0)
self.browser.form.set_all_readonly(False)
self.browser['code'] = login
self.browser['pin'] = passwd
self.browser.submit()