use lower_case_with_underscores instead of mixedCase for methods (PEP 8)

This commit is contained in:
Christophe Benz 2010-03-11 15:13:17 +01:00 committed by Christophe Benz
commit d699e307dd
21 changed files with 177 additions and 185 deletions

View file

@ -23,7 +23,7 @@ class Backend:
def __init__(self, weboob):
self.weboob = weboob
def hasCaps(self, caps):
def has_caps(self, caps):
if not isinstance(caps, (list,tuple)):
caps = (caps,)

View file

@ -66,57 +66,57 @@ class AdopteUnMec(Browser):
}
def login(self):
if not self.isOnPage(LoginPage):
if not self.is_on_page(LoginPage):
self.home()
self.page.login(self.username, self.password)
def isLogged(self):
return not self.isOnPage(LoginPage)
def is_logged(self):
return not self.is_on_page(LoginPage)
def home(self):
return self.location('http://www.adopteunmec.com/home.php')
def pageaccess(func):
def inner(self, *args, **kwargs):
if self.isOnPage(WaitPage):
if self.is_on_page(WaitPage):
if not self.page.check():
raise AdopteWait()
self.home()
if not self.page or self.isOnPage(LoginPage) and self.password:
if not self.page or self.is_on_page(LoginPage) and self.password:
self.home()
return func(self, *args, **kwargs)
return inner
def register(self, nickname, password, sex, birthday_d, birthday_m, birthday_y, zipcode, country, godfather=''):
if not self.isOnPage(RegisterPage):
if not self.is_on_page(RegisterPage):
self.location('http://www.adopteunmec.com/register2.php')
return self.page.register(nickname, password, sex, birthday_d, birthday_m, birthday_y, zipcode, country, godfather)
@pageaccess
def addPhoto(self, name, f):
if not self.isOnPage(EditPhotoPage):
def add_photo(self, name, f):
if not self.is_on_page(EditPhotoPage):
self.location('/edit.php?type=1')
return self.page.addPhoto(name, f)
return self.page.add_photo(name, f)
@pageaccess
def setNickname(self, nickname):
if not self.isOnPage(EditAnnouncePage):
def set_nickname(self, nickname):
if not self.is_on_page(EditAnnouncePage):
self.location('/edit.php?type=2')
return self.page.setNickname(nickname)
return self.page.set_nickname(nickname)
@pageaccess
def setAnnounce(self, title=None, description=None, lookingfor=None):
if not self.isOnPage(EditAnnouncePage):
def set_announce(self, title=None, description=None, lookingfor=None):
if not self.is_on_page(EditAnnouncePage):
self.location('/edit.php?type=2')
return self.page.setAnnounce(title, description, lookingfor)
return self.page.set_announce(title, description, lookingfor)
@pageaccess
def setDescription(self, **args):
if not self.isOnPage(EditDescriptionPage):
def set_description(self, **args):
if not self.is_on_page(EditDescriptionPage):
self.location('/edit.php?type=3')
return self.page.setDescription(**args)
return self.page.set_description(**args)
@pageaccess
def score(self):
@ -125,75 +125,75 @@ class AdopteUnMec(Browser):
return self.page.score()
@pageaccess
def getMyName(self):
def get_my_name(self):
if time.time() - self.__last_update > 60:
self.home()
return self.page.getMyName()
return self.page.get_my_name()
@pageaccess
def getMyID(self):
if not self.isOnPage(HomePage):
def get_my_id(self):
if not self.is_on_page(HomePage):
self.home()
return self.page.getMyID()
return self.page.get_my_id()
@pageaccess
def nbNewMails(self):
def nb_new_mails(self):
if time.time() - self.__last_update > 60:
self.home()
return self.page.nbNewMails()
return self.page.nb_new_mails()
@pageaccess
def nbNewBaskets(self):
def nb_new_baskets(self):
if time.time() - self.__last_update > 60:
self.home()
return self.page.nbNewBaskets()
return self.page.nb_new_baskets()
@pageaccess
def nbNewVisites(self):
def nb_new_visites(self):
if time.time() - self.__last_update > 60:
self.home()
return self.page.nbNewVisites()
return self.page.nb_new_visites()
@pageaccess
def nbAvailableCharms(self):
def nb_available_charms(self):
self.home()
return self.page.nbAvailableCharms()
return self.page.nb_available_charms()
@pageaccess
def getBaskets(self):
def get_baskets(self):
self.location('/mails.php?type=1')
return self.page.getProfilesIDsList()
return self.page.get_profiles_ids_list()
@pageaccess
def flushVisits(self):
def flush_visits(self):
""" Does nothing, only flush new visits to increase my score """
self.openurl('/mails.php?type=3')
@pageaccess
def getContactList(self):
if not self.isOnPage(ContactListPage):
def get_contact_list(self):
if not self.is_on_page(ContactListPage):
self.location('/mails.php')
return self.page.getContactList()
return self.page.get_contact_list()
@pageaccess
def getThreadMails(self, id):
self.page.openThreadPage(id)
return self.page.getMails()
def get_thread_mails(self, id):
self.page.open_thread_page(id)
return self.page.get_mails()
@pageaccess
def postMail(self, id, content):
self.page.openThreadPage(id)
def post_mail(self, id, content):
self.page.open_thread_page(id)
self.page.post(content)
@pageaccess
def sendCharm(self, id):
def send_charm(self, id):
result = self.openurl('http://www.adopteunmec.com/fajax_addBasket.php?id=%s' % id).read()
warning('Charm: %s' % result)
return result.find('noMoreFlashes') < 0
@pageaccess
def addBasket(self, id):
def add_basket(self, id):
result = self.openurl('http://www.adopteunmec.com/fajax_addBasket.php?id=%s' % id).read()
warning('Basket: %s' % result)
# TODO check if it works (but it should)
@ -212,20 +212,20 @@ class AdopteUnMec(Browser):
return float(result)
@pageaccess
def searchProfiles(self, **kwargs):
def search_profiles(self, **kwargs):
self.location('/search.php?display=1')
self.page.search(**kwargs)
return self.page.getProfilesIDs()
return self.page.get_profiles_ids()
@pageaccess
def getProfile(self, link):
def get_profile(self, link):
if isinstance(link, (str,unicode)) and link.startswith('/'):
link = link[1:]
self.location('/%s' % link)
return self.page
@pageaccess
def getSlutState(self, id):
def get_slut_state(self, id):
result = self.openurl('http://www.adopteunmec.com/%s' % id).read()
if result.find('<td align="right" style="font-size:12px;font-weight:bold">en ligne</td>') >= 0:
r = 'online'
@ -242,7 +242,7 @@ class AdopteUnMec(Browser):
return r
@pageaccess
def isSlutOnline(self, id):
def is_slut_online(self, id):
result = self.openurl('http://www.adopteunmec.com/%s' % id).read()
r = result.find('<td align="right" style="font-size:12px;font-weight:bold">en ligne</td>') >= 0
print 'isSlutOnline(%s) = %s' % (id, r)

