]> code.communitydata.science - rises_declines_wikia_code.git/blob - mediawiki_dump_tools/Mediawiki-Utilities/mw/database/collections/pages.py
add copy of the GPL
[rises_declines_wikia_code.git] / mediawiki_dump_tools / Mediawiki-Utilities / mw / database / collections / pages.py
1 import logging
2
3 from ...util import none_or
4 from .collection import Collection
5
6 logger = logging.getLogger("mw.database.collections.pages")
7
8
9 class Pages(Collection):
10     def get(self, page_id=None, namespace_title=None, rev_id=None):
11         """
12         Gets a single page based on a legitimate identifier of the page.  Note
13         that namespace_title expects a tuple of namespace ID and title.
14
15         :Parameters:
16             page_id : int
17                 Page ID
18             namespace_title : ( int, str )
19                 the page's namespace ID and title
20             rev_id : int
21                 a revision ID included in the page's history
22
23         :Returns:
24             iterator over result rows
25         """
26
27         page_id = none_or(page_id, int)
28         namespace_title = none_or(namespace_title, tuple)
29         rev_id = none_or(rev_id, int)
30
31         query = """
32         SELECT page.*
33         FROM page
34         """
35         values = []
36
37         if page_id is not None:
38             query += """
39                 WHERE page_id = %s
40             """
41             values.append(page_id)
42
43         if namespace_title is not None:
44             namespace, title = namespace_title
45
46             query += " WHERE page_namespace = %s and page_title = %s "
47             values.extend([int(namespace), str(title)])
48
49         elif rev_id is not None:
50             query += """
51                 WHERE page_id = (SELECT rev_page FROM revision WHERE rev_id = %s)
52             """
53             values.append(rev_id)
54
55         else:
56             raise TypeError("Must specify a page identifier.")
57
58         cursor = self.db.shared_connection.cursor()
59         cursor.execute(
60             query,
61             values
62         )
63
64         for row in cursor:
65             return row

Community Data Science Collective || Want to submit a patch?