def move(self, page: Page, new_title, reason='', move_talk=True, no_redirect=False, move_subpages=False, ignore_warnings=False): try: page.site = self.client page.move(new_title, reason=reason, move_talk=move_talk, no_redirect=no_redirect, move_subpages=move_subpages, ignore_warnings=ignore_warnings) except APIError as e: if e.code == 'badtoken': self._retry_login_action(self._retry_move, 'move', page=page, new_title=new_title, reason=reason, move_talk=move_talk, no_redirect=no_redirect, move_subpages=move_subpages, ignore_warnings=ignore_warnings) else: raise e
def save(self, page: Page, text, summary=u'', minor=False, bot=True, section=None, **kwargs): """ Performs a page edit, retrying the login once if the edit fails due to the user being logged out This function hopefully makes it easy to workaround the lag and frequent login timeouts experienced on the Fandom UCP platform compared to Gamepedia Hydra. :param page: mwclient Page object :param text: as in mwclient.Page.edit :param summary: as in mwclient.Page.edit :param minor: as in mwclient.Page.edit :param bot: as in mwclient.Page.edit :param section: as in mwclient.Page.edit :param kwargs: as in mwclient.Page.edit :return: nothing """ try: page.site = self.client page.edit(text, summary=summary, minor=minor, bot=bot, section=section, **kwargs) except self.write_errors: self._retry_login_action(self._retry_save, 'edit', page=page, text=text, summary=summary, minor=minor, bot=bot, section=section, **kwargs)
def delete(self, page: Page, reason='', watch=False, unwatch=False, oldimage=False): try: page.site = self.client page.delete(reason=reason, watch=watch, unwatch=unwatch, oldimage=oldimage) except APIError as e: if e.code == 'badtoken': self._retry_login_action(self._retry_delete, 'delete', page=page, reason=reason, watch=watch, unwatch=unwatch, oldimage=oldimage) else: raise e
def purge(self, page: Page): try: page.site = self.client page.purge() except self.write_errors: self._retry_login_action(self._retry_purge, 'purge', page=page)
def touch(self, page: Page): try: page.site = self.client page.touch() except self.write_errors: self._retry_login_action(self._retry_touch, 'touch', page=page)