View file

@ -25,5 +25,5 @@ class AuMBackend(Backend, ICapMessages, ICapMessagesReply):
def __init__(self, weboob):
Backend.__init__(self, weboob)
def iterNewMessages(self, thread=None):
def iter_new_messages(self, thread=None):
pass

View file

@ -34,36 +34,36 @@ class Mail:
self.content = ''
self.date = datetime.datetime.utcnow()
def getDateInt(self):
return int(time.strftime('%Y%m%d%H%M%S', self.getDate().timetuple()))
def get_date_int(self):
return int(time.strftime('%Y%m%d%H%M%S', self.get_date().timetuple()))
def getMsgID(self, sender):
return '<%s.%d@%s>' % (self.getDateInt(), self.id, sender)
def get_msg_id(self, sender):
return '<%s.%d@%s>' % (self.get_date_int(), self.id, sender)
def getReplyID(self, sender):
def get_reply_id(self, sender):
if self.reply_date:
return '<%s.%d@%s>' % (self.reply_date, self.id, sender)
else:
return ''
def getID(self):
def get_id(self):
return self.id
def getName(self):
def get_name(self):
return self.name
def getDate(self):
def get_date(self):
return self.date
def getProfileLink(self):
def get_profile_link(self):
return self.profile_link
def getFrom(self):
def get_from(self):
return self.sender
def getContent(self):
def get_content(self):
return self.content
def isNew(self):
def is_new(self):
return self.new

