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
Branches
Tags
1 merge request!5Allow using room aliases
......@@ -23,7 +23,7 @@ class MatrixInviterForm(SettingsForm):
)
matrix_inviter_matrix_room = forms.RegexField(
label=_("Matrix room"),
regex="![^:]+:.+",
regex="(!|#)[^:]+:.+",
strip=True,
)
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
from pretix.celery_app import app
from urllib.parse import quote as url_quote
from .helpers import matrix_room_id
logger = logging.getLogger(__name__)
......@@ -30,7 +32,9 @@ def matrix_inviter_invite(
event = Event.objects.get(pk=event)
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}
if invitation_reason:
payload["reason"] = invitation_reason
......@@ -38,13 +42,11 @@ def matrix_inviter_invite(
try:
r = requests.post(
"https://{}/_matrix/client/v3/rooms/{}/invite".format(
url_quote(event.settings.matrix_inviter_matrix_server),
url_quote(room_matrix_id),
url_quote(server),
url_quote(room_id),
),
headers={
"Authorization": "Bearer {}".format(
event.settings.matrix_inviter_authorization_token
),
"Authorization": "Bearer {}".format(token),
},
json=payload,
)
......@@ -55,7 +57,7 @@ def matrix_inviter_invite(
"pretix_matrix_inviter.error",
data={
"matrix_id": user_matrix_id,
"matrix_room": room_matrix_id,
"matrix_room": room_id,
"error": "HTTP Code {} ({})".format(
r.status_code, r.json()["error"]
),
......@@ -73,7 +75,7 @@ def matrix_inviter_invite(
"pretix_matrix_inviter.error",
data={
"matrix_id": user_matrix_id,
"matrix_room": room_matrix_id,
"matrix_room": room_id,
"error": "HTTP Code {}".format(r.status_code),
},
)
......@@ -83,6 +85,6 @@ def matrix_inviter_invite(
"pretix_matrix_inviter.invite_sent",
data={
"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