diff --git a/docs/toolset.rst b/docs/toolset.rst index 83efa49..b8a4124 100644 --- a/docs/toolset.rst +++ b/docs/toolset.rst @@ -117,6 +117,8 @@ Create :py:class:`earwigbot.wiki.Page ` objects with :py:meth:`user.get_talkpage() `. They provide the following attributes: +- :py:attr:`~earwigbot.wiki.page.Page.site`: the page's corresponding + :py:class:`~earwigbot.wiki.site.Site` object - :py:attr:`~earwigbot.wiki.page.Page.title`: the page's title, or pagename - :py:attr:`~earwigbot.wiki.page.Page.exists`: whether the page exists - :py:attr:`~earwigbot.wiki.page.Page.pageid`: an integer ID representing the diff --git a/earwigbot/commands/afc_report.py b/earwigbot/commands/afc_report.py index dfb612b..54a077b 100644 --- a/earwigbot/commands/afc_report.py +++ b/earwigbot/commands/afc_report.py @@ -70,16 +70,16 @@ class Command(BaseCommand): def get_page(self, title): page = self.site.get_page(title, follow_redirects=False) - if page.exists()[0]: + if page.exists[0]: return page def report(self, page): - url = page.url().replace("en.wikipedia.org/wiki", "enwp.org") - short = self.statistics.get_short_title(page.title()) + url = page.url.replace("en.wikipedia.org/wiki", "enwp.org") + short = self.statistics.get_short_title(page.title) status = self.get_status(page) user = self.site.get_user(page.creator()) user_name = user.name() - user_url = user.get_talkpage().url() + user_url = user.get_talkpage().url msg1 = "AfC submission report for \x0302{0}\x0301 ({1}):" msg2 = "Status: \x0303{0}\x0301" @@ -92,9 +92,9 @@ class Command(BaseCommand): self.say(self.data.chan, msg3.format(user_name, user_url)) def get_status(self, page): - if page.is_redirect(): + if page.is_redirect: target = page.get_redirect_target() - if self.site.get_page(target).namespace() == wiki.NS_MAIN: + if self.site.get_page(target).namespace == wiki.NS_MAIN: return "accepted" return "redirect" diff --git a/earwigbot/tasks/afc_copyvios.py b/earwigbot/tasks/afc_copyvios.py index 2e651aa..5035ab7 100644 --- a/earwigbot/tasks/afc_copyvios.py +++ b/earwigbot/tasks/afc_copyvios.py @@ -70,13 +70,13 @@ class Task(BaseTask): def process(self, page): """Detect copyvios in 'page' and add a note if any are found.""" - title = page.title() + title = page.title if title in self.ignore_list: msg = "Skipping page in ignore list: [[{0}]]" self.logger.info(msg.format(title)) return - pageid = page.pageid() + pageid = page.pageid if self.has_been_processed(pageid): msg = "Skipping check on already processed page [[{0}]]" self.logger.info(msg.format(title)) @@ -143,7 +143,7 @@ class Task(BaseTask): This will only be called if "cache_results" == True in the task's config, which is False by default. """ - pageid = page.pageid() + pageid = page.pageid hash = sha256(page.get()).hexdigest() query1 = "SELECT 1 FROM cache WHERE cache_id = ?" query2 = "DELETE FROM cache WHERE cache_id = ?" diff --git a/earwigbot/tasks/afc_history.py b/earwigbot/tasks/afc_history.py index dffdb70..2e95b67 100644 --- a/earwigbot/tasks/afc_history.py +++ b/earwigbot/tasks/afc_history.py @@ -93,7 +93,7 @@ class Task(BaseTask): generator = self.backwards_cat_iterator() for d in xrange(num_days): category = generator.next() - date = category.title().split("/")[-1] + date = category.title.split("/")[-1] self.update_date(date, category) sleep(10) self.logger.info("Update complete") @@ -104,7 +104,7 @@ class Task(BaseTask): generator = self.backwards_cat_iterator() for d in xrange(num_days): category = generator.next() - date = category.title().split("/")[-1] + date = category.title.split("/")[-1] data[date] = self.get_date_counts(date) data = OrderedDict(reversed(data.items())) # Oldest to most recent @@ -123,7 +123,7 @@ class Task(BaseTask): current -= timedelta(1) # Subtract one day from date def update_date(self, date, category): - msg = "Updating {0} ([[{1}]])".format(date, category.title()) + msg = "Updating {0} ([[{1}]])".format(date, category.title) self.logger.debug(msg) q_select = "SELECT page_date, page_status FROM page WHERE page_id = ?" @@ -153,7 +153,7 @@ class Task(BaseTask): def get_status(self, title, pageid): page = self.site.get_page(title) - ns = page.namespace() + ns = page.namespace if ns == wiki.NS_FILE_TALK: # Ignore accepted FFU requests return self.STATUS_NONE @@ -161,7 +161,7 @@ class Task(BaseTask): if ns == wiki.NS_TALK: new_page = page.toggle_talk() sleep(2) - if new_page.is_redirect(): + if new_page.is_redirect: return self.STATUS_NONE # Ignore accepted AFC/R requests return self.STATUS_ACCEPT diff --git a/earwigbot/tasks/afc_statistics.py b/earwigbot/tasks/afc_statistics.py index b177734..bf1a574 100644 --- a/earwigbot/tasks/afc_statistics.py +++ b/earwigbot/tasks/afc_statistics.py @@ -129,7 +129,7 @@ class Task(BaseTask): "~~~ at ~~~~~", newtext) page.edit(newtext, summary, minor=True, bot=True) - self.logger.info(u"Chart saved to [[{0}]]".format(page.title())) + self.logger.info(u"Chart saved to [[{0}]]".format(page.title)) def compile_charts(self): """Compile and return all statistics information from our local db.""" @@ -332,7 +332,7 @@ class Task(BaseTask): self.logger.error(msg) return - namespace = self.site.get_page(title).namespace() + namespace = self.site.get_page(title).namespace status, chart = self.get_status_and_chart(content, namespace) if chart == self.CHART_NONE: msg = u"Could not find a status for [[{0}]]".format(title) @@ -364,7 +364,7 @@ class Task(BaseTask): self.logger.error(msg) return - namespace = self.site.get_page(title).namespace() + namespace = self.site.get_page(title).namespace status, chart = self.get_status_and_chart(content, namespace) if chart == self.CHART_NONE: self.untrack_page(cursor, pageid) diff --git a/earwigbot/wiki/category.py b/earwigbot/wiki/category.py index 06fbcbd..9b8490b 100644 --- a/earwigbot/wiki/category.py +++ b/earwigbot/wiki/category.py @@ -49,14 +49,14 @@ class Category(Page): def __str__(self): """Returns a nice string representation of the Category.""" - return ''.format(self.title(), str(self._site)) + return ''.format(self.title, str(self._site)) def _get_members_via_sql(self, limit): """Return a list of tuples of (title, pageid) in the category.""" query = """SELECT page_title, page_namespace, page_id FROM page JOIN categorylinks ON page_id = cl_from WHERE cl_to = ?""" - title = self.title().replace(" ", "_").split(":", 1)[1] + title = self.title.replace(" ", "_").split(":", 1)[1] if limit: query += " LIMIT ?" diff --git a/earwigbot/wiki/page.py b/earwigbot/wiki/page.py index 66581e6..e589afa 100644 --- a/earwigbot/wiki/page.py +++ b/earwigbot/wiki/page.py @@ -41,6 +41,7 @@ class Page(CopyrightMixin): *Attributes:* + - :py:attr:`site`: the page's corresponding Site object - :py:attr:`title`: the page's title, or pagename - :py:attr:`exists`: whether the page exists - :py:attr:`pageid`: an integer ID representing the page @@ -128,9 +129,9 @@ class Page(CopyrightMixin): def __str__(self): """Returns a nice string representation of the Page.""" - return ''.format(self.title(), str(self._site)) + return ''.format(self.title, str(self._site)) - def _force_validity(self): + def _assert_validity(self): """Used to ensure that our page's title is valid. If this method is called when our page is not valid (and after @@ -143,14 +144,14 @@ class Page(CopyrightMixin): e = "Page '{0}' is invalid.".format(self._title) raise exceptions.InvalidPageError(e) - def _force_existence(self): + def _assert_existence(self): """Used to ensure that our page exists. If this method is called when our page doesn't exist (and after _load_attributes() has been called), PageNotFoundError will be raised. - It will also call _force_validity() beforehand. + It will also call _assert_validity() beforehand. """ - self._force_validity() + self._assert_validity() if self._exists == 2: e = "Page '{0}' does not exist.".format(self._title) raise exceptions.PageNotFoundError(e) @@ -267,7 +268,7 @@ class Page(CopyrightMixin): # self._load_attributes(). In that case, some of our attributes are # outdated, so force another self._load_attributes(): self._load_attributes() - self._force_existence() + self._assert_existence() def _edit(self, params=None, text=None, summary=None, minor=None, bot=None, force=None, section=None, captcha_id=None, captcha_word=None, @@ -290,7 +291,7 @@ class Page(CopyrightMixin): raise exceptions.PermissionsError(e) # Weed out invalid pages before we get too far: - self._force_validity() + self._assert_validity() # Build our API query string: if not params: @@ -430,6 +431,11 @@ class Page(CopyrightMixin): raise exceptions.PermissionsError(e) @property + def site(self): + """The Page's corresponding Site object.""" + return self._site + + @property def title(self): """The Page's title, or "pagename". @@ -474,7 +480,7 @@ class Page(CopyrightMixin): """ if self._exists == 0: self._load() - self._force_existence() # Missing pages do not have IDs + self._assert_existence() # Missing pages do not have IDs return self._pageid @property @@ -514,7 +520,7 @@ class Page(CopyrightMixin): """ if self._exists == 0: self._load() - self._force_validity() # Invalid pages cannot be protected + self._assert_validity() # Invalid pages cannot be protected return self._protection @property @@ -608,7 +614,7 @@ class Page(CopyrightMixin): "intoken": "edit", "rvprop": "content|timestamp"} result = self._site._api_query(params) self._load_attributes(result=result) - self._force_existence() + self._assert_existence() self._load_content(result=result) # Follow redirects if we're told to: @@ -623,7 +629,7 @@ class Page(CopyrightMixin): # Make sure we're dealing with a real page here. This may be outdated # if the page was deleted since we last called self._load_attributes(), # but self._load_content() can handle that: - self._force_existence() + self._assert_existence() if self._content is None: self._load_content() @@ -662,10 +668,10 @@ class Page(CopyrightMixin): """ if self._exists == 0: self._load() - self._force_existence() + self._assert_existence() if not self._creator: self._load() - self._force_existence() + self._assert_existence() return self._site.get_user(self._creator) def edit(self, text, summary, minor=False, bot=True, force=False):