View file

@ -23,10 +23,10 @@ from logging import error, warning
from weboob.tools.browser import BasePage
class PageBase(BasePage):
def openContactListPage(self):
def open_contact_list_page(self):
self.browser.follow_link(url_regex=r"/mails.php$")
def openThreadPage(self, id):
def open_thread_page(self, id):
self.browser.location('/thread.php?id=%d' % int(id))
def score(self):
@ -70,7 +70,7 @@ class PageBase(BasePage):
return 0
MYNAME_REGEXP = re.compile("Bonjour (.*)")
def getMyName(self):
def get_my_name(self):
""" <span class=header2>Bonjour Romain</span> """
tags = self.document.getElementsByTagName('span')
@ -83,14 +83,14 @@ class PageBase(BasePage):
warning('Warning: Unable to fetch name')
return '?'
def nbNewMails(self):
def nb_new_mails(self):
return self.__get_indicator(u'mailsCounter')
def nbNewBaskets(self):
def nb_new_baskets(self):
return self.__get_indicator(u'flashsCounter')
def nbNewVisites(self):
def nb_new_visites(self):
return self.__get_indicator(u'visitesCounter')

View file

@ -54,7 +54,7 @@ class ContactItem:
return self.tr.getElementsByTagName('td')[self.fields.index(id)]
def getName(self):
def get_name(self):
tag = self.__get_element('name')
node = tag.getElementsByTagName('b')[0].firstChild
if node:
@ -65,24 +65,24 @@ class ContactItem:
return name
def getStatus(self):
def get_status(self):
tag = self.__get_element('status')
return tag.firstChild.data
def isNew(self):
return self.getStatus() == u'nouveau'
def is_new(self):
return self.get_status() == u'nouveau'
def isAnswered(self):
return self.getStatus() == u'répondu'
def is_answered(self):
return self.get_status() == u'répondu'
def getResume(self):
def get_resume(self):
tag = self.__get_element('resume')
return tag.getElementsByTagName('b')[0].firstChild.data.split('\n')[0]
def getID(self):
def get_id(self):
tag = self.__get_element('thread_link')
text = tag.getAttribute('onclick')
@ -113,5 +113,5 @@ class ContactListPage(PageBase):
self.items += [ContactItem(tag)]
def getContactList(self):
def get_contact_list(self):
return self.items

View file

@ -113,7 +113,7 @@ class MailParser(Mail):
for child in td.childNodes[1].childNodes:
if hasattr(child, 'data'):
date += child.data
self.parseDate(date)
self.parse_date(date)
content = ''
for c in td.childNodes[3].childNodes:
if hasattr(c, 'data'):
@ -131,10 +131,10 @@ class MailParser(Mail):
self.content = content
break
self.parseProfileLink()
self.parseFrom()
self.parse_profile_link()
self.parse_from()
def parseDate(self, date_str):
def parse_date(self, date_str):
# To match regexp, we have to remove any return chars in string
@ -161,7 +161,7 @@ class MailParser(Mail):
else:
error('Error: unable to parse the datetime string "%s"' % date_str)
def parseProfileLink(self):
def parse_profile_link(self):
tables = self.tr.getElementsByTagName('div')
for table in tables:
@ -176,9 +176,9 @@ class MailParser(Mail):
self.profile_link = m.group(1)
return
warning('Unable to find the profile URL in the message %s@%s' % (self.getFrom(), self.getID()))
warning('Unable to find the profile URL in the message %s@%s' % (self.get_from(), self.get_id()))
def parseFrom(self):
def parse_from(self):
tds = self.tr.getElementsByTagName('div')
for td in tds:
@ -190,7 +190,7 @@ class MailParser(Mail):
return
warning('Warning: unable to find from in the mail %s' % self.getID())
warning('Warning: unable to find from in the mail %s' % self.get_id())
class ContactThreadPage(PageBase):
@ -308,9 +308,9 @@ class ContactThreadPage(PageBase):
mail = MailParser(self.id, self.name, tag)
if self.items:
self.items[-1].reply_date = mail.getDateInt()
self.items[-1].reply_date = mail.get_date_int()
self.items += [mail]
def getMails(self):
def get_mails(self):
return self.items

