From 37007514e3b7e99fea43fbe6f18828f176af9f44 Mon Sep 17 00:00:00 2001 From: pablohashescobar Date: Tue, 20 Dec 2022 16:59:24 +0530 Subject: [PATCH] feat: project view default props with migrations --- apiserver/plane/api/views/project.py | 8 +++++++- .../0013_projectmember_default_props.py | 19 +++++++++++++++++++ apiserver/plane/db/models/project.py | 10 ++++++++++ 3 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 apiserver/plane/db/migrations/0013_projectmember_default_props.py diff --git a/apiserver/plane/api/views/project.py b/apiserver/plane/api/views/project.py index 8a8b036b6..7799c0e69 100644 --- a/apiserver/plane/api/views/project.py +++ b/apiserver/plane/api/views/project.py @@ -609,7 +609,13 @@ class ProjectUserViewsEndpoint(BaseAPIView): {"error": "Forbidden"}, status=status.HTTP_403_FORBIDDEN ) - project_member.view_props = request.data + view_props = project_member.view_props + default_props = project_member.default_props + + project_member.view_props = request.data.get("view_props", view_props) + project_member.default_props = request.data.get( + "default_props", default_props + ) project_member.save() diff --git a/apiserver/plane/db/migrations/0013_projectmember_default_props.py b/apiserver/plane/db/migrations/0013_projectmember_default_props.py new file mode 100644 index 000000000..2369e1863 --- /dev/null +++ b/apiserver/plane/db/migrations/0013_projectmember_default_props.py @@ -0,0 +1,19 @@ +# Generated by Django 3.2.14 on 2022-12-20 11:29 + +from django.db import migrations, models +import plane.db.models.project + + +class Migration(migrations.Migration): + + dependencies = [ + ('db', '0012_user_my_issues_prop'), + ] + + operations = [ + migrations.AddField( + model_name='projectmember', + name='default_props', + field=models.JSONField(default=plane.db.models.project.get_default_props), + ), + ] diff --git a/apiserver/plane/db/models/project.py b/apiserver/plane/db/models/project.py index d8e46869f..a84d36854 100644 --- a/apiserver/plane/db/models/project.py +++ b/apiserver/plane/db/models/project.py @@ -19,6 +19,15 @@ ROLE_CHOICES = ( ) +def get_default_props(): + return { + "issueView": "list", + "groupByProperty": None, + "orderBy": None, + "filterIssue": None, + } + + class Project(BaseModel): NETWORK_CHOICES = ((0, "Secret"), (2, "Public")) @@ -119,6 +128,7 @@ class ProjectMember(ProjectBaseModel): comment = models.TextField(blank=True, null=True) role = models.PositiveSmallIntegerField(choices=ROLE_CHOICES, default=10) view_props = models.JSONField(null=True) + default_props = models.JSONField(default=get_default_props) class Meta: unique_together = ["project", "member"]