forked from github/plane
chore: workspace invitation for self-hosted versions (#1477)
This commit is contained in:
parent
379d258375
commit
d05d814efe
@ -295,7 +295,6 @@ urlpatterns = [
|
|||||||
{
|
{
|
||||||
"delete": "destroy",
|
"delete": "destroy",
|
||||||
"get": "retrieve",
|
"get": "retrieve",
|
||||||
"get": "retrieve",
|
|
||||||
}
|
}
|
||||||
),
|
),
|
||||||
name="workspace",
|
name="workspace",
|
||||||
|
@ -21,6 +21,7 @@ from django.db.models import (
|
|||||||
)
|
)
|
||||||
from django.db.models.functions import ExtractWeek, Cast, ExtractDay
|
from django.db.models.functions import ExtractWeek, Cast, ExtractDay
|
||||||
from django.db.models.fields import DateField
|
from django.db.models.fields import DateField
|
||||||
|
from django.contrib.auth.hashers import make_password
|
||||||
|
|
||||||
# Third party modules
|
# Third party modules
|
||||||
from rest_framework import status
|
from rest_framework import status
|
||||||
@ -276,14 +277,18 @@ class InviteWorkspaceEndpoint(BaseAPIView):
|
|||||||
|
|
||||||
# create the user if signup is disabled
|
# create the user if signup is disabled
|
||||||
if settings.DOCKERIZED and not settings.ENABLE_SIGNUP:
|
if settings.DOCKERIZED and not settings.ENABLE_SIGNUP:
|
||||||
_ = User.objects.bulk_create([
|
_ = User.objects.bulk_create(
|
||||||
|
[
|
||||||
User(
|
User(
|
||||||
email=email.get("email"),
|
username=str(uuid4().hex),
|
||||||
password=str(uuid4().hex),
|
email=invitation.email,
|
||||||
is_password_autoset=True
|
password=make_password(uuid4().hex),
|
||||||
|
is_password_autoset=True,
|
||||||
|
)
|
||||||
|
for invitation in workspace_invitations
|
||||||
|
],
|
||||||
|
batch_size=100,
|
||||||
)
|
)
|
||||||
for email in emails
|
|
||||||
], batch_size=100)
|
|
||||||
|
|
||||||
for invitation in workspace_invitations:
|
for invitation in workspace_invitations:
|
||||||
workspace_invitation.delay(
|
workspace_invitation.delay(
|
||||||
@ -400,6 +405,30 @@ class WorkspaceInvitationsViewset(BaseViewSet):
|
|||||||
.select_related("workspace", "workspace__owner", "created_by")
|
.select_related("workspace", "workspace__owner", "created_by")
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def destroy(self, request, slug, pk):
|
||||||
|
try:
|
||||||
|
workspace_member_invite = WorkspaceMemberInvite.objects.get(
|
||||||
|
pk=pk, workspace__slug=slug
|
||||||
|
)
|
||||||
|
# delete the user if signup is disabled
|
||||||
|
if settings.DOCKERIZED and not settings.ENABLE_SIGNUP:
|
||||||
|
user = User.objects.filter(email=workspace_member_invite.email).first()
|
||||||
|
if user is not None:
|
||||||
|
user.delete()
|
||||||
|
workspace_member_invite.delete()
|
||||||
|
return Response(status=status.HTTP_204_NO_CONTENT)
|
||||||
|
except WorkspaceMemberInvite.DoesNotExist:
|
||||||
|
return Response(
|
||||||
|
{"error": "Workspace member invite does not exists"},
|
||||||
|
status=status.HTTP_400_BAD_REQUEST,
|
||||||
|
)
|
||||||
|
except Exception as e:
|
||||||
|
capture_exception(e)
|
||||||
|
return Response(
|
||||||
|
{"error": "Something went wrong please try again later"},
|
||||||
|
status=status.HTTP_400_BAD_REQUEST,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class UserWorkspaceInvitationsEndpoint(BaseViewSet):
|
class UserWorkspaceInvitationsEndpoint(BaseViewSet):
|
||||||
serializer_class = WorkSpaceMemberInviteSerializer
|
serializer_class = WorkSpaceMemberInviteSerializer
|
||||||
|
Loading…
Reference in New Issue
Block a user