Revision: 7479
Author: alexsh
Date: 2009-10-16 18:26:57 +0000 (Fri, 16 Oct 2009)
Log Message:
-----------
Move checkimages.EmailSender() functions detail to User().sendMailOld()
Modified Paths:
--------------
trunk/pywikipedia/checkimages.py
trunk/pywikipedia/userlib.py
Modified: trunk/pywikipedia/checkimages.py
===================================================================
--- trunk/pywikipedia/checkimages.py 2009-10-16 17:23:35 UTC (rev 7478)
+++ trunk/pywikipedia/checkimages.py 2009-10-16 18:26:57 UTC (rev 7479)
@@ -79,7 +79,7 @@
#
import re, time, urllib, urllib2, os, locale, sys, datetime
-import wikipedia, config, pagegenerators, catlib, query
+import wikipedia, config, pagegenerators, catlib, query, userlib
locale.setlocale(locale.LC_ALL, '')
@@ -532,52 +532,6 @@
time_zone = unicode(time.strftime(u"%d %b %Y %H:%M:%S (UTC)",
time.gmtime()))
wikipedia.output(u"%s%s" % (message, time_zone))
-class EmailSender(wikipedia.Page):
- """ Class to send emails through the Wikipedia's dedicated page. """
- def __init__(self, site, user):
- self.wikisite = site
- self.user = user
- page_special_name = u'Special:EmailUser'
- self.page_special_name = page_special_name
- # Special:EmailUser/Filnik
- page = '%s/%s' % (self.page_special_name, self.user)
- self.page = page
- wikipedia.Page.__init__(self, site, page, None, 0)
-
- def send(self, subject, text, prompt = True):
- """ Send an email through wikipedia's page. """
- host = self.site().hostname()
- address = '/w/index.php?title=%s&target=%s&action=submit' %
(self.page_special_name, self.user)
- # Getting the token.
- token = self.site().getToken(self)
- # Defing the predata.
- predata = {
- "wpSubject" : subject,
- "wpText" : text,
- 'wpSend' : "Send",
- 'wpCCMe' : '0',
- }
- predata['wpEditToken'] = token
- if self.site().hostname() in config.authenticate.keys():
- predata['Content-type'] = 'application/x-www-form-urlencoded'
- predata['User-agent'] = wikipedia.useragent
- data = self.site().urlEncode(predata)
- response = urllib2.urlopen(urllib2.Request('http://' +
self.site().hostname() + address, data))
- data = u''
- else:
- response, data = self.site().postForm(address, predata, sysop =
False)
- if data:
- if 'var wgAction = "success";' in data:
- wikipedia.output(u'Email sent')
- return True
- else:
- wikipedia.output(u'Email not sent')
- return False
- else:
- wikipedia.output(u'No data found.')
- return False
-
-
# Here there is the main class.
class main:
def __init__(self, site, logFulNumber = 25000, sendemailActive = False,
@@ -787,8 +741,12 @@
return # Exit
if self.sendemailActive:
text_to_send = re.sub(r'__user-nickname__', r'%s' %
self.luser, emailText)
- emailClass = EmailSender(self.site, self.luser)
- emailClass.send(emailSubj, text_to_send)
+ emailClass = userlib.User(self.site, self.luser)
+ try:
+ emailClass.sendMail(emailSubj, text_to_send)
+ except userlib.UserActionRefuse:
+ wikipedia.output("User is not mailable, aborted")
+ return # exit
def untaggedGenerator(self, untaggedProject, limit):
""" Generator that yield the files without license. It's based on a
tool of the toolserver. """
Modified: trunk/pywikipedia/userlib.py
===================================================================
--- trunk/pywikipedia/userlib.py 2009-10-16 17:23:35 UTC (rev 7478)
+++ trunk/pywikipedia/userlib.py 2009-10-16 18:26:57 UTC (rev 7479)
@@ -149,6 +149,11 @@
if not self.site().isAllowed('sendemail'):
raise UserActionRefuse("You don't have permission to send mail")
+ if wikipedia.config.use_api and self.site().versionnumber() > 14:
+ pass # will handle NotImplementedError later
+ else:
+ return self.sendMailOld(subject, text, ccMe)
+
params = {
'action': 'emailuser',
'target': self.name(),
@@ -169,10 +174,45 @@
elif 'emailuser' in result:
if result['emailuser']['result'] == 'Success':
+ wikipedia.output(u'Email sent.')
return True
return False
+ def sendMailOld(self, subject = u'', text = u'' ccMe = False):
+ addr = self.site().put_address('Special:EmailUser')
+ predata = {
+ "wpSubject" : subject,
+ "wpText" : text,
+ 'wpSend' : "Send",
+ 'wpCCMe' : '0',
+ }
+ if ccMe:
+ predata['wpCCMe'] = '1'
+
+ predata['wpEditToken'] = self.site().getToken()
+
+ if self.site().hostname() in wikipedia.config.authenticate.keys():
+ predata['Content-type'] = 'application/x-www-form-urlencoded'
+ predata['User-agent'] = wikipedia.useragent
+ data = self.site().urlEncode(predata)
+ response = wikipedia.urllib2.urlopen(urllib2.Request('http://' +
self.site().hostname() + addr, data))
+ data = response.read()
+ else:
+ response, data = self.site().postForm(address, predata, sysop =
False)
+
+ if data:
+ if 'var wgAction = "success";' in data:
+ wikipedia.output(u'Email sent.')
+ return True
+ else:
+ wikipedia.output(u'Email not sent.')
+ return False
+ else:
+ wikipedia.output(u'No data found.')
+ return False
+
+
def contributions(self, limit = 500, namespace = []):
""" Yields pages that the user has edited, with an upper bound of
``limit''.
Pages returned are not guaranteed to be unique
_______________________________________________
Pywikipedia-svn mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/pywikipedia-svn