View file

@ -21,7 +21,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
from weboob.backends.aum.pages.base import PageBase
class EditPhotoPage(PageBase):
def addPhoto(self, name, f):
def add_photo(self, name, f):
self.browser.select_form(name="form")
self.browser.find_control('uploaded').add_file(f, 'image/jpeg', name)
self.browser.submit()
@ -32,12 +32,12 @@ class EditPhotoCbPage(PageBase):
pass
class EditAnnouncePage(PageBase):
def setNickname(self, nickname):
def set_nickname(self, nickname):
self.browser.select_form(name="form")
self.browser['pseudo'] = nickname
self.browser.submit()
def setAnnounce(self, title=None, description=None, lookingfor=None):
def set_announce(self, title=None, description=None, lookingfor=None):
self.browser.select_form(name="form")
self.browser.set_field(kwargs, 'title')
self.browser.set_field(kwargs, 'description', field='about1')
@ -56,7 +56,7 @@ class EditDescriptionPage(PageBase):
DRINKS = ['--', 'jamais', 'de temps en temps', 'souvent', 'pilier de bar']
SMOKES = ['--', u'ne tolère pas la fumée', u'tolère la fumée', 'fume de temps en temps', 'fume souvent']
def setDescription(self, **kwargs):
def set_description(self, **kwargs):
self.browser.select_form(name='form')
self.browser.set_field(kwargs, 'height', field='size', is_list=True)

View file

@ -27,7 +27,7 @@ class HomePage(PageBase):
MYID_REGEXP = re.compile("http://www.adopteunmec.com/\?mid=(\d+)")
def getMyID(self):
def get_my_id(self):
fonts = self.document.getElementsByTagName('font')
for font in fonts:
m = self.MYID_REGEXP.match(font.firstChild.data)
@ -37,7 +37,7 @@ class HomePage(PageBase):
error("Error: Unable to find my ID")
return 0
def nbAvailableCharms(self):
def nb_available_charms(self):
tables = self.document.getElementsByTagName('table')
for table in tables:
if table.hasAttribute('style') and table.getAttribute('style') == 'background-color:black;background-image:url(http://s.adopteunmec.com/img/barmec.gif);background-repeat:no-repeat':

View file

