Skip to content
Snippets Groups Projects
Commit 3bca31b8 authored by Felix Schäfer's avatar Felix Schäfer :construction_worker:
Browse files

Allow using an alias instead of a room ID

parent d614b8f9
No related branches found
No related tags found
1 merge request!5Allow using room aliases
...@@ -23,7 +23,7 @@ class MatrixInviterForm(SettingsForm): ...@@ -23,7 +23,7 @@ class MatrixInviterForm(SettingsForm):
) )
matrix_inviter_matrix_room = forms.RegexField( matrix_inviter_matrix_room = forms.RegexField(
label=_("Matrix room"), label=_("Matrix room"),
regex="![^:]+:.+", regex="(!|#)[^:]+:.+",
strip=True, strip=True,
) )
matrix_inviter_hint = I18nFormField( matrix_inviter_hint = I18nFormField(
......
import requests
from urllib.parse import quote as url_quote
def matrix_room_id(server, room_id_or_alias):
if room_id_or_alias.startswith("!"):
return room_id_or_alias
else:
return matrix_room_id_from_alias(server, room_id_or_alias)
def matrix_room_id_from_alias(server, alias):
r = requests.get(
"https://{}/_matrix/client/v3/directory/room/{}".format(
url_quote(server),
url_quote(alias),
),
)
return r.json().get("room_id")
...@@ -6,6 +6,8 @@ from pretix.base.services.tasks import TransactionAwareTask ...@@ -6,6 +6,8 @@ from pretix.base.services.tasks import TransactionAwareTask
from pretix.celery_app import app from pretix.celery_app import app
from urllib.parse import quote as url_quote from urllib.parse import quote as url_quote
from .helpers import matrix_room_id
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
...@@ -30,7 +32,9 @@ def matrix_inviter_invite( ...@@ -30,7 +32,9 @@ def matrix_inviter_invite(
event = Event.objects.get(pk=event) event = Event.objects.get(pk=event)
order = Order.objects.get(pk=order) order = Order.objects.get(pk=order)
room_matrix_id = event.settings.matrix_inviter_matrix_room server = event.settings.matrix_inviter_matrix_server
token = event.settings.matrix_inviter_authorization_token
room_id = matrix_room_id(server, event.settings.matrix_inviter_matrix_room)
payload = {"user_id": user_matrix_id} payload = {"user_id": user_matrix_id}
if invitation_reason: if invitation_reason:
payload["reason"] = invitation_reason payload["reason"] = invitation_reason
...@@ -38,13 +42,11 @@ def matrix_inviter_invite( ...@@ -38,13 +42,11 @@ def matrix_inviter_invite(
try: try:
r = requests.post( r = requests.post(
"https://{}/_matrix/client/v3/rooms/{}/invite".format( "https://{}/_matrix/client/v3/rooms/{}/invite".format(
url_quote(event.settings.matrix_inviter_matrix_server), url_quote(server),
url_quote(room_matrix_id), url_quote(room_id),
), ),
headers={ headers={
"Authorization": "Bearer {}".format( "Authorization": "Bearer {}".format(token),
event.settings.matrix_inviter_authorization_token
),
}, },
json=payload, json=payload,
) )
...@@ -55,7 +57,7 @@ def matrix_inviter_invite( ...@@ -55,7 +57,7 @@ def matrix_inviter_invite(
"pretix_matrix_inviter.error", "pretix_matrix_inviter.error",
data={ data={
"matrix_id": user_matrix_id, "matrix_id": user_matrix_id,
"matrix_room": room_matrix_id, "matrix_room": room_id,
"error": "HTTP Code {} ({})".format( "error": "HTTP Code {} ({})".format(
r.status_code, r.json()["error"] r.status_code, r.json()["error"]
), ),
...@@ -73,7 +75,7 @@ def matrix_inviter_invite( ...@@ -73,7 +75,7 @@ def matrix_inviter_invite(
"pretix_matrix_inviter.error", "pretix_matrix_inviter.error",
data={ data={
"matrix_id": user_matrix_id, "matrix_id": user_matrix_id,
"matrix_room": room_matrix_id, "matrix_room": room_id,
"error": "HTTP Code {}".format(r.status_code), "error": "HTTP Code {}".format(r.status_code),
}, },
) )
...@@ -83,6 +85,6 @@ def matrix_inviter_invite( ...@@ -83,6 +85,6 @@ def matrix_inviter_invite(
"pretix_matrix_inviter.invite_sent", "pretix_matrix_inviter.invite_sent",
data={ data={
"matrix_id": user_matrix_id, "matrix_id": user_matrix_id,
"matrix_room": room_matrix_id, "matrix_room": room_id,
}, },
) )
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment