diff --git a/extensions/base/__init__.py b/extensions/base/__init__.py index 2feb663..6ad4903 100644 --- a/extensions/base/__init__.py +++ b/extensions/base/__init__.py @@ -15,3 +15,6 @@ import extensions.base.mediawiki import extensions.base.abusefilter +import extensions.base.managewiki +import extensions.base.cargo +import extensions.base.datadump \ No newline at end of file diff --git a/extensions/base/datadump.py b/extensions/base/datadump.py new file mode 100644 index 0000000..366a75e --- /dev/null +++ b/extensions/base/datadump.py @@ -0,0 +1,73 @@ +# This file is part of Recent changes Goat compatible Discord webhook (RcGcDw). +# +# RcGcDw is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# RcGcDw is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with RcGcDw. If not, see . + + +import logging +from src.discord.message import DiscordMessage +from src.api import formatter +from src.i18n import rc_formatters +from src.api.context import Context +from src.api.util import embed_helper, compact_author, create_article_path, sanitize_to_markdown, sanitize_to_url + +_ = rc_formatters.gettext +ngettext = rc_formatters.ngettext + + +# DataDumps - https://www.mediawiki.org/wiki/Extension:DataDump +# datadump/generate - Generating a dump of wiki + + +@formatter.embed(event="datadump/generate") +def embed_datadump_generate(ctx: Context, change: dict) -> DiscordMessage: + embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url) + embed_helper(ctx, embed, change) + embed["title"] = _("Generated {file} dump").format(file=change["logparams"]["filename"]) + embed["url"] = create_article_path(sanitize_to_url(change["title"])) + embed["description"] = ctx.parsedcomment + return embed + + +@formatter.compact(event="mdatadump/generate") +def compact_datadump_generate(ctx: Context, change: dict): + author, author_url = compact_author(ctx, change) + parsed_comment = "" if ctx.parsedcomment is None else " *(" + ctx.parsedcomment + ")*" + content = _("[{author}]({author_url}) generated *{file}* dump{comment}").format( + author=author, author_url=author_url, file=change["logparams"]["filename"], + comment=parsed_comment + ) + return DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url, content=content) + +# datadump/delete - Deleting a dump of a wiki + + +@formatter.embed(event="datadump/delete") +def embed_datadump_delete(ctx: Context, change: dict) -> DiscordMessage: + embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url) + embed_helper(ctx, embed, change) + embed["title"] = _("Deleted {file} dump").format(file=change["logparams"]["filename"]) + embed["url"] = create_article_path(sanitize_to_url(change["title"])) + embed["description"] = ctx.parsedcomment + return embed + + +@formatter.compact(event="mdatadump/delete") +def compact_datadump_delete(ctx: Context, change: dict) -> DiscordMessage: + author, author_url = compact_author(ctx, change) + parsed_comment = "" if ctx.parsedcomment is None else " *(" + ctx.parsedcomment + ")*" + content = _("[{author}]({author_url}) deleted *{file}* dump{comment}").format( + author=author, author_url=author_url, file=change["logparams"]["filename"], + comment=parsed_comment + ) + return DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url, content=content) diff --git a/extensions/base/managewiki.py b/extensions/base/managewiki.py index f4f8524..85d8672 100644 --- a/extensions/base/managewiki.py +++ b/extensions/base/managewiki.py @@ -14,7 +14,6 @@ # along with RcGcDw. If not, see . import logging -import re from src.discord.message import DiscordMessage from src.api import formatter from src.i18n import rc_formatters @@ -34,6 +33,7 @@ def embed_managewiki_settings(ctx: Context, change: dict): embed_helper(ctx, embed, change) embed["url"] = create_article_path(sanitize_to_url(change["title"])) embed["title"] = _("Changed wiki settings") + embed["description"] = ctx.parsedcomment if change["logparams"].get("changes", ""): embed.add_field("Setting", sanitize_to_markdown(change["logparams"].get("changes"))) return embed @@ -53,6 +53,7 @@ def compact_managewiki_settings(ctx: Context, change: dict): def embed_managewiki_delete(ctx: Context, change: dict): embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url) embed_helper(ctx, embed, change) + embed["description"] = ctx.parsedcomment embed["url"] = create_article_path(sanitize_to_url(change["title"])) embed["title"] = _("Deleted a \"{wiki}\" wiki").format(wiki=change["logparams"].get("wiki", _("Unknown"))) return embed @@ -77,6 +78,7 @@ def compact_managewiki_delete(ctx: Context, change: dict): def embed_managewiki_lock(ctx: Context, change: dict): embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url) embed_helper(ctx, embed, change) + embed["description"] = ctx.parsedcomment embed["url"] = create_article_path(sanitize_to_url(change["title"])) embed["title"] = _("Locked a \"{wiki}\" wiki").format(wiki=change["logparams"].get("wiki", _("Unknown"))) return embed @@ -101,6 +103,7 @@ def embed_managewiki_namespaces(ctx: Context, change: dict): embed["url"] = create_article_path(sanitize_to_url(change["title"])) embed["title"] = _("Modified \"{namespace_name}\" namespace").format( namespace_name=change["logparams"].get("namespace", _("Unknown"))) + embed["description"] = ctx.parsedcomment embed.add_field(_('Wiki'), change["logparams"].get("wiki", _("Unknown"))) return embed @@ -124,6 +127,7 @@ def embed_managewiki_namespaces_delete(ctx: Context, change: dict): embed["url"] = create_article_path(sanitize_to_url(change["title"])) embed["title"] = _("Deleted a \"{namespace_name}\" namespace").format( namespace_name=change["logparams"].get("namespace", _("Unknown"))) + embed["description"] = ctx.parsedcomment embed.add_field(_('Wiki'), change["logparams"].get("wiki", _("Unknown"))) return embed @@ -148,6 +152,7 @@ def embed_managewiki_rights(ctx: Context, change: dict): embed_helper(ctx, embed, change) embed["url"] = create_article_path(sanitize_to_url(change["title"])) group_name = change["title"].split("/permissions/", 1)[1] + embed["description"] = ctx.parsedcomment embed["title"] = _("Modified \"{usergroup_name}\" usergroup").format(usergroup_name=group_name) return embed @@ -170,6 +175,7 @@ def embed_managewiki_undelete(ctx: Context, change: dict): embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url) embed_helper(ctx, embed, change) embed["url"] = create_article_path(sanitize_to_url(change["title"])) + embed["description"] = ctx.parsedcomment embed["title"] = _("Undeleted a \"{wiki}\" wiki").format(wiki=change["logparams"].get("wiki", _("Unknown"))) return embed @@ -192,6 +198,7 @@ def embed_managewiki_unlock(ctx: Context, change: dict): embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url) embed_helper(ctx, embed, change) embed["url"] = create_article_path(sanitize_to_url(change["title"])) + embed["description"] = ctx.parsedcomment embed["title"] = _("Unlocked a \"{wiki}\" wiki").format(wiki=change["logparams"].get("wiki", _("Unknown"))) return embed diff --git a/extensions/base/mediawiki.py b/extensions/base/mediawiki.py index 47d22bd..e83d940 100644 --- a/extensions/base/mediawiki.py +++ b/extensions/base/mediawiki.py @@ -32,6 +32,10 @@ ngettext = rc_formatters.ngettext logger = logging.getLogger("extensions.base") +if 1 == 2: # additional translation strings in unreachable code + print(_("director"), _("bot"), _("editor"), _("directors"), _("sysop"), _("bureaucrat"), _("reviewer"), + _("autoreview"), _("autopatrol"), _("wiki_guardian")) + # Page edit - event edit, New - page creation diff --git a/src/discussions.py b/src/discussions.py index 6d03ceb..2e9f935 100644 --- a/src/discussions.py +++ b/src/discussions.py @@ -51,6 +51,12 @@ display_mode = settings.get("fandom_discussions", {}).get("appearance", {}).get( webhook_url =settings.get("fandom_discussions", {}).get("webhookURL", settings.get("webhookURL")) +def inject_client(client_obj): + """Function to avoid circular import issues""" + global client + client = client_obj + + def fetch_discussions(): messagequeue.resend_msgs() request = safe_request(fetch_url) @@ -118,10 +124,6 @@ def parse_discussion_post(post, comment_pages): send_to_discord(message, meta=DiscordMessageMetadata("POST")) -def inject_client(client_obj): - global client - client = client_obj - def safe_request(url): """Function to assure safety of request, and do not crash the script on exceptions,""" try: diff --git a/src/rc_formatters.py b/src/rc_formatters.py index 9c5559d..c39d855 100644 --- a/src/rc_formatters.py +++ b/src/rc_formatters.py @@ -261,15 +261,8 @@ def compact_formatter(action, change, parsed_comment, categories, recent_changes elif action == "managewiki/unlock": elif action == "datadump/generate": - content = _("[{author}]({author_url}) generated *{file}* dump{comment}").format( - author=author, author_url=author_url, file=change["logparams"]["filename"], - comment=parsed_comment - ) elif action == "datadump/delete": - content = _("[{author}]({author_url}) deleted *{file}* dump{comment}").format( - author=author, author_url=author_url, file=change["logparams"]["filename"], - comment=parsed_comment - ) + elif action == "pagetranslation/mark": link = create_article_path(change["title"]) if "?" in link: @@ -621,11 +614,8 @@ def embed_formatter(action, change, parsed_comment, categories, recent_changes): elif action == "managewiki/unlock": elif action == "datadump/generate": - embed["title"] = _("Generated {file} dump").format(file=change["logparams"]["filename"]) - link = create_article_path(change["title"]) elif action == "datadump/delete": - embed["title"] = _("Deleted {file} dump").format(file=change["logparams"]["filename"]) - link = create_article_path(change["title"]) + elif action == "pagetranslation/mark": link = create_article_path(change["title"]) if "?" in link: diff --git a/src/rcgcdw.py b/src/rcgcdw.py index 59d74a0..c3ee456 100644 --- a/src/rcgcdw.py +++ b/src/rcgcdw.py @@ -336,9 +336,6 @@ if settings["rc_enabled"]: else: logger.info("Script started! RC is disabled however, this means no recent changes will be sent :c") -if 1 == 2: # additional translation strings in unreachable code - print(_("director"), _("bot"), _("editor"), _("directors"), _("sysop"), _("bureaucrat"), _("reviewer"), - _("autoreview"), _("autopatrol"), _("wiki_guardian"), ngettext("second", "seconds", 1), ngettext("minute", "minutes", 1), ngettext("hour", "hours", 1), ngettext("day", "days", 1), ngettext("week", "weeks", 1), ngettext("month", "months",1), ngettext("year", "years", 1), ngettext("millennium", "millennia", 1), ngettext("decade", "decades", 1), ngettext("century", "centuries", 1)) # noinspection PyUnreachableCode