@ -28,27 +28,27 @@ class FieldBase:
def __init__(self, key):
self.key = key
def putValue(self, d, value):
def put_value(self, d, value):
raise NotImplementedError
class FieldString(FieldBase):
def putValue(self, d, value):
def put_value(self, d, value):
d[self.key] = unicode(value)
class FieldList(FieldBase):
def putValue(self, d, value):
def put_value(self, d, value):
d[self.key] = value.split(', ')
class FieldWideList(FieldBase):
def putValue(self, d, value):
def put_value(self, d, value):
d[self.key] += [value]
class FieldOld(FieldBase):
regexp = re.compile(u'([0-9]+) ans( \(Née le ([0-9]+) ([^ ]+) ([0-9]+)\))?')
month2i = ['', 'janvier', u'février', 'mars', 'avril', 'mai', 'juin', 'juillet', u'août', 'septembre', 'octobre', 'novembre', u'décembre']
def putValue(self, d, value):
def put_value(self, d, value):
m = self.regexp.match(value)
warning(value)
if not m:
@ -70,7 +70,7 @@ class FieldLocation(FieldBase):
def __init__(self):
FieldBase.__init__(self, '')
def putValue(self, d, value):
def put_value(self, d, value):
# TODO: determine distance, or something like
m = self.location.match(value)
if m:
@ -88,7 +88,7 @@ class FieldMeasurements(FieldBase):
def __init__(self):
FieldBase.__init__(self, '')
def putValue(self, d, value):
def put_value(self, d, value):
for s in value.split(', '):
m = self.height.match(s)
if m:
@ -114,7 +114,7 @@ class FieldMeasurements(FieldBase):
class FieldParticularSignes(FieldBase):
def __init__(self): FieldBase.__init__(self, '')
def putValue(self, d, value):
def put_value(self, d, value):
for s in value.split(', '):
if s.find('tatouages') >= 0:
d['tatoos'] = True
@ -284,10 +284,10 @@ class ProfilePage(PageBase):
for div in divs:
if div.hasAttribute('id'):
if div.getAttribute('id') == 'about_div':
self.parseDescription(div)
self.parse_description(div)
if div.getAttribute('id').startswith('tab_'):
self.parseTable(div)
self.parse_table(div)
for tag in ('img', 'td'):
imgs = self.document.getElementsByTagName(tag)
@ -300,7 +300,7 @@ class ProfilePage(PageBase):
if self.id:
break
def parseDescription(self, div):
def parse_description(self, div):
# look for description
description = ''
@ -312,7 +312,7 @@ class ProfilePage(PageBase):
self.description = description
def parseTable(self, div):
def parse_table(self, div):
d = self.table[self.tables[div.getAttribute('id')]]
fields = self.fields[self.tables[div.getAttribute('id')]]
@ -354,7 +354,7 @@ class ProfilePage(PageBase):
if label1 and value2:
# This is a typically tuple of key/value on the line.
try:
fields[label1].putValue(d, value2)
fields[label1].put_value(d, value2)
except KeyError:
warning('Unable to find "%s" (%s)' % (label1, repr(label1)))
elif label1 and label2:
@ -365,45 +365,45 @@ class ProfilePage(PageBase):
elif not label1 and not label1:
# two values, so it is a line of values
if field1 and value1:
field1.putValue(d, value1)
field1.put_value(d, value1)
if field2 and value2:
field2.putValue(d, value2)
field2.put_value(d, value2)
def getName(self):
def get_name(self):
return self.name
def getDescription(self):
def get_description(self):
return self.description
def getTable(self):
def get_table(self):
return self.table
def getID(self):
def get_id(self):
return self.id
def getPhotos(self):
def get_photos(self):
return self.photos
def getStatus(self):
def get_status(self):
return self.status
def isOnline(self):
def is_online(self):
return self.status.find('en ligne') >= 0
def getStats(self):
def get_stats(self):
return self.stats
def getProfileText(self):
def get_profile_text(self):
body = u'Status: %s' % unicode(self.status)
if self.photos:
body += u'\nPhotos:'
for photo in self.photos:
body += u'\n\t\t%s' % unicode(photo)
body += u'\nStats:'
for label, value in self.getStats().iteritems():
for label, value in self.get_stats().iteritems():
body += u'\n\t\t%-15s %s' % (label + ':', value)
body += u'\n\nInformations:'
for section, d in self.getTable().iteritems():
for section, d in self.get_table().iteritems():
body += u'\n\t%s\n' % section
for key, value in d.items():
key = '%s:' % key
@ -413,7 +413,7 @@ class ProfilePage(PageBase):
body += u'\t\t%-15s %.2f\n' % (key, value)
else:
body += u'\t\t%-15s %s\n' % (key, unicode(value))
body += u'\n\nDescription:\n%s' % unicode(self.getDescription())
body += u'\n\nDescription:\n%s' % unicode(self.get_description())
return body

View file

@ -43,8 +43,8 @@ class ProfilesListBase(PageBase):
m and (self.SHOW_WITHOUT_PHOTO or m.group(1) != self.WITHOUT_PHOTO):
self.id_list.append(url)
def getProfilesIDs(self):
def get_profiles_ids(self):
return set(self.id_list)
def getProfilesIDsList(self):
def get_profiles_ids_list(self):
return self.id_list

View file

@ -31,7 +31,7 @@ class WaitPage(PageBase):
result = self.browser.openurl('http://www.adopteunmec.com/fajax_checkEnter.php?anticache=0.46168455299380795').read()
return result == 'Ok'
def processWait(self):
def process_wait(self):
while not self.check(self):
sleep(10)

View file

@ -26,7 +26,8 @@ class DLFPBackend(Backend, ICapMessages, ICapMessagesReply):
def __init__(self, weboob):
Backend.__init__(self, weboob)
def iterNewMessages(self, thread=None):
def iter_new_messages(self, thread=None):
articles_list = ArticlesList('newspaper')
for id, author, title in articles_list.iter_articles():
yield Message('threadid', id, title, author, signature='Bite bite bite bite', content='Content content\nContent content.')
yield Message('threadid', id, title, author, signature='Bite bite bite bite',
content='Content content\nContent content.')

