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): def __init__(self, weboob):
self.weboob = weboob self.weboob = weboob
def hasCaps(self, caps): def has_caps(self, caps):
if not isinstance(caps, (list,tuple)): if not isinstance(caps, (list,tuple)):
caps = (caps,) caps = (caps,)

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -113,7 +113,7 @@ class MailParser(Mail):
for child in td.childNodes[1].childNodes: for child in td.childNodes[1].childNodes:
if hasattr(child, 'data'): if hasattr(child, 'data'):
date += child.data date += child.data
self.parseDate(date) self.parse_date(date)
content = '' content = ''
for c in td.childNodes[3].childNodes: for c in td.childNodes[3].childNodes:
if hasattr(c, 'data'): if hasattr(c, 'data'):
@ -131,10 +131,10 @@ class MailParser(Mail):
self.content = content self.content = content
break break
self.parseProfileLink() self.parse_profile_link()
self.parseFrom() 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 # To match regexp, we have to remove any return chars in string
@ -161,7 +161,7 @@ class MailParser(Mail):
else: else:
error('Error: unable to parse the datetime string "%s"' % date_str) error('Error: unable to parse the datetime string "%s"' % date_str)
def parseProfileLink(self): def parse_profile_link(self):
tables = self.tr.getElementsByTagName('div') tables = self.tr.getElementsByTagName('div')
for table in tables: for table in tables:
@ -176,9 +176,9 @@ class MailParser(Mail):
self.profile_link = m.group(1) self.profile_link = m.group(1)
return 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') tds = self.tr.getElementsByTagName('div')
for td in tds: for td in tds:
@ -190,7 +190,7 @@ class MailParser(Mail):
return 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): class ContactThreadPage(PageBase):
@ -308,9 +308,9 @@ class ContactThreadPage(PageBase):
mail = MailParser(self.id, self.name, tag) mail = MailParser(self.id, self.name, tag)
if self.items: if self.items:
self.items[-1].reply_date = mail.getDateInt() self.items[-1].reply_date = mail.get_date_int()
self.items += [mail] self.items += [mail]
def getMails(self): def get_mails(self):
return self.items 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 from weboob.backends.aum.pages.base import PageBase
class EditPhotoPage(PageBase): class EditPhotoPage(PageBase):
def addPhoto(self, name, f): def add_photo(self, name, f):
self.browser.select_form(name="form") self.browser.select_form(name="form")
self.browser.find_control('uploaded').add_file(f, 'image/jpeg', name) self.browser.find_control('uploaded').add_file(f, 'image/jpeg', name)
self.browser.submit() self.browser.submit()
@ -32,12 +32,12 @@ class EditPhotoCbPage(PageBase):
pass pass
class EditAnnouncePage(PageBase): class EditAnnouncePage(PageBase):
def setNickname(self, nickname): def set_nickname(self, nickname):
self.browser.select_form(name="form") self.browser.select_form(name="form")
self.browser['pseudo'] = nickname self.browser['pseudo'] = nickname
self.browser.submit() 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.select_form(name="form")
self.browser.set_field(kwargs, 'title') self.browser.set_field(kwargs, 'title')
self.browser.set_field(kwargs, 'description', field='about1') 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'] 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'] 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.select_form(name='form')
self.browser.set_field(kwargs, 'height', field='size', is_list=True) 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+)") MYID_REGEXP = re.compile("http://www.adopteunmec.com/\?mid=(\d+)")
def getMyID(self): def get_my_id(self):
fonts = self.document.getElementsByTagName('font') fonts = self.document.getElementsByTagName('font')
for font in fonts: for font in fonts:
m = self.MYID_REGEXP.match(font.firstChild.data) m = self.MYID_REGEXP.match(font.firstChild.data)
@ -37,7 +37,7 @@ class HomePage(PageBase):
error("Error: Unable to find my ID") error("Error: Unable to find my ID")
return 0 return 0
def nbAvailableCharms(self): def nb_available_charms(self):
tables = self.document.getElementsByTagName('table') tables = self.document.getElementsByTagName('table')
for table in tables: 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': 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): def __init__(self, key):
self.key = key self.key = key
def putValue(self, d, value): def put_value(self, d, value):
raise NotImplementedError raise NotImplementedError
class FieldString(FieldBase): class FieldString(FieldBase):
def putValue(self, d, value): def put_value(self, d, value):
d[self.key] = unicode(value) d[self.key] = unicode(value)
class FieldList(FieldBase): class FieldList(FieldBase):
def putValue(self, d, value): def put_value(self, d, value):
d[self.key] = value.split(', ') d[self.key] = value.split(', ')
class FieldWideList(FieldBase): class FieldWideList(FieldBase):
def putValue(self, d, value): def put_value(self, d, value):
d[self.key] += [value] d[self.key] += [value]
class FieldOld(FieldBase): class FieldOld(FieldBase):
regexp = re.compile(u'([0-9]+) ans( \(Née le ([0-9]+) ([^ ]+) ([0-9]+)\))?') 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'] 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) m = self.regexp.match(value)
warning(value) warning(value)
if not m: if not m:
@ -70,7 +70,7 @@ class FieldLocation(FieldBase):
def __init__(self): def __init__(self):
FieldBase.__init__(self, '') FieldBase.__init__(self, '')
def putValue(self, d, value): def put_value(self, d, value):
# TODO: determine distance, or something like # TODO: determine distance, or something like
m = self.location.match(value) m = self.location.match(value)
if m: if m:
@ -88,7 +88,7 @@ class FieldMeasurements(FieldBase):
def __init__(self): def __init__(self):
FieldBase.__init__(self, '') FieldBase.__init__(self, '')
def putValue(self, d, value): def put_value(self, d, value):
for s in value.split(', '): for s in value.split(', '):
m = self.height.match(s) m = self.height.match(s)
if m: if m:
@ -114,7 +114,7 @@ class FieldMeasurements(FieldBase):
class FieldParticularSignes(FieldBase): class FieldParticularSignes(FieldBase):
def __init__(self): FieldBase.__init__(self, '') def __init__(self): FieldBase.__init__(self, '')
def putValue(self, d, value): def put_value(self, d, value):
for s in value.split(', '): for s in value.split(', '):
if s.find('tatouages') >= 0: if s.find('tatouages') >= 0:
d['tatoos'] = True d['tatoos'] = True
@ -284,10 +284,10 @@ class ProfilePage(PageBase):
for div in divs: for div in divs:
if div.hasAttribute('id'): if div.hasAttribute('id'):
if div.getAttribute('id') == 'about_div': if div.getAttribute('id') == 'about_div':
self.parseDescription(div) self.parse_description(div)
if div.getAttribute('id').startswith('tab_'): if div.getAttribute('id').startswith('tab_'):
self.parseTable(div) self.parse_table(div)
for tag in ('img', 'td'): for tag in ('img', 'td'):
imgs = self.document.getElementsByTagName(tag) imgs = self.document.getElementsByTagName(tag)
@ -300,7 +300,7 @@ class ProfilePage(PageBase):
if self.id: if self.id:
break break
def parseDescription(self, div): def parse_description(self, div):
# look for description # look for description
description = '' description = ''
@ -312,7 +312,7 @@ class ProfilePage(PageBase):
self.description = description self.description = description
def parseTable(self, div): def parse_table(self, div):
d = self.table[self.tables[div.getAttribute('id')]] d = self.table[self.tables[div.getAttribute('id')]]
fields = self.fields[self.tables[div.getAttribute('id')]] fields = self.fields[self.tables[div.getAttribute('id')]]
@ -354,7 +354,7 @@ class ProfilePage(PageBase):
if label1 and value2: if label1 and value2:
# This is a typically tuple of key/value on the line. # This is a typically tuple of key/value on the line.
try: try:
fields[label1].putValue(d, value2) fields[label1].put_value(d, value2)
except KeyError: except KeyError:
warning('Unable to find "%s" (%s)' % (label1, repr(label1))) warning('Unable to find "%s" (%s)' % (label1, repr(label1)))
elif label1 and label2: elif label1 and label2:
@ -365,45 +365,45 @@ class ProfilePage(PageBase):
elif not label1 and not label1: elif not label1 and not label1:
# two values, so it is a line of values # two values, so it is a line of values
if field1 and value1: if field1 and value1:
field1.putValue(d, value1) field1.put_value(d, value1)
if field2 and value2: if field2 and value2:
field2.putValue(d, value2) field2.put_value(d, value2)
def getName(self): def get_name(self):
return self.name return self.name
def getDescription(self): def get_description(self):
return self.description return self.description
def getTable(self): def get_table(self):
return self.table return self.table
def getID(self): def get_id(self):
return self.id return self.id
def getPhotos(self): def get_photos(self):
return self.photos return self.photos
def getStatus(self): def get_status(self):
return self.status return self.status
def isOnline(self): def is_online(self):
return self.status.find('en ligne') >= 0 return self.status.find('en ligne') >= 0
def getStats(self): def get_stats(self):
return self.stats return self.stats
def getProfileText(self): def get_profile_text(self):
body = u'Status: %s' % unicode(self.status) body = u'Status: %s' % unicode(self.status)
if self.photos: if self.photos:
body += u'\nPhotos:' body += u'\nPhotos:'
for photo in self.photos: for photo in self.photos:
body += u'\n\t\t%s' % unicode(photo) body += u'\n\t\t%s' % unicode(photo)
body += u'\nStats:' 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\t\t%-15s %s' % (label + ':', value)
body += u'\n\nInformations:' 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 body += u'\n\t%s\n' % section
for key, value in d.items(): for key, value in d.items():
key = '%s:' % key key = '%s:' % key
@ -413,7 +413,7 @@ class ProfilePage(PageBase):
body += u'\t\t%-15s %.2f\n' % (key, value) body += u'\t\t%-15s %.2f\n' % (key, value)
else: else:
body += u'\t\t%-15s %s\n' % (key, unicode(value)) 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 return body

