Revision: 8169
Author:   russblau
Date:     2010-05-14 18:52:25 +0000 (Fri, 14 May 2010)

Log Message:
-----------
API interface for watching pages changed six months ago, but was not announced 
on its mailing list.  <sigh>

Modified Paths:
--------------
    branches/rewrite/pywikibot/page.py
    branches/rewrite/pywikibot/site.py

Modified: branches/rewrite/pywikibot/page.py
===================================================================
--- branches/rewrite/pywikibot/page.py  2010-05-14 18:40:44 UTC (rev 8168)
+++ branches/rewrite/pywikibot/page.py  2010-05-14 18:52:25 UTC (rev 8169)
@@ -690,7 +690,8 @@
             most wikis strongly encourage its use)
         @type comment: unicode
         @param watch: if True, add or if False, remove this Page to/from bot
-            user's watchlist; if None, leave watchlist status unchanged
+            user's watchlist; if None (default), follow bot account's default
+            settings
         @type watch: bool or None
         @param minor: if True, mark this edit as minor
         @type minor: bool
@@ -709,26 +710,27 @@
         if not comment:
             comment = config.default_edit_summary
         if watch is None:
-            unwatch = False
-            watch = False
+            watchval = None
+        elif watch:
+            watchval = "watch"
         else:
-            unwatch = not watch
+            watchval = "unwatch"
         if not force and not self.botMayEdit():
             raise pywikibot.PageNotSaved(
                 "Page %s not saved; editing restricted by {{bots}} template"
                 % self.title(asLink=True))
         if async:
-            pywikibot.async_request(self._save, comment, minor, watch, unwatch,
+            pywikibot.async_request(self._save, comment, minor, watchval,
                                     async, callback)
         else:
-            self._save(comment, minor, watch, unwatch, async, callback)
+            self._save(comment, minor, watchval, async, callback)
 
-    def _save(self, comment, minor, watch, unwatch, async, callback):
+    def _save(self, comment, minor, watchval, async, callback):
         err = None
         link = self.title(asLink=True)
         try:
             done = self.site().editpage(self, summary=comment, minor=minor,
-                                        watch=watch, unwatch=unwatch)
+                                        watch=watchval)
             if not done:
                 pywikibot.warning(u"Page %s not saved" % link)
                 raise pywikibot.PageNotSaved(link)

Modified: branches/rewrite/pywikibot/site.py
===================================================================
--- branches/rewrite/pywikibot/site.py  2010-05-14 18:40:44 UTC (rev 8168)
+++ branches/rewrite/pywikibot/site.py  2010-05-14 18:52:25 UTC (rev 8169)
@@ -2230,7 +2230,7 @@
     }
 
     def editpage(self, page, summary, minor=True, notminor=False,
-                 recreate=True, createonly=False, watch=False, unwatch=False):
+                 recreate=True, createonly=False, watch=None):
         """Submit an edited Page object to be saved to the wiki.
 
         @param page: The Page to be saved; its .text property will be used
@@ -2244,9 +2244,12 @@
             title has previously been deleted
         @param createonly: if True, raise an error if this title already
             exists on the wiki
-        @param watch: if True, add this Page to bot's watchlist
-        @param unwatch: if True, remove this Page from bot's watchlist if
-            possible
+        @param watch: Specify how the watchlist is affected by this edit, set
+            to one of "watch", "unwatch", "preferences", "nochange":
+            * watch: add the page to the watchlist
+            * unwatch: remove the page from the watchlist
+            * preferences: use the preference settings (Default)
+            * nochange: don't change the watchlist
         @return: True if edit succeeded, False if it failed
 
         """
@@ -2285,10 +2288,12 @@
             req['recreate'] = ""
         if createonly:
             req['createonly'] = ""
-        if watch:
-            req['watch'] = ""
-        elif unwatch:
-            req['unwatch'] = ""
+        if watch in ["watch", "unwatch", "preferences", "nochange"]:
+            req['watch'] = watch
+        elif watch:
+            pywikibot.warning(
+                u"editpage: Invalid watch value '%(watch)s' ignored."
+                  % locals())
 ## FIXME: API gives 'badmd5' error
 ##        md5hash = md5()
 ##        md5hash.update(urllib.quote_plus(text.encode(self.encoding())))
@@ -2643,7 +2648,7 @@
             'badfilename':
                 "Target filename is invalid.",
              'filetype-unwanted-type':
-                "File %(msg)s type is unwatched type.",
+                "File %(msg)s type is unwanted type.",
         }
 
         # check for required user right



_______________________________________________
Pywikipedia-svn mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/pywikipedia-svn

Reply via email to