diff --git a/pretix_matrix_inviter/forms.py b/pretix_matrix_inviter/forms.py index 2268b80eacdfcc117ecb4e062c2e0ec1c8b59f65..049d16775fb2b2207d2bcf92b395499248404105 100644 --- a/pretix_matrix_inviter/forms.py +++ b/pretix_matrix_inviter/forms.py @@ -3,6 +3,8 @@ from django.utils.translation import ugettext_lazy as _ from i18nfield.forms import I18nFormField, I18nTextInput from pretix.base.forms import SettingsForm +from .helpers import matrix_room_info_for_event + class MatrixInviterForm(SettingsForm): matrix_inviter_items = forms.MultipleChoiceField( @@ -21,11 +23,6 @@ class MatrixInviterForm(SettingsForm): label=_("Matrix server"), strip=True, ) - matrix_inviter_matrix_room = forms.RegexField( - label=_("Matrix room"), - regex="(!|#)[^:]+:.+", - strip=True, - ) matrix_inviter_hint = I18nFormField( widget=I18nTextInput, label=_("Help text for the Matrix ID field"), @@ -42,3 +39,24 @@ class MatrixInviterForm(SettingsForm): self.fields["matrix_inviter_items"].choices = [ (i.pk, i.name) for i in self.obj.items.all() ] + + room_info = matrix_room_info_for_event(self.obj) + if self.obj.settings.matrix_inviter_matrix_room.startswith("!"): + if room_info["canonical_alias"]: + room_help_text = _('"{name}" (<code>{canonical_alias}</code>)') + else: + room_help_text = _('"{name}"') + else: + if room_info["canonical_alias"]: + room_help_text = _( + '"{name}" (<code>{room_id}</code>, main alias: <code>{canonical_alias}</code>)' + ) + else: + room_help_text = _('"{name}" (<code>{room_id}</code>)') + + self.fields["matrix_inviter_matrix_room"] = forms.RegexField( + label=_("Matrix room"), + regex="(!|#)[^:]+:.+", + strip=True, + help_text=(room_help_text.format_map(room_info)), + ) diff --git a/pretix_matrix_inviter/helpers.py b/pretix_matrix_inviter/helpers.py index 4a7613c36bc9762256cabe25e591db1a2f1b8662..a5757ed862d355a87ca204b7c6ad74dc0fd16b3f 100644 --- a/pretix_matrix_inviter/helpers.py +++ b/pretix_matrix_inviter/helpers.py @@ -2,6 +2,30 @@ import requests from urllib.parse import quote as url_quote +def matrix_room_info_for_event(event): + return event.cache.get_or_set( + "matrix_room_info", + matrix_room_info( + event.settings.matrix_inviter_matrix_server, + event.settings.matrix_inviter_authorization_token, + event.settings.matrix_inviter_matrix_room, + ), + 120, + ) + + +def matrix_room_info(server, token, room_id_or_alias): + room_id = matrix_room_id(server, room_id_or_alias) + canonical_alias = matrix_room_canonical_alias_from_id(server, token, room_id) + name = matrix_room_name_from_id(server, token, room_id) + + return { + "room_id": room_id, + "canonical_alias": canonical_alias, + "name": name, + } + + def matrix_room_id(server, room_id_or_alias): if room_id_or_alias.startswith("!"): return room_id_or_alias @@ -18,3 +42,31 @@ def matrix_room_id_from_alias(server, alias): ) return r.json().get("room_id") + + +def matrix_room_canonical_alias_from_id(server, token, room_id): + r = requests.get( + "https://{}/_matrix/client/v3/rooms/{}/state/m.room.canonical_alias".format( + url_quote(server), + url_quote(room_id), + ), + headers={ + "Authorization": "Bearer {}".format(token), + }, + ) + + return r.json().get("alias") + + +def matrix_room_name_from_id(server, token, room_id): + r = requests.get( + "https://{}/_matrix/client/v3/rooms/{}/state/m.room.name".format( + url_quote(server), + url_quote(room_id), + ), + headers={ + "Authorization": "Bearer {}".format(token), + }, + ) + + return r.json().get("name") diff --git a/pretix_matrix_inviter/locale/de/LC_MESSAGES/django.po b/pretix_matrix_inviter/locale/de/LC_MESSAGES/django.po index 0143238f7076872132d2965e4c6b7d4cec5779de..c65e57a47fc1ba9ca1d8535822b081839f38e104 100644 --- a/pretix_matrix_inviter/locale/de/LC_MESSAGES/django.po +++ b/pretix_matrix_inviter/locale/de/LC_MESSAGES/django.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-02-04 19:41+0100\n" +"POT-Creation-Date: 2022-02-08 00:36+0100\n" "PO-Revision-Date: \n" "Last-Translator: Felix Schäfer\n" "Language-Team: \n" @@ -21,49 +21,75 @@ msgid "" "Space." msgstr "" -#: pretix_matrix_inviter/forms.py:12 +#: pretix_matrix_inviter/forms.py:14 msgid "Ask Matrix ID for" msgstr "" -#: pretix_matrix_inviter/forms.py:17 +#: pretix_matrix_inviter/forms.py:19 msgid "Authorization token" msgstr "" -#: pretix_matrix_inviter/forms.py:21 +#: pretix_matrix_inviter/forms.py:23 msgid "Matrix server" msgstr "" -#: pretix_matrix_inviter/forms.py:25 -msgid "Matrix room" +#: pretix_matrix_inviter/forms.py:28 +msgid "Help text for the Matrix ID field" msgstr "" -#: pretix_matrix_inviter/forms.py:31 -msgid "Help text for the Matrix ID field" +#: pretix_matrix_inviter/forms.py:33 +msgid "Invitiation message" +msgstr "" + +#: pretix_matrix_inviter/forms.py:46 +#, python-brace-format +msgid "\"{name}\" (<code>{canonical_alias}</code>)" +msgstr "" + +#: pretix_matrix_inviter/forms.py:48 +#, python-brace-format +msgid "\"{name}\"" +msgstr "" + +#: pretix_matrix_inviter/forms.py:52 +#, python-brace-format +msgid "" +"\"{name}\" (<code>{room_id}</code>, main alias: <code>{canonical_alias}</" +"code>)" +msgstr "" + +#: pretix_matrix_inviter/forms.py:55 +#, python-brace-format +msgid "\"{name}\" (<code>{room_id}</code>)" +msgstr "" + +#: pretix_matrix_inviter/forms.py:58 +msgid "Matrix room" msgstr "" #: pretix_matrix_inviter/signals.py:22 msgid "You will be invited to the event's Matrix Space." msgstr "" -#: pretix_matrix_inviter/signals.py:42 +#: pretix_matrix_inviter/signals.py:47 msgid "Matrix ID" msgstr "" -#: pretix_matrix_inviter/signals.py:47 +#: pretix_matrix_inviter/signals.py:52 msgid "Enter a Matrix ID of the form @username:homeserver.tld" msgstr "" -#: pretix_matrix_inviter/signals.py:82 +#: pretix_matrix_inviter/signals.py:94 #: pretix_matrix_inviter/templates/pretix_matrix_inviter/settings.html:6 msgid "Matrix inviter" msgstr "" -#: pretix_matrix_inviter/signals.py:103 +#: pretix_matrix_inviter/signals.py:115 #, python-brace-format msgid "{matrix_id} has been invited to {matrix_room}." msgstr "" -#: pretix_matrix_inviter/signals.py:106 +#: pretix_matrix_inviter/signals.py:118 #, python-brace-format msgid "There was an error inviting {matrix_id} to {matrix_room}: {error}" msgstr "" diff --git a/pretix_matrix_inviter/locale/de_Informal/LC_MESSAGES/django.po b/pretix_matrix_inviter/locale/de_Informal/LC_MESSAGES/django.po index 0143238f7076872132d2965e4c6b7d4cec5779de..c65e57a47fc1ba9ca1d8535822b081839f38e104 100644 --- a/pretix_matrix_inviter/locale/de_Informal/LC_MESSAGES/django.po +++ b/pretix_matrix_inviter/locale/de_Informal/LC_MESSAGES/django.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-02-04 19:41+0100\n" +"POT-Creation-Date: 2022-02-08 00:36+0100\n" "PO-Revision-Date: \n" "Last-Translator: Felix Schäfer\n" "Language-Team: \n" @@ -21,49 +21,75 @@ msgid "" "Space." msgstr "" -#: pretix_matrix_inviter/forms.py:12 +#: pretix_matrix_inviter/forms.py:14 msgid "Ask Matrix ID for" msgstr "" -#: pretix_matrix_inviter/forms.py:17 +#: pretix_matrix_inviter/forms.py:19 msgid "Authorization token" msgstr "" -#: pretix_matrix_inviter/forms.py:21 +#: pretix_matrix_inviter/forms.py:23 msgid "Matrix server" msgstr "" -#: pretix_matrix_inviter/forms.py:25 -msgid "Matrix room" +#: pretix_matrix_inviter/forms.py:28 +msgid "Help text for the Matrix ID field" msgstr "" -#: pretix_matrix_inviter/forms.py:31 -msgid "Help text for the Matrix ID field" +#: pretix_matrix_inviter/forms.py:33 +msgid "Invitiation message" +msgstr "" + +#: pretix_matrix_inviter/forms.py:46 +#, python-brace-format +msgid "\"{name}\" (<code>{canonical_alias}</code>)" +msgstr "" + +#: pretix_matrix_inviter/forms.py:48 +#, python-brace-format +msgid "\"{name}\"" +msgstr "" + +#: pretix_matrix_inviter/forms.py:52 +#, python-brace-format +msgid "" +"\"{name}\" (<code>{room_id}</code>, main alias: <code>{canonical_alias}</" +"code>)" +msgstr "" + +#: pretix_matrix_inviter/forms.py:55 +#, python-brace-format +msgid "\"{name}\" (<code>{room_id}</code>)" +msgstr "" + +#: pretix_matrix_inviter/forms.py:58 +msgid "Matrix room" msgstr "" #: pretix_matrix_inviter/signals.py:22 msgid "You will be invited to the event's Matrix Space." msgstr "" -#: pretix_matrix_inviter/signals.py:42 +#: pretix_matrix_inviter/signals.py:47 msgid "Matrix ID" msgstr "" -#: pretix_matrix_inviter/signals.py:47 +#: pretix_matrix_inviter/signals.py:52 msgid "Enter a Matrix ID of the form @username:homeserver.tld" msgstr "" -#: pretix_matrix_inviter/signals.py:82 +#: pretix_matrix_inviter/signals.py:94 #: pretix_matrix_inviter/templates/pretix_matrix_inviter/settings.html:6 msgid "Matrix inviter" msgstr "" -#: pretix_matrix_inviter/signals.py:103 +#: pretix_matrix_inviter/signals.py:115 #, python-brace-format msgid "{matrix_id} has been invited to {matrix_room}." msgstr "" -#: pretix_matrix_inviter/signals.py:106 +#: pretix_matrix_inviter/signals.py:118 #, python-brace-format msgid "There was an error inviting {matrix_id} to {matrix_room}: {error}" msgstr "" diff --git a/pretix_matrix_inviter/locale/django.pot b/pretix_matrix_inviter/locale/django.pot index f73cc69a7c1405ac1f5a6f20392359d6bc72d3d2..8d5ada0f7879419fa61c3eebf7e7854e09b95e6b 100644 --- a/pretix_matrix_inviter/locale/django.pot +++ b/pretix_matrix_inviter/locale/django.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-02-04 19:41+0100\n" +"POT-Creation-Date: 2022-02-08 00:36+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" @@ -27,49 +27,75 @@ msgid "" "Space." msgstr "" -#: pretix_matrix_inviter/forms.py:12 +#: pretix_matrix_inviter/forms.py:14 msgid "Ask Matrix ID for" msgstr "" -#: pretix_matrix_inviter/forms.py:17 +#: pretix_matrix_inviter/forms.py:19 msgid "Authorization token" msgstr "" -#: pretix_matrix_inviter/forms.py:21 +#: pretix_matrix_inviter/forms.py:23 msgid "Matrix server" msgstr "" -#: pretix_matrix_inviter/forms.py:25 -msgid "Matrix room" +#: pretix_matrix_inviter/forms.py:28 +msgid "Help text for the Matrix ID field" msgstr "" -#: pretix_matrix_inviter/forms.py:31 -msgid "Help text for the Matrix ID field" +#: pretix_matrix_inviter/forms.py:33 +msgid "Invitiation message" +msgstr "" + +#: pretix_matrix_inviter/forms.py:46 +#, python-brace-format +msgid "\"{name}\" (<code>{canonical_alias}</code>)" +msgstr "" + +#: pretix_matrix_inviter/forms.py:48 +#, python-brace-format +msgid "\"{name}\"" +msgstr "" + +#: pretix_matrix_inviter/forms.py:52 +#, python-brace-format +msgid "" +"\"{name}\" (<code>{room_id}</code>, main alias: <code>{canonical_alias}</" +"code>)" +msgstr "" + +#: pretix_matrix_inviter/forms.py:55 +#, python-brace-format +msgid "\"{name}\" (<code>{room_id}</code>)" +msgstr "" + +#: pretix_matrix_inviter/forms.py:58 +msgid "Matrix room" msgstr "" #: pretix_matrix_inviter/signals.py:22 msgid "You will be invited to the event's Matrix Space." msgstr "" -#: pretix_matrix_inviter/signals.py:42 +#: pretix_matrix_inviter/signals.py:47 msgid "Matrix ID" msgstr "" -#: pretix_matrix_inviter/signals.py:47 +#: pretix_matrix_inviter/signals.py:52 msgid "Enter a Matrix ID of the form @username:homeserver.tld" msgstr "" -#: pretix_matrix_inviter/signals.py:82 +#: pretix_matrix_inviter/signals.py:94 #: pretix_matrix_inviter/templates/pretix_matrix_inviter/settings.html:6 msgid "Matrix inviter" msgstr "" -#: pretix_matrix_inviter/signals.py:103 +#: pretix_matrix_inviter/signals.py:115 #, python-brace-format msgid "{matrix_id} has been invited to {matrix_room}." msgstr "" -#: pretix_matrix_inviter/signals.py:106 +#: pretix_matrix_inviter/signals.py:118 #, python-brace-format msgid "There was an error inviting {matrix_id} to {matrix_room}: {error}" msgstr ""