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

Reply via email to