View file

@ -36,5 +36,5 @@ class DLFP(Browser):
def login(self):
self.location('/login.html', 'login=%s&passwd=%s&isauto=1' % (self.username, self.password))
def isLogged(self):
return (self.page and self.page.isLogged())
def is_logged(self):
return (self.page and self.page.is_logged())

View file

@ -21,7 +21,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
from weboob.tools.browser import BrowserIncorrectPassword, BasePage
class DLFPPage(BasePage):
def isLogged(self):
def is_logged(self):
forms = self.document.getElementsByTagName('form')
for form in forms:
if form.getAttribute('id') == 'formulaire':
@ -35,10 +35,10 @@ class IndexPage(DLFPPage):
class LoginPage(DLFPPage):
def loaded(self):
if self.hasError():
if self.has_error():
raise BrowserIncorrectPassword()
def hasError(self):
def has_error(self):
plist = self.document.getElementsByTagName('p')
for p in plist:
p = p.childNodes[0]

View file

@ -36,53 +36,44 @@ class Message:
date = datetime.datetime.utcnow()
self.date = date
def getDateInt(self):
return int(time.strftime('%Y%m%d%H%M%S', self.getDate().timetuple()))
def get_date_int(self):
return int(time.strftime('%Y%m%d%H%M%S', self.get_date().timetuple()))
def getFullID(self):
def get_full_id(self):
return '%s.%s' % (self._id, self.thread_id)
def getFullReplyID(self):
def get_full_reply_id(self):
return '%s.%s' % (self.reply_id, self.thread_id)
def getID(self):
def get_id(self):
return self._id
def getThreadID(self):
def get_thread_id(self):
return self.thread_id
def getReplyID(self):
def get_reply_id(self):
return self.reply_id
def getTitle(self):
def get_title(self):
return self.title
def getDate(self):
def get_date(self):
return self.date
def getFrom(self):
def get_from(self):
return self.sender
def getContent(self):
def get_content(self):
return self.content
def getSignature(self):
def get_signature(self):
return self.signature
def isNew(self):
def is_new(self):
return self.new
class ICapMessages:
def getNewMessages(self, thread=None):
"""
Get new messages from last time this function has been called.
@param thread [str] if given, get new messages for a specific thread.
@return [list] a list of Message objects.
"""
return [m for m in self.iterNewMessages(thread)]
def iterNewMessages(self, thread=None):
def iter_new_messages(self, thread=None):
"""
Iterates on new messages from last time this function has been called.
@ -92,5 +83,5 @@ class ICapMessages:
raise NotImplementedError()
class ICapMessagesReply:
def postReply(self, message):
def post_reply(self, message):
raise NotImplementedError()

View file

@ -39,7 +39,7 @@ class Module:
if not self.klass:
raise ImportError("This is not a backend module (no Backend class found)")
def hasCaps(self, caps):
def has_caps(self, caps):
if not isinstance(caps, (list,tuple)):
caps = (caps,)
@ -48,7 +48,7 @@ class Module:
return True
return False
def createBackend(self, weboob):
def create_backend(self, weboob):
return self.klass(weboob)
class ModulesLoader:

View file

@ -38,30 +38,30 @@ class Weboob:
self.modules_loader = ModulesLoader()
self.modules_loader.load()
def getFrontendConfig(self, default={}):
def get_frontend_config(self, default={}):
return self.config.get('frontends', self.app_name, default=default)
def getBackendConfig(self, backend_name, default={}):
def get_backend_config(self, backend_name, default={}):
return self.config.get('backends', backend_name, default=default)
def loadmodules(self, caps=None, name=None):
def load_modules(self, caps=None, name=None):
for name, module in self.modules_loader.modules.iteritems():
if (not caps or module.hasCaps(caps)) and \
if (not caps or module.has_caps(caps)) and \
(not name or module.name == name):
backend = module.createBackend(self)
backend = module.create_backend(self)
self.backends[module.name] = backend
def loadmodule(self, modname, instname):
def load_module(self, modname, instname):
module = self.modules_loader[modname]
self.backends[instname] = module.createBackend(self)
self.backends[instname] = module.create_backend(self)
def getBackends(self, caps=None):
def get_backends(self, caps=None):
if caps is None:
return self.backends
d = {}
for name, backend in self.backends.iteritems():
if backend.hasCaps(caps):
if backend.has_caps(caps):
d[name] = backend
return d

View file

@ -31,7 +31,7 @@ class BaseApplication(object):
def __init__(self):
self.weboob = Weboob(self.APPNAME)
self.config = self.weboob.getFrontendConfig(self.CONFIG)
self.config = self.weboob.get_frontend_config(self.CONFIG)
def ask(self, question, default=None, masked=False, regexp=None):
"""

