diff --git a/pretix_keycloak_create_user/forms.py b/pretix_keycloak_create_user/forms.py index edd5016ff743db859fc094159967b2a07f189b09..1f0261127fa8f39d03dcd59a31dbb97c83268dae 100644 --- a/pretix_keycloak_create_user/forms.py +++ b/pretix_keycloak_create_user/forms.py @@ -1,8 +1,4 @@ -from django.forms import ( - CharField, - CheckboxSelectMultiple, - MultipleChoiceField, -) +from django.forms import CharField, CheckboxSelectMultiple, MultipleChoiceField from django.utils.translation import ugettext_lazy as _ from i18nfield.forms import I18nFormField, I18nTextInput from pretix.base.forms import SettingsForm @@ -19,9 +15,7 @@ class KeycloakCreatorForm(SettingsForm): keycloak_create_user_authorization_token = CharField( label=_("Access token"), strip=True, - help_text=_( - "Access token for the keycloak server. " - ), + help_text=_("Access token for the keycloak server. "), ) keycloak_create_user_realm_url = CharField( label=_("Keycloak realm url"), @@ -32,9 +26,7 @@ class KeycloakCreatorForm(SettingsForm): widget=I18nTextInput, label=_("Username field help text"), required=True, - help_text=_( - "Explains what to enter" - ), + help_text=_("Explains what to enter"), ) def __init__(self, *args, **kwargs): diff --git a/pretix_keycloak_create_user/signals.py b/pretix_keycloak_create_user/signals.py index d8e1e9e98c5139a1a2067e969e439c64b3d80b50..05833bdd8fae7757aba1aa5dfae9ac861c3bea73 100644 --- a/pretix_keycloak_create_user/signals.py +++ b/pretix_keycloak_create_user/signals.py @@ -5,17 +5,12 @@ from django.dispatch import receiver from django.urls import resolve, reverse from django.utils.translation import gettext_noop, ugettext_lazy as _ from i18nfield.strings import LazyI18nString +from pretix.base.services.orders import OrderError from pretix.base.settings import settings_hierarkey -from pretix.base.signals import ( - order_modified, - order_placed, - validate_order, -) +from pretix.base.signals import order_modified, order_placed, validate_order from pretix.base.templatetags.rich_text import rich_text_snippet from pretix.control.signals import nav_event_settings from pretix.presale.signals import question_form_fields -from pretix.base.services.orders import OrderError - from .tasks import keycloak_create_user @@ -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_hint", - LazyI18nString.from_gettext( - gettext_noop("Your keycloak user will be created.") - ), + LazyI18nString.from_gettext(gettext_noop("Your keycloak user will be created.")), LazyI18nString, ) settings_hierarkey.add_default( @@ -53,9 +46,7 @@ def add_keycloak_username_question(sender, position, **kwargs): required=False, regex="[a-z0-9._=/-]+", strip=True, - error_messages={ - "invalid": _("Enter a valid username") - }, + error_messages={"invalid": _("Enter a valid username")}, help_text=rich_text_snippet(sender.settings.keycloak_create_user_hint), ) } @@ -81,16 +72,13 @@ def keycloak_create_user_create_async(sender, order, **kwargs): ): continue - keycloak_create_user.apply_async( - args=( - sender.pk, - order.pk, - order_position.pk - ) - ) + keycloak_create_user.apply_async(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): url = resolve(request.path_info) return [ @@ -108,6 +96,7 @@ def navbar_settings(sender, request=None, **kwargs): } ] + @receiver(validate_order, dispatch_uid="keycloak_create_user_validate_order") def validate_order(sender, positions, **kwargs): if ( @@ -115,7 +104,7 @@ def validate_order(sender, positions, **kwargs): and not sender.settings.keycloak_create_user_realm_url ): return - + for order_position in positions.all(): if str(order_position.item.pk) not in sender.settings.get( "keycloak_create_user_items" @@ -127,7 +116,7 @@ def validate_order(sender, positions, **kwargs): ): continue - event = sender + event = sender server = event.settings.keycloak_create_user_realm_url token = event.settings.keycloak_create_user_authorization_token @@ -137,17 +126,13 @@ def validate_order(sender, positions, **kwargs): response = requests.get( "{}/users/count?username={}".format( - server, - username # TODO verify that this is not a security issue + server, username # TODO verify that this is not a security issue ), headers={ "Authorization": "Bearer {}".format(token), }, ) - + if response.status_code == 200: if json.loads(response.text) > 0: - raise OrderError( - _("Username already taken") - ) - + raise OrderError(_("Username already taken")) diff --git a/pretix_keycloak_create_user/tasks.py b/pretix_keycloak_create_user/tasks.py index deb8a20688eb18b0ba73cebf9f93574cfde10ec5..e6c3932bbf34cd8bd97d742edc918e9f48cd3b0c 100644 --- a/pretix_keycloak_create_user/tasks.py +++ b/pretix_keycloak_create_user/tasks.py @@ -15,12 +15,7 @@ logger = logging.getLogger(__name__) retry_backoff=True, retry_backoff_max=3600, ) -def keycloak_create_user( - self, - event: int, - order: int, - order_position: int -): +def keycloak_create_user(self, event: int, order: int, order_position: int): order_position = OrderPosition.objects.get(pk=order_position) username = order_position.meta_info_data.get("question_form_data", {}).get( @@ -33,13 +28,15 @@ def keycloak_create_user( order = Order.objects.get(pk=order) server = event.settings.keycloak_create_user_realm_url 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: r = requests.post( - "{}/users".format( - server - ), + "{}/users".format(server), headers={ "Authorization": "Bearer {}".format(token), },