jenkins-bot has submitted this change and it was merged.
Change subject: [FIX] Clean up moved_target merge
......................................................................
[FIX] Clean up moved_target merge
Some comments haven't been applied before the merge of d322e616.
Change-Id: Idb07451fc8ddb946f02de21769b8f4348bc354cc
---
M pywikibot/page.py
M tests/logentry_tests.py
2 files changed, 17 insertions(+), 8 deletions(-)
Approvals:
John Vandenberg: Looks good to me, approved
jenkins-bot: Verified
Objections:
XZise: There's a problem with this change, please improve
diff --git a/pywikibot/page.py b/pywikibot/page.py
index 2b9801b..5cbf80c 100644
--- a/pywikibot/page.py
+++ b/pywikibot/page.py
@@ -1464,7 +1464,7 @@
def moved_target(self):
"""Return a Page object for the target this Page was moved to.
- If this page was not moved, it will raise a PageNotFound exception.
+ If this page was not moved, it will raise a NoMoveTarget exception.
This method also works if the source was already deleted.
@rtype: pywikibot.Page
diff --git a/tests/logentry_tests.py b/tests/logentry_tests.py
index 55fbcb5..7cb7f9a 100644
--- a/tests/logentry_tests.py
+++ b/tests/logentry_tests.py
@@ -191,13 +191,14 @@
"""Test moved_target method."""
# main page was moved around
mainpage = self.get_mainpage(self.site)
- if self.sites[key]['target'] is not None:
- target = mainpage.moved_target()
- self.assertIsInstance(target, pywikibot.Page)
- self.assertEqual(target.title(),
- self.sites[key]['target'])
- # main page was moved back again, we test it.
- self.assertEqual(mainpage, target.moved_target())
+ if self.sites[key]['target'] is None:
+ raise unittest.SkipTest('No moved target')
+ target = mainpage.moved_target()
+ self.assertIsInstance(target, pywikibot.Page)
+ self.assertEqual(target.title(),
+ self.sites[key]['target'])
+ # main page was moved back again, we test it.
+ self.assertEqual(mainpage, target.moved_target())
def test_moved_target_fail_old(self):
"""Test moved_target method failing on older wiki."""
@@ -264,12 +265,20 @@
with self.assertRaises(pywikibot.NoPage):
self.get_mainpage(site).getMovedTarget()
+ self._do_test_warning_filename = False
+ self.assertDeprecation('pywikibot.page.BasePage.getMovedTarget is '
+ 'deprecated, use moved_target() instead.')
+
def test_moved_target_fail_de(self):
"""Test getMovedTarget method failing on de-wiki."""
page = pywikibot.Page(self.get_site('dewp'), 'Main Page')
with self.assertRaises(pywikibot.NoPage):
page.getMovedTarget()
+ self._do_test_warning_filename = False
+ self.assertDeprecation('pywikibot.page.BasePage.getMovedTarget is '
+ 'deprecated, use moved_target() instead.')
+
if __name__ == '__main__':
try:
--
To view, visit https://gerrit.wikimedia.org/r/220102
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: Idb07451fc8ddb946f02de21769b8f4348bc354cc
Gerrit-PatchSet: 1
Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-Owner: XZise <CommodoreFabianus(a)gmx.de>
Gerrit-Reviewer: John Vandenberg <jayvdb(a)gmail.com>
Gerrit-Reviewer: Ladsgroup <ladsgroup(a)gmail.com>
Gerrit-Reviewer: Merlijn van Deen <valhallasw(a)arctus.nl>
Gerrit-Reviewer: XZise <CommodoreFabianus(a)gmx.de>
Gerrit-Reviewer: jenkins-bot <>
Build Update for wikimedia/pywikibot-core
-------------------------------------
Build: #2427
Status: Broken
Duration: 18 minutes and 33 seconds
Commit: d322e61 (master)
Author: xqt
Message: Re-implement page.getMovedTarget() from compat
- Re-implement page.getMovedTarget() from compat which is used by
fixing_redirect and redirect scripts
- Implement a new NoMoveTarget exception derived from NoPage
Tests are added
bug: T100126
Change-Id: Iad97e7571fb5a1cdb16ec8ef72b26b4ea5be677c
View the changeset: https://github.com/wikimedia/pywikibot-core/compare/55fcd204f708...d322e616…
View the full build log and details: https://travis-ci.org/wikimedia/pywikibot-core/builds/67938295
--
You can configure recipients for build notifications in your .travis.yml file. See http://docs.travis-ci.com/user/notifications
jenkins-bot has submitted this change and it was merged.
Change subject: Re-implement page.getMovedTarget() from compat
......................................................................
Re-implement page.getMovedTarget() from compat
- Re-implement page.getMovedTarget() from compat which is used by
fixing_redirect and redirect scripts
- Implement a new NoMoveTarget exception derived from NoPage
Tests are added
bug: T100126
Change-Id: Iad97e7571fb5a1cdb16ec8ef72b26b4ea5be677c
---
M pywikibot/__init__.py
M pywikibot/exceptions.py
M pywikibot/page.py
M tests/logentry_tests.py
4 files changed, 113 insertions(+), 6 deletions(-)
Approvals:
John Vandenberg: Looks good to me, approved
jenkins-bot: Verified
diff --git a/pywikibot/__init__.py b/pywikibot/__init__.py
index 266a054..b1d2cc3 100644
--- a/pywikibot/__init__.py
+++ b/pywikibot/__init__.py
@@ -38,7 +38,7 @@
handleArgs,
)
from pywikibot.exceptions import (
- Error, InvalidTitle, BadTitle, NoPage, SectionError,
+ Error, InvalidTitle, BadTitle, NoPage, NoMoveTarget, SectionError,
SiteDefinitionError, NoSuchSite, UnknownSite, UnknownFamily,
UnknownExtension,
NoUsername, UserBlocked,
@@ -76,7 +76,8 @@
'exception', 'input_choice', 'input', 'input_yn', 'inputChoice',
'handle_args', 'handleArgs', 'showHelp', 'ui', 'log',
'calledModuleName', 'Bot', 'CurrentPageBot', 'WikidataBot',
- 'Error', 'InvalidTitle', 'BadTitle', 'NoPage', 'SectionError',
+ 'Error', 'InvalidTitle', 'BadTitle', 'NoPage', 'NoMoveTarget',
+ 'SectionError',
'SiteDefinitionError', 'NoSuchSite', 'UnknownSite', 'UnknownFamily',
'UnknownExtension',
'NoUsername', 'UserBlocked', 'UserActionRefuse',
diff --git a/pywikibot/exceptions.py b/pywikibot/exceptions.py
index ad09618..a8a8beb 100644
--- a/pywikibot/exceptions.py
+++ b/pywikibot/exceptions.py
@@ -27,6 +27,7 @@
- InterwikiRedirectPage: Page is a redirect to another site
- SectionError: The section specified by # does not exist
- NotEmailableError: The target user has disabled email
+ - NoMoveTarget: An expected move target page does not exist
PageSaveRelatedError: page exceptions within the save operation on a Page
(alias: PageNotSaved).
@@ -210,6 +211,15 @@
pass
+class NoMoveTarget(PageRelatedError):
+
+ """Expected move target page not found."""
+
+ message = "Move target page of %s not found."
+
+ pass
+
+
class SiteDefinitionError(Error): # noqa
"""Site does not exist"""
diff --git a/pywikibot/page.py b/pywikibot/page.py
index 07d68ff..2b9801b 100644
--- a/pywikibot/page.py
+++ b/pywikibot/page.py
@@ -1440,10 +1440,44 @@
If this page is not a redirect page, will raise an IsNotRedirectPage
exception. This method also can raise a NoPage exception.
- @return: Page
+ @rtype: pywikibot.Page
"""
return self.site.getredirtarget(self)
+ @deprecated('moved_target()')
+ def getMovedTarget(self):
+ """Return a Page object for the target this Page was moved to.
+
+ DEPRECATED: Use Page.moved_target().
+
+ If this page was not moved, it will raise a NoPage exception.
+ This method also works if the source was already deleted.
+
+ @rtype: pywikibot.Page
+ @raises NoPage: this page was not moved
+ """
+ try:
+ return self.moved_target()
+ except pywikibot.NoMoveTarget:
+ raise pywikibot.NoPage(self)
+
+ def moved_target(self):
+ """Return a Page object for the target this Page was moved to.
+
+ If this page was not moved, it will raise a PageNotFound exception.
+ This method also works if the source was already deleted.
+
+ @rtype: pywikibot.Page
+ @raises NoMoveTarget: this page was not moved
+ """
+ gen = iter(self.site.logevents(logtype='move', page=self, total=1))
+ try:
+ lastmove = next(gen)
+ except StopIteration:
+ raise pywikibot.NoMoveTarget(self)
+ else:
+ return lastmove.target_page
+
@deprecated_args(getText='content', reverseOrder='reverse')
def revisions(self, reverse=False, step=None, total=None, content=False,
rollback=False):
diff --git a/tests/logentry_tests.py b/tests/logentry_tests.py
index ea17f2e..55fbcb5 100644
--- a/tests/logentry_tests.py
+++ b/tests/logentry_tests.py
@@ -39,15 +39,18 @@
sites = {
'tewp': {
'family': 'wikipedia',
- 'code': 'test'
+ 'code': 'test',
+ 'target': 'Main Page on wheels',
},
'dewp': {
'family': 'wikipedia',
- 'code': 'de'
+ 'code': 'de',
+ 'target': 'Hauptseite',
},
'old': {
'family': 'lyricwiki',
- 'code': 'en'
+ 'code': 'en',
+ 'target': None,
}
}
@@ -184,6 +187,30 @@
self.assertIsInstance(logentry.previous_id, int)
self.assertIsInstance(logentry.auto, bool)
+ def test_moved_target(self, key):
+ """Test moved_target method."""
+ # main page was moved around
+ mainpage = self.get_mainpage(self.site)
+ if self.sites[key]['target'] is not None:
+ target = mainpage.moved_target()
+ self.assertIsInstance(target, pywikibot.Page)
+ self.assertEqual(target.title(),
+ self.sites[key]['target'])
+ # main page was moved back again, we test it.
+ self.assertEqual(mainpage, target.moved_target())
+
+ def test_moved_target_fail_old(self):
+ """Test moved_target method failing on older wiki."""
+ site = self.get_site('old')
+ with self.assertRaises(pywikibot.NoMoveTarget):
+ self.get_mainpage(site).moved_target()
+
+ def test_moved_target_fail_de(self):
+ """Test moved_target method failing on de-wiki."""
+ page = pywikibot.Page(self.get_site('dewp'), 'Main Page')
+ with self.assertRaises(pywikibot.NoMoveTarget):
+ page.moved_target()
+
class TestDeprecatedMethods(TestLogentriesBase, DeprecationTestCase):
@@ -194,6 +221,12 @@
logentry = self._get_logentry('move')
self.assertIsInstance(logentry.new_ns(), int)
self.assertEqual(logentry.new_title(), logentry.target_page)
+
+ self._do_test_warning_filename = False
+ self.assertDeprecation('pywikibot.logentries.MoveEntry.new_ns is '
+ 'deprecated, use target_ns.id instead.')
+ self.assertDeprecation('pywikibot.logentries.MoveEntry.new_title is '
+ 'deprecated, use target_page instead.')
def test_LogEntry_title(self, key):
"""Test title and page return the same instance."""
@@ -208,6 +241,35 @@
self.assertDeprecation()
self._reset_messages()
+ def test_getMovedTarget(self, key):
+ """Test getMovedTarget method."""
+ # main page was moved around
+ if self.sites[key]['target'] is None:
+ raise unittest.SkipTest('No moved target')
+ mainpage = self.get_mainpage(self.site)
+ target = mainpage.getMovedTarget()
+ self.assertIsInstance(target, pywikibot.Page)
+ self.assertEqual(target.title(),
+ self.sites[key]['target'])
+ # main page was moved back again, we test it.
+ self.assertEqual(mainpage, target.getMovedTarget())
+
+ self._do_test_warning_filename = False
+ self.assertDeprecation('pywikibot.page.BasePage.getMovedTarget is '
+ 'deprecated, use moved_target() instead.')
+
+ def test_moved_target_fail_old(self):
+ """Test getMovedTarget method failing on older wiki."""
+ site = self.get_site('old')
+ with self.assertRaises(pywikibot.NoPage):
+ self.get_mainpage(site).getMovedTarget()
+
+ def test_moved_target_fail_de(self):
+ """Test getMovedTarget method failing on de-wiki."""
+ page = pywikibot.Page(self.get_site('dewp'), 'Main Page')
+ with self.assertRaises(pywikibot.NoPage):
+ page.getMovedTarget()
+
if __name__ == '__main__':
try:
--
To view, visit https://gerrit.wikimedia.org/r/213856
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: Iad97e7571fb5a1cdb16ec8ef72b26b4ea5be677c
Gerrit-PatchSet: 10
Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-Owner: Xqt <info(a)gno.de>
Gerrit-Reviewer: John Vandenberg <jayvdb(a)gmail.com>
Gerrit-Reviewer: Ladsgroup <ladsgroup(a)gmail.com>
Gerrit-Reviewer: Merlijn van Deen <valhallasw(a)arctus.nl>
Gerrit-Reviewer: Mpaa <mpaa.wiki(a)gmail.com>
Gerrit-Reviewer: XZise <CommodoreFabianus(a)gmx.de>
Gerrit-Reviewer: Xqt <info(a)gno.de>
Gerrit-Reviewer: jenkins-bot <>