View file

@ -43,8 +43,8 @@ class ProfilesListBase(PageBase):
m and (self.SHOW_WITHOUT_PHOTO or m.group(1) != self.WITHOUT_PHOTO): m and (self.SHOW_WITHOUT_PHOTO or m.group(1) != self.WITHOUT_PHOTO):
self.id_list.append(url) self.id_list.append(url)
def getProfilesIDs(self): def get_profiles_ids(self):
return set(self.id_list) return set(self.id_list)
def getProfilesIDsList(self): def get_profiles_ids_list(self):
return self.id_list 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() result = self.browser.openurl('http://www.adopteunmec.com/fajax_checkEnter.php?anticache=0.46168455299380795').read()
return result == 'Ok' return result == 'Ok'
def processWait(self): def process_wait(self):
while not self.check(self): while not self.check(self):
sleep(10) sleep(10)

View file

@ -26,7 +26,8 @@ class DLFPBackend(Backend, ICapMessages, ICapMessagesReply):
def __init__(self, weboob): def __init__(self, weboob):
Backend.__init__(self, weboob) Backend.__init__(self, weboob)
def iterNewMessages(self, thread=None): def iter_new_messages(self, thread=None):
articles_list = ArticlesList('newspaper') articles_list = ArticlesList('newspaper')
for id, author, title in articles_list.iter_articles(): 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): def login(self):
self.location('/login.html', 'login=%s&passwd=%s&isauto=1' % (self.username, self.password)) self.location('/login.html', 'login=%s&passwd=%s&isauto=1' % (self.username, self.password))
def isLogged(self): def is_logged(self):
return (self.page and self.page.isLogged()) 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 from weboob.tools.browser import BrowserIncorrectPassword, BasePage
class DLFPPage(BasePage): class DLFPPage(BasePage):
def isLogged(self): def is_logged(self):
forms = self.document.getElementsByTagName('form') forms = self.document.getElementsByTagName('form')
for form in forms: for form in forms:
if form.getAttribute('id') == 'formulaire': if form.getAttribute('id') == 'formulaire':
@ -35,10 +35,10 @@ class IndexPage(DLFPPage):
class LoginPage(DLFPPage): class LoginPage(DLFPPage):
def loaded(self): def loaded(self):
if self.hasError(): if self.has_error():
raise BrowserIncorrectPassword() raise BrowserIncorrectPassword()
def hasError(self): def has_error(self):
plist = self.document.getElementsByTagName('p') plist = self.document.getElementsByTagName('p')
for p in plist: for p in plist:
p = p.childNodes[0] p = p.childNodes[0]

