Skip to content
Snippets Groups Projects
Commit eb5fe685 authored by Luca's avatar Luca
Browse files

fix formatting

parent 45527539
No related branches found
No related tags found
No related merge requests found
Pipeline #177922 passed
from django.forms import ( from django.forms import CharField, CheckboxSelectMultiple, MultipleChoiceField
CharField,
CheckboxSelectMultiple,
MultipleChoiceField,
)
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
from i18nfield.forms import I18nFormField, I18nTextInput from i18nfield.forms import I18nFormField, I18nTextInput
from pretix.base.forms import SettingsForm from pretix.base.forms import SettingsForm
...@@ -19,9 +15,7 @@ class KeycloakCreatorForm(SettingsForm): ...@@ -19,9 +15,7 @@ class KeycloakCreatorForm(SettingsForm):
keycloak_create_user_authorization_token = CharField( keycloak_create_user_authorization_token = CharField(
label=_("Access token"), label=_("Access token"),
strip=True, strip=True,
help_text=_( help_text=_("Access token for the keycloak server. "),
"Access token for the keycloak server. "
),
) )
keycloak_create_user_realm_url = CharField( keycloak_create_user_realm_url = CharField(
label=_("Keycloak realm url"), label=_("Keycloak realm url"),
...@@ -32,9 +26,7 @@ class KeycloakCreatorForm(SettingsForm): ...@@ -32,9 +26,7 @@ class KeycloakCreatorForm(SettingsForm):
widget=I18nTextInput, widget=I18nTextInput,
label=_("Username field help text"), label=_("Username field help text"),
required=True, required=True,
help_text=_( help_text=_("Explains what to enter"),
"Explains what to enter"
),
) )
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
......
...@@ -5,17 +5,12 @@ from django.dispatch import receiver ...@@ -5,17 +5,12 @@ from django.dispatch import receiver
from django.urls import resolve, reverse from django.urls import resolve, reverse
from django.utils.translation import gettext_noop, ugettext_lazy as _ from django.utils.translation import gettext_noop, ugettext_lazy as _
from i18nfield.strings import LazyI18nString from i18nfield.strings import LazyI18nString
from pretix.base.services.orders import OrderError
from pretix.base.settings import settings_hierarkey from pretix.base.settings import settings_hierarkey
from pretix.base.signals import ( from pretix.base.signals import order_modified, order_placed, validate_order
order_modified,
order_placed,
validate_order,
)
from pretix.base.templatetags.rich_text import rich_text_snippet from pretix.base.templatetags.rich_text import rich_text_snippet
from pretix.control.signals import nav_event_settings from pretix.control.signals import nav_event_settings
from pretix.presale.signals import question_form_fields from pretix.presale.signals import question_form_fields
from pretix.base.services.orders import OrderError
from .tasks import keycloak_create_user from .tasks import keycloak_create_user
...@@ -24,9 +19,7 @@ settings_hierarkey.add_default("keycloak_create_user_authorization_token", "", s ...@@ -24,9 +19,7 @@ settings_hierarkey.add_default("keycloak_create_user_authorization_token", "", s
settings_hierarkey.add_default("keycloak_create_user_realm_url", "", str) settings_hierarkey.add_default("keycloak_create_user_realm_url", "", str)
settings_hierarkey.add_default( settings_hierarkey.add_default(
"keycloak_create_user_hint", "keycloak_create_user_hint",
LazyI18nString.from_gettext( LazyI18nString.from_gettext(gettext_noop("Your keycloak user will be created.")),
gettext_noop("Your keycloak user will be created.")
),
LazyI18nString, LazyI18nString,
) )
settings_hierarkey.add_default( settings_hierarkey.add_default(
...@@ -53,9 +46,7 @@ def add_keycloak_username_question(sender, position, **kwargs): ...@@ -53,9 +46,7 @@ def add_keycloak_username_question(sender, position, **kwargs):
required=False, required=False,
regex="[a-z0-9._=/-]+", regex="[a-z0-9._=/-]+",
strip=True, strip=True,
error_messages={ error_messages={"invalid": _("Enter a valid username")},
"invalid": _("Enter a valid username")
},
help_text=rich_text_snippet(sender.settings.keycloak_create_user_hint), help_text=rich_text_snippet(sender.settings.keycloak_create_user_hint),
) )
} }
...@@ -81,16 +72,13 @@ def keycloak_create_user_create_async(sender, order, **kwargs): ...@@ -81,16 +72,13 @@ def keycloak_create_user_create_async(sender, order, **kwargs):
): ):
continue continue
keycloak_create_user.apply_async( keycloak_create_user.apply_async(args=(sender.pk, order.pk, order_position.pk))
args=(
sender.pk,
order.pk,
order_position.pk
)
)
@receiver(nav_event_settings, dispatch_uid="keycloak_create_user_keycloak_username_nav_settings") @receiver(
nav_event_settings,
dispatch_uid="keycloak_create_user_keycloak_username_nav_settings",
)
def navbar_settings(sender, request=None, **kwargs): def navbar_settings(sender, request=None, **kwargs):
url = resolve(request.path_info) url = resolve(request.path_info)
return [ return [
...@@ -108,6 +96,7 @@ def navbar_settings(sender, request=None, **kwargs): ...@@ -108,6 +96,7 @@ def navbar_settings(sender, request=None, **kwargs):
} }
] ]
@receiver(validate_order, dispatch_uid="keycloak_create_user_validate_order") @receiver(validate_order, dispatch_uid="keycloak_create_user_validate_order")
def validate_order(sender, positions, **kwargs): def validate_order(sender, positions, **kwargs):
if ( if (
...@@ -115,7 +104,7 @@ def validate_order(sender, positions, **kwargs): ...@@ -115,7 +104,7 @@ def validate_order(sender, positions, **kwargs):
and not sender.settings.keycloak_create_user_realm_url and not sender.settings.keycloak_create_user_realm_url
): ):
return return
for order_position in positions.all(): for order_position in positions.all():
if str(order_position.item.pk) not in sender.settings.get( if str(order_position.item.pk) not in sender.settings.get(
"keycloak_create_user_items" "keycloak_create_user_items"
...@@ -127,7 +116,7 @@ def validate_order(sender, positions, **kwargs): ...@@ -127,7 +116,7 @@ def validate_order(sender, positions, **kwargs):
): ):
continue continue
event = sender event = sender
server = event.settings.keycloak_create_user_realm_url server = event.settings.keycloak_create_user_realm_url
token = event.settings.keycloak_create_user_authorization_token token = event.settings.keycloak_create_user_authorization_token
...@@ -137,17 +126,13 @@ def validate_order(sender, positions, **kwargs): ...@@ -137,17 +126,13 @@ def validate_order(sender, positions, **kwargs):
response = requests.get( response = requests.get(
"{}/users/count?username={}".format( "{}/users/count?username={}".format(
server, server, username # TODO verify that this is not a security issue
username # TODO verify that this is not a security issue
), ),
headers={ headers={
"Authorization": "Bearer {}".format(token), "Authorization": "Bearer {}".format(token),
}, },
) )
if response.status_code == 200: if response.status_code == 200:
if json.loads(response.text) > 0: if json.loads(response.text) > 0:
raise OrderError( raise OrderError(_("Username already taken"))
_("Username already taken")
)
...@@ -15,12 +15,7 @@ logger = logging.getLogger(__name__) ...@@ -15,12 +15,7 @@ logger = logging.getLogger(__name__)
retry_backoff=True, retry_backoff=True,
retry_backoff_max=3600, retry_backoff_max=3600,
) )
def keycloak_create_user( def keycloak_create_user(self, event: int, order: int, order_position: int):
self,
event: int,
order: int,
order_position: int
):
order_position = OrderPosition.objects.get(pk=order_position) order_position = OrderPosition.objects.get(pk=order_position)
username = order_position.meta_info_data.get("question_form_data", {}).get( username = order_position.meta_info_data.get("question_form_data", {}).get(
...@@ -33,13 +28,15 @@ def keycloak_create_user( ...@@ -33,13 +28,15 @@ def keycloak_create_user(
order = Order.objects.get(pk=order) order = Order.objects.get(pk=order)
server = event.settings.keycloak_create_user_realm_url server = event.settings.keycloak_create_user_realm_url
token = event.settings.keycloak_create_user_authorization_token token = event.settings.keycloak_create_user_authorization_token
payload = {"username": username, "email": order_position.order.email, "enabled": True} payload = {
"username": username,
"email": order_position.order.email,
"enabled": True,
}
try: try:
r = requests.post( r = requests.post(
"{}/users".format( "{}/users".format(server),
server
),
headers={ headers={
"Authorization": "Bearer {}".format(token), "Authorization": "Bearer {}".format(token),
}, },
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment