Move browser2 from weboob/tools/b2 to weboob/browser2

This commit is contained in:
Florent 2014-10-02 11:01:34 +02:00
commit a019819f9d
90 changed files with 211 additions and 211 deletions

View file

@ -65,7 +65,7 @@ In a module directory, there are commonly these files:
* **__init__.py** - needed in every python modules, it exports your :class:`Module <weboob.tools.backend.Module>` class. * **__init__.py** - needed in every python modules, it exports your :class:`Module <weboob.tools.backend.Module>` class.
* **module.py** - defines the main class of your module, which derives :class:`Module <weboob.tools.backend.Module>`. * **module.py** - defines the main class of your module, which derives :class:`Module <weboob.tools.backend.Module>`.
* **browser.py** - your browser, derived from :class:`Browser <weboob.tools.browser2.browser.Browser>`, is called by your module to interact with the supported website. * **browser.py** - your browser, derived from :class:`Browser <weboob.browser2.browser.Browser>`, is called by your module to interact with the supported website.
* **pages.py** - all website's pages handled by the browser are defined here * **pages.py** - all website's pages handled by the browser are defined here
* **test.py** - functional tests * **test.py** - functional tests
* **favicon.png** - a 64x64 transparent PNG icon * **favicon.png** - a 64x64 transparent PNG icon
@ -179,14 +179,14 @@ what are expected returned objects, and what exceptions it may raises.
Browser Browser
******* *******
Most of modules use a class derived from :class:`PagesBrowser <weboob.tools.browser2.page.PagesBrowser>` or Most of modules use a class derived from :class:`PagesBrowser <weboob.browser2.page.PagesBrowser>` or
:class:`LoginBrowser <weboob.tools.browser2.page.LoginBrowser>` (for authenticated websites) to interact with a website. :class:`LoginBrowser <weboob.browser2.page.LoginBrowser>` (for authenticated websites) to interact with a website.
Edit ``browser.py``:: Edit ``browser.py``::
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
from weboob.tools.browser2 import PagesBrowser from weboob.browser2 import PagesBrowser
__all__ = ['ExampleBrowser'] __all__ = ['ExampleBrowser']
@ -195,7 +195,7 @@ Edit ``browser.py``::
There are several possible class attributes: There are several possible class attributes:
* **BASEURL** - base url of website used for absolute paths given to :class:`open() <weboob.tools.browser2.page.PagesBrowser.open>` or :class:`location() <weboob.tools.browser2.page.PagesBrowser.location>` * **BASEURL** - base url of website used for absolute paths given to :class:`open() <weboob.browser2.page.PagesBrowser.open>` or :class:`location() <weboob.browser2.page.PagesBrowser.location>`
* **PROFILE** - defines the behavior of your browser against the website. By default this is Firefox, but you can import other profiles * **PROFILE** - defines the behavior of your browser against the website. By default this is Firefox, but you can import other profiles
* **TIMEOUT** - defines the timeout for requests (defaults to 10 seconds) * **TIMEOUT** - defines the timeout for requests (defaults to 10 seconds)
* **VERIFY** - SSL verification (if the protocol used is **https**) * **VERIFY** - SSL verification (if the protocol used is **https**)
@ -205,15 +205,15 @@ Pages
For each page you want to handle, you have to create an associated class derived from one of these classes: For each page you want to handle, you have to create an associated class derived from one of these classes:
* :class:`HTMLPage <weboob.tools.browser2.page.HTMLPage>` - a HTML page * :class:`HTMLPage <weboob.browser2.page.HTMLPage>` - a HTML page
* :class:`XMLPage <weboob.tools.browser2.page.XMLPage>` - a XML document * :class:`XMLPage <weboob.browser2.page.XMLPage>` - a XML document
* :class:`JsonPage <weboob.tools.browser2.page.JsonPage>` - a Json object * :class:`JsonPage <weboob.browser2.page.JsonPage>` - a Json object
In the file ``pages.py``, you can write, for example:: In the file ``pages.py``, you can write, for example::
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
from weboob.tools.browser2.page import HTMLPage from weboob.browser2.page import HTMLPage
__all__ = ['IndexPage', 'ListPage'] __all__ = ['IndexPage', 'ListPage']
@ -227,9 +227,9 @@ In the file ``pages.py``, you can write, for example::
``IndexPage`` is the class we will use to get information from the home page of the website, and ``ListPage`` will handle pages ``IndexPage`` is the class we will use to get information from the home page of the website, and ``ListPage`` will handle pages
which list accounts. which list accounts.
Then, you have to declare them in your browser, with the :class:`URL <weboob.tools.browser2.page.URL>` object:: Then, you have to declare them in your browser, with the :class:`URL <weboob.browser2.page.URL>` object::
from weboob.tools.browser2.page import PagesBrowser, URL from weboob.browser2.page import PagesBrowser, URL
from .pages import IndexPage, ListPage from .pages import IndexPage, ListPage
# ... # ...
@ -257,9 +257,9 @@ For example, we can now implement some methods in ``ExampleBrowser``::
return self.page.iter_accounts_list() return self.page.iter_accounts_list()
When calling the :func:`go() <weboob.tools.browser2.page.URL.go>` method, it reads the first regexp url of our :class:`URL <weboob.tools.browser2.page.URL>` object, and go on the page. When calling the :func:`go() <weboob.browser2.page.URL.go>` method, it reads the first regexp url of our :class:`URL <weboob.browser2.page.URL>` object, and go on the page.
:func:`stay_or_go() <weboob.tools.browser2.page.URL.stay_or_go>` is used when you want to relocate on the page only if we aren't already on it. :func:`stay_or_go() <weboob.browser2.page.URL.stay_or_go>` is used when you want to relocate on the page only if we aren't already on it.
Once we are on the ``ListPage``, we can call every methods of the ``page`` object. Once we are on the ``ListPage``, we can call every methods of the ``page`` object.
@ -295,8 +295,8 @@ the method :func:`create_default_browser <weboob.tools.backend.Module.create_def
def create_default_browser(self): def create_default_browser(self):
return self.create_browser(self.config['username'].get(), self.config['password'].get()) return self.create_browser(self.config['username'].get(), self.config['password'].get())
On the browser side, you need to inherit from :func:`LoginBrowser <weboob.tools.browser2.page.LoginBrowser>` and to implement the function On the browser side, you need to inherit from :func:`LoginBrowser <weboob.browser2.page.LoginBrowser>` and to implement the function
:func:`do_login <weboob.tools.browser2.page.LoginBrowser.do_login>`:: :func:`do_login <weboob.browser2.page.LoginBrowser.do_login>`::
class ExampleBrowser(LoginBrowser): class ExampleBrowser(LoginBrowser):
login = URL('/login', LoginPage) login = URL('/login', LoginPage)
@ -319,7 +319,7 @@ Also, your ``LoginPage`` may look like::
form['password'] = password form['password'] = password
form.submit() form.submit()
Then, each method on your browser which need your user to be authenticated may be decorated by :func:`need_login <weboob.tools.browser2.page.need_login>`:: Then, each method on your browser which need your user to be authenticated may be decorated by :func:`need_login <weboob.browser2.page.need_login>`::
class ExampleBrowser(LoginBrowser): class ExampleBrowser(LoginBrowser):
accounts = URL('/accounts$', ListPage) accounts = URL('/accounts$', ListPage)
@ -329,9 +329,9 @@ Then, each method on your browser which need your user to be authenticated may b
self.accounts.stay_or_go() self.accounts.stay_or_go()
return self.page.get_accounts() return self.page.get_accounts()
The last thing to know is that :func:`need_login <weboob.tools.browser2.page.need_login>` checks if the current page is a logged one by The last thing to know is that :func:`need_login <weboob.browser2.page.need_login>` checks if the current page is a logged one by
reading the attribute :func:`logged <weboob.tools.browser2.page.Page.logged>` of the instance. You can either define it yourself, as a reading the attribute :func:`logged <weboob.browser2.page.Page.logged>` of the instance. You can either define it yourself, as a
class boolean attribute or as a property, or to inherit your class from :class:`LoggedPage <weboob.tools.browser2.page.LoggedPage>`. class boolean attribute or as a property, or to inherit your class from :class:`LoggedPage <weboob.browser2.page.LoggedPage>`.
Parsing of pages Parsing of pages
@ -342,7 +342,7 @@ Parsing of pages
When your browser locates on a page, an instance of the class related to the When your browser locates on a page, an instance of the class related to the
:class:`URL <weboob.tools.browser2.page.URL>` attribute which matches the url :class:`URL <weboob.browser2.page.URL>` attribute which matches the url
is created. You can declare methods on your class to allow your browser to is created. You can declare methods on your class to allow your browser to
interact with it. interact with it.

View file

@ -18,7 +18,7 @@
# 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.browser2 import PagesBrowser, URL from weboob.browser2 import PagesBrowser, URL
from .pages import EventListPage, EventPage from .pages import EventListPage, EventPage
from datetime import timedelta, date from datetime import timedelta, date

View file

@ -17,10 +17,10 @@
# You should have received a copy of the GNU Affero General Public License # You should have received a copy of the GNU Affero General Public License
# 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.browser2.page import HTMLPage, method, pagination from weboob.browser2.page import HTMLPage, method, pagination
from weboob.tools.browser2.elements import ItemElement, ListElement from weboob.browser2.elements import ItemElement, ListElement
from weboob.tools.browser2.filters.standard import Regexp, CleanText, DateTime, Filter, Type, Env, Format, CombineDate from weboob.browser2.filters.standard import Regexp, CleanText, DateTime, Filter, Type, Env, Format, CombineDate
from weboob.tools.browser2.filters.html import Link, XPath, CleanHTML from weboob.browser2.filters.html import Link, XPath, CleanHTML
from .calendar import AgendaDuLibreCalendarEvent from .calendar import AgendaDuLibreCalendarEvent
from datetime import time, datetime, date from datetime import time, datetime, date

View file

@ -18,7 +18,7 @@
# 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.browser2 import LoginBrowser, URL, need_login from weboob.browser2 import LoginBrowser, URL, need_login
from weboob.tools.exceptions import BrowserIncorrectPassword from weboob.tools.exceptions import BrowserIncorrectPassword
from .pages import LoginPage, AccountsPage from .pages import LoginPage, AccountsPage

View file

@ -21,9 +21,9 @@
import datetime import datetime
from decimal import Decimal from decimal import Decimal
from weboob.tools.browser2.page import HTMLPage, LoggedPage, method from weboob.browser2.page import HTMLPage, LoggedPage, method
from weboob.tools.browser2.elements import ItemElement from weboob.browser2.elements import ItemElement
from weboob.tools.browser2.filters.standard import CleanDecimal, CleanText, Filter, TableCell from weboob.browser2.filters.standard import CleanDecimal, CleanText, Filter, TableCell
from weboob.capabilities.bank import Account from weboob.capabilities.bank import Account
from weboob.tools.capabilities.bank.transactions import FrenchTransaction as Transaction from weboob.tools.capabilities.bank.transactions import FrenchTransaction as Transaction

View file

@ -18,7 +18,7 @@
# 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.browser2 import LoginBrowser, need_login, URL from weboob.browser2 import LoginBrowser, need_login, URL
from weboob.tools.exceptions import BrowserIncorrectPassword from weboob.tools.exceptions import BrowserIncorrectPassword
from .pages import LoginPage, IndexPage, AccountsPage, OperationsPage from .pages import LoginPage, IndexPage, AccountsPage, OperationsPage

View file

@ -24,10 +24,10 @@ import re
from cStringIO import StringIO from cStringIO import StringIO
from weboob.capabilities.bank import Account from weboob.capabilities.bank import Account
from weboob.tools.browser2.page import HTMLPage, method, LoggedPage from weboob.browser2.page import HTMLPage, method, LoggedPage
from weboob.tools.browser2.elements import ListElement, ItemElement from weboob.browser2.elements import ListElement, ItemElement
from weboob.tools.browser2.filters.standard import CleanText, Regexp, CleanDecimal, Env from weboob.browser2.filters.standard import CleanText, Regexp, CleanDecimal, Env
from weboob.tools.browser2.filters.html import Attr from weboob.browser2.filters.html import Attr
from weboob.tools.captcha.virtkeyboard import MappedVirtKeyboard, VirtKeyboardError from weboob.tools.captcha.virtkeyboard import MappedVirtKeyboard, VirtKeyboardError
from weboob.tools.capabilities.bank.transactions import FrenchTransaction from weboob.tools.capabilities.bank.transactions import FrenchTransaction
from weboob.tools.exceptions import ParseError from weboob.tools.exceptions import ParseError

View file

@ -18,7 +18,7 @@
# 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.browser2 import PagesBrowser, URL from weboob.browser2 import PagesBrowser, URL
from .pages import ProgramPage, EventPage from .pages import ProgramPage, EventPage

View file

@ -23,10 +23,10 @@ from datetime import datetime, time
import weboob.tools.date as date_util import weboob.tools.date as date_util
from .calendar import BiplanCalendarEventConcert, BiplanCalendarEventTheatre from .calendar import BiplanCalendarEventConcert, BiplanCalendarEventTheatre
from weboob.tools.browser2.elements import ItemElement, SkipItem, ListElement from weboob.browser2.elements import ItemElement, SkipItem, ListElement
from weboob.tools.browser2.page import HTMLPage, method from weboob.browser2.page import HTMLPage, method
from weboob.tools.browser2.filters.standard import Filter, CleanText, Env, Regexp, CombineDate from weboob.browser2.filters.standard import Filter, CleanText, Env, Regexp, CombineDate
from weboob.tools.browser2.filters.html import Link, CleanHTML from weboob.browser2.filters.html import Link, CleanHTML
class BiplanPrice(Filter): class BiplanPrice(Filter):

View file

@ -18,7 +18,7 @@
# 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.browser2 import LoginBrowser, URL, need_login from weboob.browser2 import LoginBrowser, URL, need_login
from weboob.tools.exceptions import BrowserIncorrectPassword from weboob.tools.exceptions import BrowserIncorrectPassword
from .pages import LoginPage, HomePage, TransactionsPage from .pages import LoginPage, HomePage, TransactionsPage

View file

@ -20,10 +20,10 @@
import re import re
from weboob.tools.browser2.page import HTMLPage, method, LoggedPage from weboob.browser2.page import HTMLPage, method, LoggedPage
from weboob.tools.browser2.elements import ListElement, ItemElement from weboob.browser2.elements import ListElement, ItemElement
from weboob.tools.browser2.filters.standard import Regexp, CleanText, CleanDecimal, Format from weboob.browser2.filters.standard import Regexp, CleanText, CleanDecimal, Format
from weboob.tools.browser2.filters.html import Link from weboob.browser2.filters.html import Link
from weboob.capabilities.bank import Account from weboob.capabilities.bank import Account
from weboob.tools.capabilities.bank.transactions import FrenchTransaction from weboob.tools.capabilities.bank.transactions import FrenchTransaction

View file

@ -17,7 +17,7 @@
# You should have received a copy of the GNU Affero General Public License # You should have received a copy of the GNU Affero General Public License
# 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.browser2 import PagesBrowser, URL from weboob.browser2 import PagesBrowser, URL
from weboob.capabilities.job import BaseJobAdvert from weboob.capabilities.job import BaseJobAdvert
from .pages import SearchPage from .pages import SearchPage

View file

@ -17,10 +17,10 @@
# You should have received a copy of the GNU Affero General Public License # You should have received a copy of the GNU Affero General Public License
# 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.browser2.page import HTMLPage, method from weboob.browser2.page import HTMLPage, method
from weboob.tools.browser2.elements import ItemElement, TableElement from weboob.browser2.elements import ItemElement, TableElement
from weboob.tools.browser2.filters.standard import Filter, CleanText, Format, Env, DateTime, TableCell, Join from weboob.browser2.filters.standard import Filter, CleanText, Format, Env, DateTime, TableCell, Join
from weboob.tools.browser2.filters.html import Link, CleanHTML from weboob.browser2.filters.html import Link, CleanHTML
from weboob.capabilities.job import BaseJobAdvert from weboob.capabilities.job import BaseJobAdvert

View file

@ -23,7 +23,7 @@ from weboob.tools.backend import Module, BackendConfig
from weboob.tools.value import ValueBackendPassword from weboob.tools.value import ValueBackendPassword
from weboob.capabilities.base import NotAvailable from weboob.capabilities.base import NotAvailable
from weboob.tools.exceptions import BrowserIncorrectPassword, ParseError from weboob.tools.exceptions import BrowserIncorrectPassword, ParseError
from weboob.tools.browser2 import Browser from weboob.browser2 import Browser
from re import match, compile, sub from re import match, compile, sub
from decimal import Decimal from decimal import Decimal

View file

@ -26,7 +26,7 @@ except ImportError:
from datetime import datetime, timedelta from datetime import datetime, timedelta
from weboob.tools.compat import basestring from weboob.tools.compat import basestring
from weboob.tools.browser2 import LoginBrowser, URL, Wget, need_login from weboob.browser2 import LoginBrowser, URL, Wget, need_login
from weboob.tools.exceptions import BrowserIncorrectPassword from weboob.tools.exceptions import BrowserIncorrectPassword
from weboob.capabilities.bank import Transfer, TransferError from weboob.capabilities.bank import Transfer, TransferError

View file

@ -27,10 +27,10 @@ from decimal import Decimal
import re import re
from dateutil.relativedelta import relativedelta from dateutil.relativedelta import relativedelta
from weboob.tools.browser2.page import HTMLPage, method, FormNotFound, LoggedPage from weboob.browser2.page import HTMLPage, method, FormNotFound, LoggedPage
from weboob.tools.browser2.elements import ListElement, ItemElement, SkipItem from weboob.browser2.elements import ListElement, ItemElement, SkipItem
from weboob.tools.browser2.filters.standard import Filter, Env, CleanText, CleanDecimal, Field, TableCell from weboob.browser2.filters.standard import Filter, Env, CleanText, CleanDecimal, Field, TableCell
from weboob.tools.browser2.filters.html import Link from weboob.browser2.filters.html import Link
from weboob.tools.exceptions import BrowserIncorrectPassword from weboob.tools.exceptions import BrowserIncorrectPassword
from weboob.capabilities import NotAvailable from weboob.capabilities import NotAvailable
from weboob.capabilities.bank import Account from weboob.capabilities.bank import Account

View file

@ -18,7 +18,7 @@
# 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.browser2 import PagesBrowser, URL from weboob.browser2 import PagesBrowser, URL
from .pages import StartPage from .pages import StartPage

View file

@ -17,9 +17,9 @@
# You should have received a copy of the GNU Affero General Public License # You should have received a copy of the GNU Affero General Public License
# 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.browser2.page import HTMLPage, method from weboob.browser2.page import HTMLPage, method
from weboob.tools.browser2.elements import ListElement, ItemElement from weboob.browser2.elements import ListElement, ItemElement
from weboob.tools.browser2.filters.standard import CleanText, Regexp, Field, Filter, debug from weboob.browser2.filters.standard import CleanText, Regexp, Field, Filter, debug
from weboob.capabilities.gauge import GaugeMeasure, GaugeSensor from weboob.capabilities.gauge import GaugeMeasure, GaugeSensor
from weboob.capabilities.base import NotAvailable from weboob.capabilities.base import NotAvailable

View file

@ -19,7 +19,7 @@
from weboob.tools.json import json from weboob.tools.json import json
from weboob.capabilities.collection import Collection from weboob.capabilities.collection import Collection
from weboob.tools.browser2 import LoginBrowser, URL, need_login from weboob.browser2 import LoginBrowser, URL, need_login
from .pages import EssentialsPage, TokenPage, ContentsPage, PreferencesPage from .pages import EssentialsPage, TokenPage, ContentsPage, PreferencesPage

View file

@ -19,7 +19,7 @@
from urlparse import urlparse, parse_qs from urlparse import urlparse, parse_qs
from weboob.tools.browser2 import LoginBrowser, URL, HTMLPage from weboob.browser2 import LoginBrowser, URL, HTMLPage
from weboob.tools.exceptions import BrowserIncorrectPassword from weboob.tools.exceptions import BrowserIncorrectPassword

Some files were not shown because too many files have changed in this diff Show more