View file

@ -36,53 +36,44 @@ class Message:
date = datetime.datetime.utcnow() date = datetime.datetime.utcnow()
self.date = date self.date = date
def getDateInt(self): def get_date_int(self):
return int(time.strftime('%Y%m%d%H%M%S', self.getDate().timetuple())) 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) 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) return '%s.%s' % (self.reply_id, self.thread_id)
def getID(self): def get_id(self):
return self._id return self._id
def getThreadID(self): def get_thread_id(self):
return self.thread_id return self.thread_id
def getReplyID(self): def get_reply_id(self):
return self.reply_id return self.reply_id
def getTitle(self): def get_title(self):
return self.title return self.title
def getDate(self): def get_date(self):
return self.date return self.date
def getFrom(self): def get_from(self):
return self.sender return self.sender
def getContent(self): def get_content(self):
return self.content return self.content
def getSignature(self): def get_signature(self):
return self.signature return self.signature
def isNew(self): def is_new(self):
return self.new return self.new
class ICapMessages: class ICapMessages:
def getNewMessages(self, thread=None): def iter_new_messages(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):
""" """
Iterates on new messages from last time this function has been called. Iterates on new messages from last time this function has been called.
@ -92,5 +83,5 @@ class ICapMessages:
raise NotImplementedError() raise NotImplementedError()
class ICapMessagesReply: class ICapMessagesReply:
def postReply(self, message): def post_reply(self, message):
raise NotImplementedError() raise NotImplementedError()

View file

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

View file

@ -38,30 +38,30 @@ class Weboob:
self.modules_loader = ModulesLoader() self.modules_loader = ModulesLoader()
self.modules_loader.load() self.modules_loader.load()
def getFrontendConfig(self, default={}): def get_frontend_config(self, default={}):
return self.config.get('frontends', self.app_name, default=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) 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(): 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): (not name or module.name == name):
backend = module.createBackend(self) backend = module.create_backend(self)
self.backends[module.name] = backend self.backends[module.name] = backend
def loadmodule(self, modname, instname): def load_module(self, modname, instname):
module = self.modules_loader[modname] 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: if caps is None:
return self.backends return self.backends
d = {} d = {}
for name, backend in self.backends.iteritems(): for name, backend in self.backends.iteritems():
if backend.hasCaps(caps): if backend.has_caps(caps):
d[name] = backend d[name] = backend
return d return d

View file

@ -31,7 +31,7 @@ class BaseApplication(object):
def __init__(self): def __init__(self):
self.weboob = Weboob(self.APPNAME) 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): def ask(self, question, default=None, masked=False, regexp=None):
""" """

View file

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

View file

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