From e98d00a9629087d746658be443588d11b1778417 Mon Sep 17 00:00:00 2001 From: vabene1111 Date: Sat, 16 Aug 2025 11:24:24 +0200 Subject: [PATCH] improved invite link view --- cookbook/views/api.py | 7 +- .../model_editors/InviteLinkEditor.vue | 16 ++ .../settings/SpaceMemberSettings.vue | 8 +- vue3/src/openapi/.openapi-generator/FILES | 7 - vue3/src/openapi/apis/ApiApi.ts | 231 +++--------------- vue3/src/openapi/models/BaseUnitEnum.ts | 72 +++--- vue3/src/openapi/models/InviteLink.ts | 8 +- vue3/src/openapi/models/OpenDataFood.ts | 7 +- vue3/src/openapi/models/PatchedInviteLink.ts | 5 +- .../src/openapi/models/PatchedOpenDataFood.ts | 4 +- vue3/src/openapi/models/index.ts | 7 - 11 files changed, 111 insertions(+), 261 deletions(-) diff --git a/cookbook/views/api.py b/cookbook/views/api.py index 13b12d42d..4e24d6108 100644 --- a/cookbook/views/api.py +++ b/cookbook/views/api.py @@ -1654,7 +1654,8 @@ class AutomationViewSet(LoggingMixin, StandardFilterModelViewSet): @extend_schema_view(list=extend_schema(parameters=[ - OpenApiParameter(name='internal_note', description=_('Text field to store data that gets carried over to the UserSpace created from the InviteLink'), type=str) + OpenApiParameter(name='internal_note', description=_('Text field to store data that gets carried over to the UserSpace created from the InviteLink'), type=str), + OpenApiParameter(name='unused', description=_('Only return InviteLinks that have not been used yet.'), type=bool), ])) class InviteLinkViewSet(LoggingMixin, StandardFilterModelViewSet): queryset = InviteLink.objects @@ -1667,6 +1668,10 @@ class InviteLinkViewSet(LoggingMixin, StandardFilterModelViewSet): if internal_note is not None: self.queryset = self.queryset.filter(internal_note=internal_note) + unused = self.request.query_params.get('unused', False) + if unused: + self.queryset = self.queryset.filter(used_by=None) + if is_space_owner(self.request.user, self.request.space): self.queryset = self.queryset.filter(space=self.request.space).all() return super().get_queryset() diff --git a/vue3/src/components/model_editors/InviteLinkEditor.vue b/vue3/src/components/model_editors/InviteLinkEditor.vue index 911918eeb..38801ad3a 100644 --- a/vue3/src/components/model_editors/InviteLinkEditor.vue +++ b/vue3/src/components/model_editors/InviteLinkEditor.vue @@ -16,6 +16,11 @@ + + + @@ -31,6 +36,7 @@ import {ErrorMessageType, useMessageStore} from "@/stores/MessageStore"; import {DateTime} from "luxon"; import ModelEditorBase from "@/components/model_editors/ModelEditorBase.vue"; import {useModelEditorFunctions} from "@/composables/useModelEditorFunctions"; +import BtnCopy from "@/components/buttons/BtnCopy.vue"; const props = defineProps({ @@ -79,6 +85,16 @@ function initializeEditor(){ useMessageStore().addError(ErrorMessageType.FETCH_ERROR, err) }) } + +/** + * returns url for invite link + * @param inviteLink InviteLink object to create url for + */ +function inviteLinkUrl(inviteLink: InviteLink) { + return `${location.protocol}//${location.host}/invite/${inviteLink.uuid}` +} + +