Skip to content

Commit 3edd1cc

Browse files
committed
Adds a revert window to lib.reverts.api and lib.reverts.database
1 parent 8e580b3 commit 3edd1cc

File tree

5 files changed

+22
-10
lines changed

5 files changed

+22
-10
lines changed

‎examples/lib.reverts.api.py‎

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,11 @@
55
from mw.api import Session
66
from mw.lib import reverts
77

8-
98
session = Session("https://en.wikipedia.org/w/api.php")
109
revisions = session.user_contribs.query(user={"PermaNoob"}, direction="newer")
1110

1211
for rev in revisions:
13-
revert = reverts.api.check_rev(session, rev)
12+
revert = reverts.api.check_rev(session, rev, window=60*60*24*2)
1413
if revert is not None:
1514
print("{0} reverted {1} to {2}".format(
1615
revert.reverting['revid'],

‎mw/__init__.py‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
from .types import Timestamp, Namespace
22

3-
__version__ = "0.4.13"
3+
__version__ = "0.4.14"

‎mw/lib/reverts/api.py‎

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ def check_rev(session, rev, **kwargs):
4242

4343

4444
def check(session, rev_id, page_id=None, radius=defaults.RADIUS,
45-
before=None, properties=None):
45+
before=None, window=None, properties=None):
4646
"""
4747
Checks whether a revision was reverted (identity) and returns a named tuple
4848
of Revert(reverting, reverteds, reverted_to).
@@ -55,9 +55,14 @@ def check(session, rev_id, page_id=None, radius=defaults.RADIUS,
5555
page_id : int
5656
the ID of the page the revision occupies (slower if not provided)
5757
radius : int
58-
a positive integer indicating the maximum number of revisions that can be reverted
58+
a positive integer indicating the maximum number of revisions
59+
that can be reverted
5960
before : :class:`mw.Timestamp`
60-
if set, limits the search for *reverting* revisions to those which were saved before this timestamp
61+
if set, limits the search for *reverting* revisions to those which
62+
were saved before this timestamp
63+
window : int
64+
if set, limits the search for *reverting* revisions to those which
65+
were saved within `window` seconds after the reverted edit
6166
properties : set( str )
6267
a set of properties to include in revisions (see :class:`mw.api.Revisions`)
6368
"""
@@ -99,6 +104,9 @@ def check(session, rev_id, page_id=None, radius=defaults.RADIUS,
99104
# reverted. Just return None.
100105
return None
101106

107+
if window is not None and before is None:
108+
before = Timestamp(current_rev['timestamp']) + window
109+
102110
# Load future revisions
103111
future_revs = session.revisions.query(
104112
pageids={page_id},

‎mw/lib/reverts/database.py‎

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,8 @@ def check_row(db, rev_row, **kwargs):
5151
return check(db, rev_id, page_id=page_id, **kwargs)
5252

5353

54-
def check(db, rev_id, page_id=None, radius=defaults.RADIUS, check_archive=False, before=None):
54+
def check(db, rev_id, page_id=None, radius=defaults.RADIUS, check_archive=False,
55+
before=None, window=None):
5556

5657
"""
5758
Checks whether a revision was reverted (identity) and returns a named tuple
@@ -70,6 +71,9 @@ def check(db, rev_id, page_id=None, radius=defaults.RADIUS, check_archive=False,
7071
should the archive table be checked for reverting revisions?
7172
before : `Timestamp`
7273
if set, limits the search for *reverting* revisions to those which were saved before this timestamp
74+
window : int
75+
if set, limits the search for *reverting* revisions to those which
76+
were saved within `window` seconds after the reverted edit
7377
"""
7478

7579
if not hasattr(db, "revisions") and hasattr(db, "all_revisions"):
@@ -113,6 +117,9 @@ def check(db, rev_id, page_id=None, radius=defaults.RADIUS, check_archive=False,
113117
# reverted. Just return None.
114118
return None
115119

120+
if window is not None and before is None:
121+
before = Timestamp(current_rev['rev_timestamp']) + window
122+
116123
# Load future revisions
117124
future_revs = dbrevs.query(
118125
page_id=page_id,

‎setup.py‎

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,9 @@
22

33
from setuptools import find_packages
44

5-
import mw
6-
75
setup(
86
name='mediawiki-utilities',
9-
version=mw.__version__,
7+
version="0.4.14",
108
author='Aaron Halfaker',
119
author_email='aaron.halfaker@gmail.com',
1210
packages=find_packages(),

0 commit comments

Comments
 (0)