def diff_patrol(rev_id): if not submitted_request_valid(): return 'CSRF error', 400 session = authenticated_session() ids.append(flask.session, 'acted_page_ids', ids.rev_id_to_page_id(rev_id, session)) token = session.get(action='query', meta='tokens', type='patrol')['query']['tokens']['patroltoken'] session.post(action='patrol', revid=rev_id, token=token) return flask.redirect(flask.url_for('any_diff'))
def diff_rollback(rev_id): if not submitted_request_valid(): return 'CSRF error', 400 session = authenticated_session() ids.append(flask.session, 'acted_page_ids', ids.rev_id_to_page_id(rev_id, session)) results = session.get(action='query', meta='tokens', type='rollback', revids=[str(rev_id)], prop='revisions', rvprop='user', formatversion='2') token = results['query']['tokens']['rollbacktoken'] page = results['query']['pages'][0] pageid = page['pageid'] user = page['revisions'][0]['user'] try: session.post(action='rollback', pageid=pageid, user=user, token=token) except mwapi.errors.APIError as error: # TODO use errorformat='html' once mwapi supports it (mediawiki-utilities/python-mwapi#34) info_html = session.get(action='parse', text=error.info, prop=['text'], wrapoutputclass=None, disablelimitreport=True, contentmodel='wikitext', formatversion=2)['parse']['text'] return flask.render_template('rollback-error.html', rev_id=rev_id, user=user, info=flask.Markup(info_html)) else: return flask.redirect(flask.url_for('any_diff'))
def diff_skip(rev_id): if not submitted_request_valid(): return 'CSRF error', 400 ids.append(flask.session, 'skipped_rev_ids', rev_id) user_fake_id = ids.rev_id_to_user_fake_id(rev_id, any_session()) page_id = ids.rev_id_to_page_id(rev_id, any_session()) if user_fake_id in ids.get(flask.session, 'skipped_user_fake_ids'): if user_fake_id not in ids.get(flask.session, 'acted_user_fake_ids'): ids.append(flask.session, 'ignored_user_fake_ids', user_fake_id) if page_id in ids.get(flask.session, 'skipped_page_ids'): if page_id not in ids.get(flask.session, 'acted_page_ids'): ids.append(flask.session, 'ignored_page_ids', page_id) if user_fake_id not in ids.get(flask.session, 'skipped_user_fake_ids'): ids.append(flask.session, 'skipped_user_fake_ids', user_fake_id) else: ids.append(flask.session, 'skipped_page_ids', page_id) return flask.redirect(flask.url_for('any_diff'))