Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 27 additions & 0 deletions db.py
Original file line number Diff line number Diff line change
Expand Up @@ -87,3 +87,30 @@ def log_retraction_edit(timestamp, domain, page_title, old_id, new_id):
old_id=old_id,
new_id=new_id
))


def already_retracted(old_id, new_id, domain, page_title):
"""
Given old and new IDs, a domain, and a page title, check if this edit has
already been made in the past so we can avoid edit warring.
"""
cur = db.cursor()
query = """
SELECT COUNT(*) FROM edit_log
WHERE original_id = "{old_id}"
AND retraction_id = "{new_id}"
AND domain = "{domain}"
AND page_title = "{page_title}"
"""
cur.execute(query.format(
old_id=old_id,
new_id=new_id,
domain=domain,
page_title=page_title
))
count_result = cur.fetchone()

if count_result[0] != 0:
return True
else:
return False
36 changes: 22 additions & 14 deletions retractionbot.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,9 @@
import re
import yaml

from db import load_retracted_identifiers, log_retraction_edit
from db import (load_retracted_identifiers,
log_retraction_edit,
already_retracted)

directory = os.path.dirname(os.path.realpath(__file__))

Expand Down Expand Up @@ -119,19 +121,25 @@ def run_bot():

# Only bother trying to make an edit if we changed anything
if page_text != wp_page.text:
wp_page.text = page_text
edit_summary = "Flagging a cited source as retracted"

#wp_page.save(edit_summary, minor=False)
logger.info("Successfully edited {page_name} with "
"retracted source(s).".format(
page_name=wp_page.title()
))
log_retraction_edit(datetime.datetime.now(),
language + ".wikipedia.org",
wp_page,
original_id,
retraction_id)
domain = language + ".wikipedia.org"
# Make sure we're not edit warring
if not already_retracted(original_id,
retraction_id,
domain,
wp_page):
wp_page.text = page_text
edit_summary = "Flagging a cited source as retracted"

#wp_page.save(edit_summary, minor=False)
logger.info("Successfully edited {page_name} with "
"retracted source(s).".format(
page_name=wp_page.title()
))
log_retraction_edit(datetime.datetime.now(),
domain,
wp_page,
original_id,
retraction_id)


if __name__ == '__main__':
Expand Down