Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
85 commits
Select commit Hold shift + click to select a range
7434800
chore: show message if dragging unjoined project (#1763)
aaryan610 Aug 2, 2023
b61adbe
fix: invalid project selection in create issue modal (#1766)
dakshesh14 Aug 2, 2023
584192f
style: sidebar project list improvement (#1767)
anmolsinghbhatia Aug 2, 2023
87a9201
fix: comment reaction mutation (#1768)
dakshesh14 Aug 2, 2023
a66dcb9
fix: user profiles n plus 1 (#1765)
pablohashescobar Aug 2, 2023
9a29896
fix: bulk issue import (#1773)
pablohashescobar Aug 2, 2023
c16b0da
style: profile activity (#1771)
anmolsinghbhatia Aug 2, 2023
a1ae338
chore: add non existing states for project entities (#1770)
aaryan610 Aug 2, 2023
5aad6c7
fix: notification read status being toggled when click on link (#1769)
dakshesh14 Aug 2, 2023
97c3fb4
fix: custom theme persisting after signing out (#1780)
aaryan610 Aug 3, 2023
2b46e5f
feat: issue export csv (#1781)
NarayanBavisetti Aug 7, 2023
a164dfd
chore(frontend): add `sharp` (#1451)
TheDevMinerTV Aug 7, 2023
b6744dc
Chore: mobx setup and app sidebar and theme management (#1798)
gurusainath Aug 8, 2023
9df0ba6
feat: initiated plane space (#1801)
gurusainath Aug 8, 2023
cf306ee
feat: user display name (#1179)
pablohashescobar Aug 8, 2023
981acc8
fix: replaced first name, last name or email to display name (#1796)
dakshesh14 Aug 8, 2023
88e5a05
chore: subscribed by me tab on my issues page (#1800)
aaryan610 Aug 8, 2023
5f1209f
chore: empty state for multi-level dropdown (#1802)
aaryan610 Aug 8, 2023
4fcd081
chore: select start date option for issue (#1813)
aaryan610 Aug 9, 2023
1991e09
refactor: removed escape keydown listener (#1814)
dakshesh14 Aug 9, 2023
faa50b0
fix: analytics showing user id instead of display name (#1812)
dakshesh14 Aug 9, 2023
3db69a3
style: profile empty state (#1811)
anmolsinghbhatia Aug 9, 2023
d9ccce4
chore: profile and my issues page start date option (#1815)
aaryan610 Aug 9, 2023
2a6eb5f
style: option to edit display name in profile page (#1818)
dakshesh14 Aug 9, 2023
c9d0c53
style: displaying email in members page depending on user role (#1817)
dakshesh14 Aug 9, 2023
be062cc
fix: import user using endpoint with email (#1819)
dakshesh14 Aug 9, 2023
005b42c
dev: Updating themening worfkflow (#1827)
gurusainath Aug 10, 2023
1c6cdb8
refactor: added validation for display_name (#1823)
dakshesh14 Aug 10, 2023
9ce85cd
refactor: if/else conditions (#1822)
dakshesh14 Aug 10, 2023
8c8668a
refactor: not making calls to member's endpoint to get membership sta…
dakshesh14 Aug 10, 2023
f562fcd
refactor: both delete or backspace can be used to open modal (#1829)
dakshesh14 Aug 10, 2023
8373f20
fix: issues n plus 1 (#1785)
pablohashescobar Aug 11, 2023
2769a73
remove: auto start date configuration (#1799)
pablohashescobar Aug 11, 2023
085cd19
fix: project members endpoint email (#1804)
pablohashescobar Aug 11, 2023
11abd3c
fix: user id for default analytics (#1808)
pablohashescobar Aug 11, 2023
0a1483c
chore: issue list date filters and properties (#1820)
pablohashescobar Aug 11, 2023
be86a7d
feat: project member role (#1828)
pablohashescobar Aug 11, 2023
e06ee25
fix: project states create (#1830)
pablohashescobar Aug 11, 2023
edaeae1
chore: sort order for cycle and modules (#1835)
pablohashescobar Aug 11, 2023
def10af
fix: issue date filtering (#1834)
pablohashescobar Aug 11, 2023
289e81d
chore: issue activity user redirection added (#1805)
anmolsinghbhatia Aug 11, 2023
5c964d1
style: ui improvement (#1806)
anmolsinghbhatia Aug 11, 2023
dbb53a6
style: sidebar ui improvement (#1816)
anmolsinghbhatia Aug 11, 2023
e2b5657
chore: profile cover photo (#1836)
anmolsinghbhatia Aug 11, 2023
762ef42
chore: project search added in project list page (#1837)
anmolsinghbhatia Aug 11, 2023
785a6e8
chore: gantt chart resizable blocks, y-axis drag and drop (#1810)
aaryan610 Aug 11, 2023
88e987b
feat: cycle and module sort order (#1841)
pablohashescobar Aug 11, 2023
abec46a
fix: cmdk not changing theme if active theme is custom-theme (#1842)
dakshesh14 Aug 11, 2023
6617049
fix: sub issue endpoint for state distribution (#1845)
pablohashescobar Aug 11, 2023
ad4cdcc
fix: cmdk modal not closing when choosing an option (#1833)
dakshesh14 Aug 11, 2023
cd5e5b9
feat: Mobx integration, List and Kanban boards implementation in plan…
gurusainath Aug 11, 2023
7becec4
feat: randomize color on label create (#1839)
dakshesh14 Aug 11, 2023
ac6d2b0
chore: updated user permission for project and workspace settings (#1…
anmolsinghbhatia Aug 11, 2023
a3d9910
fix: sub issue progress indicator fix (#1847)
anmolsinghbhatia Aug 11, 2023
5f5790e
chore: start date option added in spreadsheet view (#1824)
anmolsinghbhatia Aug 11, 2023
c6eea9c
fix: empty groups not appearing in the kanban view (#1843)
aaryan610 Aug 11, 2023
079a5b2
style: custom theming color picker position (#1846)
anmolsinghbhatia Aug 11, 2023
feba1cc
feat: project public boards (#1772)
pablohashescobar Aug 11, 2023
1a9faa0
fix: export issues in CSV, JSON and XLSX (#1794)
NarayanBavisetti Aug 11, 2023
70e2509
package.json; fix license
ryota-murakami Aug 12, 2023
816f00d
Merge pull request #1848 from ryota-murakami/fix/license
vamsi Aug 12, 2023
ddd3301
feat: csv, json and, xlsx exporter (#1840)
srinivaspendem Aug 14, 2023
dc2438b
style: image upload modal aspect ratio (#1853)
anmolsinghbhatia Aug 14, 2023
f73239b
refactor: using webp image format instead of svg (#1852)
dakshesh14 Aug 14, 2023
f7a596c
fix: gantt chart block left drag flicker (#1854)
aaryan610 Aug 14, 2023
5ddfee1
fix: changed the display of date format (#1855)
NarayanBavisetti Aug 14, 2023
77fb50f
fix: route fix in imports and exports (#1857)
srinivaspendem Aug 14, 2023
5e76e03
style: profile activity loader (#1858)
anmolsinghbhatia Aug 14, 2023
8ccc1b3
fix: gray background on png image (#1856)
dakshesh14 Aug 14, 2023
6774edd
style: sidebar select date width (#1859)
anmolsinghbhatia Aug 14, 2023
d2cdaac
fix: slack queryset (#1860)
pablohashescobar Aug 14, 2023
daa8f7d
feat / public deploy settings workflow (#1863)
gurusainath Aug 14, 2023
e1ae0d3
feat : Tiptap integration (#1832)
sriramveeraghanta Aug 15, 2023
df46a45
fix: analytics export (#1862)
pablohashescobar Aug 15, 2023
07717e9
chore: file name changed for exported issues (#1865)
NarayanBavisetti Aug 15, 2023
b554087
chore: deploy board status for project (#1866)
pablohashescobar Aug 15, 2023
7241944
fix: added slug in filename for export issues (#1870)
NarayanBavisetti Aug 16, 2023
08382f8
chore: updated migration files for 0.11 (#1851)
pablohashescobar Aug 16, 2023
55e2f00
fix: members list filtering for workspace and projects (#1872)
pablohashescobar Aug 16, 2023
9003c58
merge conflicts resolved
sriramveeraghanta Aug 16, 2023
0979acc
fix: notification card not redirecting to archive issue detail for ar…
dakshesh14 Aug 16, 2023
2c43a15
chore: added new filed in serializer (#1874)
NarayanBavisetti Aug 16, 2023
1ded8f4
chore: updated meta tags for project issues (#1875)
gurusainath Aug 16, 2023
f44d142
chore: tip-tap editor update in workspace user activity (#1877)
gurusainath Aug 16, 2023
fde9788
Merge branch 'develop' of github.com:makeplane/plane into stage/merge…
sriramveeraghanta Aug 16, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 2 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,8 @@ NEXT_PUBLIC_TRACK_EVENTS=0
NEXT_PUBLIC_SLACK_CLIENT_ID=""
# For Telemetry, set it to "app.plane.so"
NEXT_PUBLIC_PLAUSIBLE_DOMAIN=""
# public boards deploy url
NEXT_PUBLIC_DEPLOY_URL=""

# Backend
# Debug value for api server use it as 0 for production use
Expand Down
4 changes: 3 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -70,4 +70,6 @@ package-lock.json
# lock files
package-lock.json
pnpm-lock.yaml
pnpm-workspace.yaml
pnpm-workspace.yaml

.npmrc
8 changes: 4 additions & 4 deletions apiserver/bin/user_script.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import os, sys
import os, sys, random, string
import uuid

sys.path.append("/code")
Expand All @@ -19,9 +19,9 @@ def populate():
user = User.objects.create(email=default_email, username=uuid.uuid4().hex)
user.set_password(default_password)
user.save()
print("User created")

print("Success")
print(f"User created with an email: {default_email}")
else:
print(f"User already exists with the default email: {default_email}")


if __name__ == "__main__":
Expand Down
13 changes: 7 additions & 6 deletions apiserver/plane/api/serializers/__init__.py
Original file line number Diff line number Diff line change
@@ -1,17 +1,13 @@
from .base import BaseSerializer
from .people import (
ChangePasswordSerializer,
ResetPasswordSerializer,
TokenSerializer,
)
from .user import UserSerializer, UserLiteSerializer
from .user import UserSerializer, UserLiteSerializer, ChangePasswordSerializer, ResetPasswordSerializer, UserAdminLiteSerializer
from .workspace import (
WorkSpaceSerializer,
WorkSpaceMemberSerializer,
TeamSerializer,
WorkSpaceMemberInviteSerializer,
WorkspaceLiteSerializer,
WorkspaceThemeSerializer,
WorkspaceMemberAdminSerializer,
)
from .project import (
ProjectSerializer,
Expand All @@ -22,6 +18,8 @@
ProjectFavoriteSerializer,
ProjectLiteSerializer,
ProjectMemberLiteSerializer,
ProjectDeployBoardSerializer,
ProjectMemberAdminSerializer,
)
from .state import StateSerializer, StateLiteSerializer
from .view import IssueViewSerializer, IssueViewFavoriteSerializer
Expand All @@ -45,6 +43,7 @@
IssueSubscriberSerializer,
IssueReactionSerializer,
CommentReactionSerializer,
IssueVoteSerializer,
)

from .module import (
Expand Down Expand Up @@ -82,3 +81,5 @@
from .analytic import AnalyticViewSerializer

from .notification import NotificationSerializer

from .exporter import ExporterHistorySerializer
1 change: 1 addition & 0 deletions apiserver/plane/api/serializers/cycle.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ def get_assignees(self, obj):
{
"avatar": assignee.avatar,
"first_name": assignee.first_name,
"display_name": assignee.display_name,
"id": assignee.id,
}
for issue_cycle in obj.issue_cycle.all()
Expand Down
26 changes: 26 additions & 0 deletions apiserver/plane/api/serializers/exporter.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# Module imports
from .base import BaseSerializer
from plane.db.models import ExporterHistory
from .user import UserLiteSerializer


class ExporterHistorySerializer(BaseSerializer):
initiated_by_detail = UserLiteSerializer(source="initiated_by", read_only=True)

class Meta:
model = ExporterHistory
fields = [
"id",
"created_at",
"updated_at",
"project",
"provider",
"status",
"url",
"initiated_by",
"initiated_by_detail",
"token",
"created_by",
"updated_by",
]
read_only_fields = fields
15 changes: 15 additions & 0 deletions apiserver/plane/api/serializers/issue.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
IssueAttachment,
IssueReaction,
CommentReaction,
IssueVote,
)


Expand Down Expand Up @@ -111,6 +112,11 @@ class Meta:
"updated_at",
]

def validate(self, data):
if data.get("start_date", None) is not None and data.get("target_date", None) is not None and data.get("start_date", None) > data.get("target_date", None):
raise serializers.ValidationError("Start date cannot exceed target date")
return data

def create(self, validated_data):
blockers = validated_data.pop("blockers_list", None)
assignees = validated_data.pop("assignees_list", None)
Expand Down Expand Up @@ -549,6 +555,14 @@ class Meta:



class IssueVoteSerializer(BaseSerializer):

class Meta:
model = IssueVote
fields = ["issue", "vote", "workspace_id", "project_id", "actor"]
read_only_fields = fields


class IssueCommentSerializer(BaseSerializer):
actor_detail = UserLiteSerializer(read_only=True, source="actor")
issue_detail = IssueFlatSerializer(read_only=True, source="issue")
Expand All @@ -568,6 +582,7 @@ class Meta:
"updated_by",
"created_at",
"updated_at",
"access",
]


Expand Down
57 changes: 0 additions & 57 deletions apiserver/plane/api/serializers/people.py

This file was deleted.

40 changes: 36 additions & 4 deletions apiserver/plane/api/serializers/project.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,14 @@
# Module imports
from .base import BaseSerializer
from plane.api.serializers.workspace import WorkSpaceSerializer, WorkspaceLiteSerializer
from plane.api.serializers.user import UserLiteSerializer
from plane.api.serializers.user import UserLiteSerializer, UserAdminLiteSerializer
from plane.db.models import (
Project,
ProjectMember,
ProjectMemberInvite,
ProjectIdentifier,
ProjectFavorite,
ProjectDeployBoard,
)


Expand Down Expand Up @@ -80,7 +81,15 @@ def update(self, instance, validated_data):
class ProjectLiteSerializer(BaseSerializer):
class Meta:
model = Project
fields = ["id", "identifier", "name"]
fields = [
"id",
"identifier",
"name",
"cover_image",
"icon_prop",
"emoji",
"description",
]
read_only_fields = fields


Expand All @@ -94,6 +103,8 @@ class ProjectDetailSerializer(BaseSerializer):
total_modules = serializers.IntegerField(read_only=True)
is_member = serializers.BooleanField(read_only=True)
sort_order = serializers.FloatField(read_only=True)
member_role = serializers.IntegerField(read_only=True)
is_deployed = serializers.BooleanField(read_only=True)

class Meta:
model = Project
Expand All @@ -110,6 +121,16 @@ class Meta:
fields = "__all__"


class ProjectMemberAdminSerializer(BaseSerializer):
workspace = WorkspaceLiteSerializer(read_only=True)
project = ProjectLiteSerializer(read_only=True)
member = UserAdminLiteSerializer(read_only=True)

class Meta:
model = ProjectMember
fields = "__all__"


class ProjectMemberInviteSerializer(BaseSerializer):
project = ProjectLiteSerializer(read_only=True)
workspace = WorkspaceLiteSerializer(read_only=True)
Expand Down Expand Up @@ -137,8 +158,6 @@ class Meta:
]




class ProjectMemberLiteSerializer(BaseSerializer):
member = UserLiteSerializer(read_only=True)
is_subscribed = serializers.BooleanField(read_only=True)
Expand All @@ -147,3 +166,16 @@ class Meta:
model = ProjectMember
fields = ["member", "id", "is_subscribed"]
read_only_fields = fields


class ProjectDeployBoardSerializer(BaseSerializer):
project_details = ProjectLiteSerializer(read_only=True, source="project")
workspace_detail = WorkspaceLiteSerializer(read_only=True, source="workspace")

class Meta:
model = ProjectDeployBoard
fields = "__all__"
read_only_fields = [
"workspace",
"project" "anchor",
]
44 changes: 43 additions & 1 deletion apiserver/plane/api/serializers/user.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
# Third party imports
from rest_framework import serializers

# Module import
from .base import BaseSerializer
from plane.db.models import User
Expand Down Expand Up @@ -37,11 +40,50 @@ class Meta:
"id",
"first_name",
"last_name",
"email",
"avatar",
"is_bot",
"display_name",
]
read_only_fields = [
"id",
"is_bot",
]


class UserAdminLiteSerializer(BaseSerializer):

class Meta:
model = User
fields = [
"id",
"first_name",
"last_name",
"avatar",
"is_bot",
"display_name",
"email",
]
read_only_fields = [
"id",
"is_bot",
]


class ChangePasswordSerializer(serializers.Serializer):
model = User

"""
Serializer for password change endpoint.
"""
old_password = serializers.CharField(required=True)
new_password = serializers.CharField(required=True)


class ResetPasswordSerializer(serializers.Serializer):
model = User

"""
Serializer for password change endpoint.
"""
new_password = serializers.CharField(required=True)
confirm_password = serializers.CharField(required=True)
Loading