View file

@ -79,7 +79,7 @@ class Browser(mechanize.Browser):
raise NotImplementedError()
# Return True if we are logged on website
def isLogged(self):
def is_logged(self):
raise NotImplementedError()
# ------ Browser methods ---------------------------------------
@ -111,7 +111,7 @@ class Browser(mechanize.Browser):
def pageaccess(func):
def inner(self, *args, **kwargs):
if not self.page or not self.page.isLogged() and self.password:
if not self.page or not self.page.is_logged() and self.password:
self.home()
return func(self, *args, **kwargs)
@ -152,7 +152,7 @@ class Browser(mechanize.Browser):
self.home()
raise BrowserUnavailable()
def isOnPage(self, pageCls):
def is_on_page(self, pageCls):
return isinstance(self.page, pageCls)
def follow_link(self, *args, **kwargs):
@ -184,7 +184,7 @@ class Browser(mechanize.Browser):
self.home()
self.location(*keep_args, **keep_kwargs)
def __changeLocation(self, result):
def __change_location(self, result):
# Find page from url
pageCls = None
for key, value in self.PAGES.items():
@ -211,7 +211,7 @@ class Browser(mechanize.Browser):
self.page = pageCls(self, document, result.geturl())
self.page.loaded()
if not self.isLogged() and self.password:
if not self.is_logged() and self.password:
print '!! Relogin !!'
self.login()
return

View file

@ -50,16 +50,16 @@ class Application(BaseApplication):
print >>sys.stderr, "Also, you need to use 'weboobcfg' to set backend configs"
return -1
self.weboob.loadmodules(ICapMessages)
self.weboob.load_modules(ICapMessages)
self.weboob.schedule(self.config['interval'], self.process)
self.weboob.config.save()
self.weboob.loop()
def process(self):
backends = self.weboob.getBackends()
backends = self.weboob.get_backends()
for name, b in backends.iteritems():
for message in b.iterNewMessages():
for message in b.iter_new_messages():
self.send_email(name, message)
def send_email(self, backend_name, mail):
@ -67,19 +67,19 @@ class Application(BaseApplication):
recipient = self.config['recipient']
reply_id = ''
if mail.getReplyID():
reply_id = u'%s.%s@%s' % (backend_name, mail.getFullReplyID(), domain)
subject = u'%s%s' % ((reply_id) and 'Re: ' or '', mail.getTitle())
sender = u'%s <%s.%s.%s@%s>' % (mail.getFrom(), backend_name, mail.getThreadID(), mail.getID(), domain)
if mail.get_reply_id():
reply_id = u'%s.%s@%s' % (backend_name, mail.get_full_reply_id(), domain)
subject = u'%s%s' % ((reply_id) and 'Re: ' or '', mail.get_title())
sender = u'%s <%s.%s.%s@%s>' % (mail.get_from(), backend_name, mail.get_thread_id(), mail.get_id(), domain)
# assume that getDate() returns an UTC datetime
date = time.strftime('%a, %d %b %Y %H:%M:%S +0000', mail.getDate().timetuple())
msg_id = u'%s.%s@%s' % (backend_name, mail.getFullID(), domain)
body = mail.getContent()
# assume that get_date() returns an UTC datetime
date = time.strftime('%a, %d %b %Y %H:%M:%S +0000', mail.get_date().timetuple())
msg_id = u'%s.%s@%s' % (backend_name, mail.get_full_id(), domain)
body = mail.get_content()
if mail.getSignature():
if mail.get_signature():
body += u'\n\n-- \n'
body += mail.getSignature()
body += mail.get_signature()
# Header class is smart enough to try US-ASCII, then the charset we
# provide, then fall back to UTF-8.