makeplane / makeplane/plane

Project invitation endpoint crashes with SoftDeletionQuerySet.role on v1.3.1

Open Beginner friendly
#9,476 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
TypeScript
Stars
59.6k
Forks
5.8k
Avg merge
1d 22h
Merged PRs (30d)
49

Description

Summary

In Plane Community v1.3.1, creating a project invitation through the application endpoint fails with HTTP 500.

Affected route

POST /api/workspaces/{workspace_slug}/projects/{project_id}/invitations/

Observed behavior

The request fails before persisting an invitation with:

AttributeError: 'SoftDeletionQuerySet' object has no attribute 'role'

The failure is in plane/app/views/project/invite.py:60-64, where the code accesses .role on the WorkspaceMember.objects.filter(...) queryset.

Expected behavior

A workspace/project admin should be able to create a project invitation for a valid email and permitted role, returning a successful invitation response.

Reproduction

  1. Run Plane Community v1.3.1.
  2. Sign in as a workspace and project admin.
  3. POST a valid emails payload to the route above.
  4. Observe HTTP 500 and no persisted invitation.

Safe workaround

Create a workspace invitation first, complete the invite-gated signup and workspace join, then add the existing workspace member to the project through the session-authenticated project-members endpoint with the same allowed role.

No credentials, internal addresses, or deployment-specific identifiers are included.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Read plane/app/views/project/invite.py:60-64 and reproduce the POST request against the listed invitations route. Inspect the WorkspaceMember.objects.filter(...) usage and its role access, then verify the endpoint returns a successful invitation response and persists the invitation for a permitted role without the AttributeError.

Written by the indexing model from the issue text.

Assessment

Tech stack
django, python
Domain
api, backend
Issue type
Bug
Difficulty
2/5
Estimated time
1-3 hours
Activity status
Quiet
Clarity
Clearly specified
Newbie friendliness
78/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.