From 76983a57e9671465fdc6cb20ab3199680d7247ea Mon Sep 17 00:00:00 2001 From: Bavisetti Narayan <72156168+NarayanBavisetti@users.noreply.github.com> Date: Fri, 2 Aug 2024 13:15:59 +0530 Subject: [PATCH] [WEB-2092] chore: soft delete migration (#5286) * chore: soft delete migration * chore: page deletion role check --- apiserver/plane/app/serializers/issue.py | 3 +- apiserver/plane/app/views/cycle/base.py | 2 +- apiserver/plane/app/views/module/base.py | 2 +- apiserver/plane/app/views/page/base.py | 33 +- apiserver/plane/app/views/project/base.py | 2 +- apiserver/plane/app/views/search/issue.py | 10 +- apiserver/plane/app/views/view/base.py | 2 +- ...ommentreaction_unique_together_and_more.py | 1130 +++++++++++++++++ ...d_at_apiactivitylog_deleted_at_and_more.py | 423 ------ ...74_alter_label_unique_together_and_more.py | 75 -- apiserver/plane/db/models/cycle.py | 9 +- apiserver/plane/db/models/dashboard.py | 9 +- apiserver/plane/db/models/deploy_board.py | 9 +- apiserver/plane/db/models/estimate.py | 10 +- apiserver/plane/db/models/favorite.py | 9 +- apiserver/plane/db/models/inbox.py | 9 +- apiserver/plane/db/models/issue.py | 75 +- apiserver/plane/db/models/issue_type.py | 10 +- apiserver/plane/db/models/module.py | 27 +- apiserver/plane/db/models/page.py | 18 +- apiserver/plane/db/models/project.py | 18 +- apiserver/plane/db/models/state.py | 10 +- apiserver/plane/db/models/workspace.py | 54 +- web/public/sw.js.map | 2 +- 24 files changed, 1391 insertions(+), 560 deletions(-) create mode 100644 apiserver/plane/db/migrations/0073_alter_commentreaction_unique_together_and_more.py delete mode 100644 apiserver/plane/db/migrations/0073_analyticview_deleted_at_apiactivitylog_deleted_at_and_more.py delete mode 100644 apiserver/plane/db/migrations/0074_alter_label_unique_together_and_more.py diff --git a/apiserver/plane/app/serializers/issue.py b/apiserver/plane/app/serializers/issue.py index becce6ebb..e6cdc8e85 100644 --- a/apiserver/plane/app/serializers/issue.py +++ b/apiserver/plane/app/serializers/issue.py @@ -533,6 +533,7 @@ class IssueReactionSerializer(BaseSerializer): "project", "issue", "actor", + "deleted_at" ] @@ -551,7 +552,7 @@ class CommentReactionSerializer(BaseSerializer): class Meta: model = CommentReaction fields = "__all__" - read_only_fields = ["workspace", "project", "comment", "actor"] + read_only_fields = ["workspace", "project", "comment", "actor", "deleted_at"] class IssueVoteSerializer(BaseSerializer): diff --git a/apiserver/plane/app/views/cycle/base.py b/apiserver/plane/app/views/cycle/base.py index db2a73d4c..1258aa608 100644 --- a/apiserver/plane/app/views/cycle/base.py +++ b/apiserver/plane/app/views/cycle/base.py @@ -1154,7 +1154,7 @@ class CycleFavoriteViewSet(BaseViewSet): workspace__slug=slug, entity_identifier=cycle_id, ) - cycle_favorite.delete(soft=False) + cycle_favorite.delete() return Response(status=status.HTTP_204_NO_CONTENT) diff --git a/apiserver/plane/app/views/module/base.py b/apiserver/plane/app/views/module/base.py index c6861fe4b..4d1203f07 100644 --- a/apiserver/plane/app/views/module/base.py +++ b/apiserver/plane/app/views/module/base.py @@ -840,7 +840,7 @@ class ModuleFavoriteViewSet(BaseViewSet): entity_type="module", entity_identifier=module_id, ) - module_favorite.delete(soft=False) + module_favorite.delete() return Response(status=status.HTTP_204_NO_CONTENT) diff --git a/apiserver/plane/app/views/page/base.py b/apiserver/plane/app/views/page/base.py index 9757b16ac..2dafe4d5d 100644 --- a/apiserver/plane/app/views/page/base.py +++ b/apiserver/plane/app/views/page/base.py @@ -333,8 +333,14 @@ class PageViewSet(BaseViewSet): pk=pk, workspace__slug=slug, projects__id=project_id ) - if not page.owned_by_id != request.user.id and not ( - ProjectMember.objects.filter( + if page.archived_at is None: + return Response( + {"error": "The page should be archived before deleting"}, + status=status.HTTP_400_BAD_REQUEST, + ) + + if page.owned_by_id != request.user.id and ( + not ProjectMember.objects.filter( workspace__slug=slug, member=request.user, role=20, @@ -347,27 +353,6 @@ class PageViewSet(BaseViewSet): status=status.HTTP_403_FORBIDDEN, ) - # only the owner and admin can delete the page - if ( - ProjectMember.objects.filter( - project_id=project_id, - member=request.user, - is_active=True, - role__gt=20, - ).exists() - or request.user.id != page.owned_by_id - ): - return Response( - {"error": "Only the owner and admin can delete the page"}, - status=status.HTTP_400_BAD_REQUEST, - ) - - if page.archived_at is None: - return Response( - {"error": "The page should be archived before deleting"}, - status=status.HTTP_400_BAD_REQUEST, - ) - # remove parent from all the children _ = Page.objects.filter( parent_id=pk, projects__id=project_id, workspace__slug=slug @@ -401,7 +386,7 @@ class PageFavoriteViewSet(BaseViewSet): entity_identifier=pk, entity_type="page", ) - page_favorite.delete(soft=False) + page_favorite.delete() return Response(status=status.HTTP_204_NO_CONTENT) diff --git a/apiserver/plane/app/views/project/base.py b/apiserver/plane/app/views/project/base.py index 22181dacf..bca8236a9 100644 --- a/apiserver/plane/app/views/project/base.py +++ b/apiserver/plane/app/views/project/base.py @@ -599,7 +599,7 @@ class ProjectFavoritesViewSet(BaseViewSet): user=request.user, workspace__slug=slug, ) - project_favorite.delete(soft=False) + project_favorite.delete() return Response(status=status.HTTP_204_NO_CONTENT) diff --git a/apiserver/plane/app/views/search/issue.py b/apiserver/plane/app/views/search/issue.py index e4f3252f0..6c0535af2 100644 --- a/apiserver/plane/app/views/search/issue.py +++ b/apiserver/plane/app/views/search/issue.py @@ -52,8 +52,14 @@ class IssueSearchEndpoint(BaseAPIView): issue = Issue.issue_objects.get(pk=issue_id) issues = issues.filter( ~Q(pk=issue_id), - ~Q(issue_related__issue=issue), - ~Q(issue_relation__related_issue=issue), + ~Q( + issue_related__issue=issue, + issue_related__deleted_at__isnull=True, + ), + ~Q( + issue_relation__related_issue=issue, + issue_related__deleted_at__isnull=True, + ), ) if sub_issue == "true" and issue_id: issue = Issue.issue_objects.get(pk=issue_id) diff --git a/apiserver/plane/app/views/view/base.py b/apiserver/plane/app/views/view/base.py index 988108831..236a051aa 100644 --- a/apiserver/plane/app/views/view/base.py +++ b/apiserver/plane/app/views/view/base.py @@ -474,5 +474,5 @@ class IssueViewFavoriteViewSet(BaseViewSet): entity_type="view", entity_identifier=view_id, ) - view_favorite.delete(soft=False) + view_favorite.delete() return Response(status=status.HTTP_204_NO_CONTENT) diff --git a/apiserver/plane/db/migrations/0073_alter_commentreaction_unique_together_and_more.py b/apiserver/plane/db/migrations/0073_alter_commentreaction_unique_together_and_more.py new file mode 100644 index 000000000..5277553aa --- /dev/null +++ b/apiserver/plane/db/migrations/0073_alter_commentreaction_unique_together_and_more.py @@ -0,0 +1,1130 @@ +# Generated by Django 4.2.11 on 2024-08-02 03:52 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("db", "0072_issueattachment_external_id_and_more"), + ] + + operations = [ + migrations.AlterUniqueTogether( + name="commentreaction", + unique_together=set(), + ), + migrations.AlterUniqueTogether( + name="cycleuserproperties", + unique_together=set(), + ), + migrations.AlterUniqueTogether( + name="dashboardwidget", + unique_together=set(), + ), + migrations.AlterUniqueTogether( + name="deployboard", + unique_together=set(), + ), + migrations.AlterUniqueTogether( + name="estimate", + unique_together=set(), + ), + migrations.AlterUniqueTogether( + name="inbox", + unique_together=set(), + ), + migrations.AlterUniqueTogether( + name="issueassignee", + unique_together=set(), + ), + migrations.AlterUniqueTogether( + name="issuemention", + unique_together=set(), + ), + migrations.AlterUniqueTogether( + name="issuereaction", + unique_together=set(), + ), + migrations.AlterUniqueTogether( + name="issuerelation", + unique_together=set(), + ), + migrations.AlterUniqueTogether( + name="issuesubscriber", + unique_together=set(), + ), + migrations.AlterUniqueTogether( + name="issuetype", + unique_together=set(), + ), + migrations.AlterUniqueTogether( + name="issueuserproperty", + unique_together=set(), + ), + migrations.AlterUniqueTogether( + name="issuevote", + unique_together=set(), + ), + migrations.AlterUniqueTogether( + name="label", + unique_together=set(), + ), + migrations.AlterUniqueTogether( + name="module", + unique_together=set(), + ), + migrations.AlterUniqueTogether( + name="moduleissue", + unique_together=set(), + ), + migrations.AlterUniqueTogether( + name="modulemember", + unique_together=set(), + ), + migrations.AlterUniqueTogether( + name="moduleuserproperties", + unique_together=set(), + ), + migrations.AlterUniqueTogether( + name="project", + unique_together=set(), + ), + migrations.AlterUniqueTogether( + name="projectidentifier", + unique_together=set(), + ), + migrations.AlterUniqueTogether( + name="projectmember", + unique_together=set(), + ), + migrations.AlterUniqueTogether( + name="projectpage", + unique_together=set(), + ), + migrations.AlterUniqueTogether( + name="projectpublicmember", + unique_together=set(), + ), + migrations.AlterUniqueTogether( + name="state", + unique_together=set(), + ), + migrations.AlterUniqueTogether( + name="team", + unique_together=set(), + ), + migrations.AlterUniqueTogether( + name="teammember", + unique_together=set(), + ), + migrations.AlterUniqueTogether( + name="teampage", + unique_together=set(), + ), + migrations.AlterUniqueTogether( + name="userfavorite", + unique_together=set(), + ), + migrations.AlterUniqueTogether( + name="workspacemember", + unique_together=set(), + ), + migrations.AlterUniqueTogether( + name="workspacememberinvite", + unique_together=set(), + ), + migrations.AlterUniqueTogether( + name="workspacetheme", + unique_together=set(), + ), + migrations.AlterUniqueTogether( + name="workspaceuserproperties", + unique_together=set(), + ), + migrations.AddField( + model_name="analyticview", + name="deleted_at", + field=models.DateTimeField( + blank=True, null=True, verbose_name="Deleted At" + ), + ), + migrations.AddField( + model_name="apiactivitylog", + name="deleted_at", + field=models.DateTimeField( + blank=True, null=True, verbose_name="Deleted At" + ), + ), + migrations.AddField( + model_name="apitoken", + name="deleted_at", + field=models.DateTimeField( + blank=True, null=True, verbose_name="Deleted At" + ), + ), + migrations.AddField( + model_name="commentreaction", + name="deleted_at", + field=models.DateTimeField( + blank=True, null=True, verbose_name="Deleted At" + ), + ), + migrations.AddField( + model_name="cycle", + name="deleted_at", + field=models.DateTimeField( + blank=True, null=True, verbose_name="Deleted At" + ), + ), + migrations.AddField( + model_name="cyclefavorite", + name="deleted_at", + field=models.DateTimeField( + blank=True, null=True, verbose_name="Deleted At" + ), + ), + migrations.AddField( + model_name="cycleissue", + name="deleted_at", + field=models.DateTimeField( + blank=True, null=True, verbose_name="Deleted At" + ), + ), + migrations.AddField( + model_name="cycleuserproperties", + name="deleted_at", + field=models.DateTimeField( + blank=True, null=True, verbose_name="Deleted At" + ), + ), + migrations.AddField( + model_name="dashboard", + name="deleted_at", + field=models.DateTimeField( + blank=True, null=True, verbose_name="Deleted At" + ), + ), + migrations.AddField( + model_name="dashboardwidget", + name="deleted_at", + field=models.DateTimeField( + blank=True, null=True, verbose_name="Deleted At" + ), + ), + migrations.AddField( + model_name="deployboard", + name="deleted_at", + field=models.DateTimeField( + blank=True, null=True, verbose_name="Deleted At" + ), + ), + migrations.AddField( + model_name="emailnotificationlog", + name="deleted_at", + field=models.DateTimeField( + blank=True, null=True, verbose_name="Deleted At" + ), + ), + migrations.AddField( + model_name="estimate", + name="deleted_at", + field=models.DateTimeField( + blank=True, null=True, verbose_name="Deleted At" + ), + ), + migrations.AddField( + model_name="estimatepoint", + name="deleted_at", + field=models.DateTimeField( + blank=True, null=True, verbose_name="Deleted At" + ), + ), + migrations.AddField( + model_name="exporterhistory", + name="deleted_at", + field=models.DateTimeField( + blank=True, null=True, verbose_name="Deleted At" + ), + ), + migrations.AddField( + model_name="fileasset", + name="deleted_at", + field=models.DateTimeField( + blank=True, null=True, verbose_name="Deleted At" + ), + ), + migrations.AddField( + model_name="githubcommentsync", + name="deleted_at", + field=models.DateTimeField( + blank=True, null=True, verbose_name="Deleted At" + ), + ), + migrations.AddField( + model_name="githubissuesync", + name="deleted_at", + field=models.DateTimeField( + blank=True, null=True, verbose_name="Deleted At" + ), + ), + migrations.AddField( + model_name="githubrepository", + name="deleted_at", + field=models.DateTimeField( + blank=True, null=True, verbose_name="Deleted At" + ), + ), + migrations.AddField( + model_name="githubrepositorysync", + name="deleted_at", + field=models.DateTimeField( + blank=True, null=True, verbose_name="Deleted At" + ), + ), + migrations.AddField( + model_name="globalview", + name="deleted_at", + field=models.DateTimeField( + blank=True, null=True, verbose_name="Deleted At" + ), + ), + migrations.AddField( + model_name="importer", + name="deleted_at", + field=models.DateTimeField( + blank=True, null=True, verbose_name="Deleted At" + ), + ), + migrations.AddField( + model_name="inbox", + name="deleted_at", + field=models.DateTimeField( + blank=True, null=True, verbose_name="Deleted At" + ), + ), + migrations.AddField( + model_name="inboxissue", + name="deleted_at", + field=models.DateTimeField( + blank=True, null=True, verbose_name="Deleted At" + ), + ), + migrations.AddField( + model_name="integration", + name="deleted_at", + field=models.DateTimeField( + blank=True, null=True, verbose_name="Deleted At" + ), + ), + migrations.AddField( + model_name="issue", + name="deleted_at", + field=models.DateTimeField( + blank=True, null=True, verbose_name="Deleted At" + ), + ), + migrations.AddField( + model_name="issueactivity", + name="deleted_at", + field=models.DateTimeField( + blank=True, null=True, verbose_name="Deleted At" + ), + ), + migrations.AddField( + model_name="issueassignee", + name="deleted_at", + field=models.DateTimeField( + blank=True, null=True, verbose_name="Deleted At" + ), + ), + migrations.AddField( + model_name="issueattachment", + name="deleted_at", + field=models.DateTimeField( + blank=True, null=True, verbose_name="Deleted At" + ), + ), + migrations.AddField( + model_name="issueblocker", + name="deleted_at", + field=models.DateTimeField( + blank=True, null=True, verbose_name="Deleted At" + ), + ), + migrations.AddField( + model_name="issuecomment", + name="deleted_at", + field=models.DateTimeField( + blank=True, null=True, verbose_name="Deleted At" + ), + ), + migrations.AddField( + model_name="issuelabel", + name="deleted_at", + field=models.DateTimeField( + blank=True, null=True, verbose_name="Deleted At" + ), + ), + migrations.AddField( + model_name="issuelink", + name="deleted_at", + field=models.DateTimeField( + blank=True, null=True, verbose_name="Deleted At" + ), + ), + migrations.AddField( + model_name="issuemention", + name="deleted_at", + field=models.DateTimeField( + blank=True, null=True, verbose_name="Deleted At" + ), + ), + migrations.AddField( + model_name="issuereaction", + name="deleted_at", + field=models.DateTimeField( + blank=True, null=True, verbose_name="Deleted At" + ), + ), + migrations.AddField( + model_name="issuerelation", + name="deleted_at", + field=models.DateTimeField( + blank=True, null=True, verbose_name="Deleted At" + ), + ), + migrations.AddField( + model_name="issuesequence", + name="deleted_at", + field=models.DateTimeField( + blank=True, null=True, verbose_name="Deleted At" + ), + ), + migrations.AddField( + model_name="issuesubscriber", + name="deleted_at", + field=models.DateTimeField( + blank=True, null=True, verbose_name="Deleted At" + ), + ), + migrations.AddField( + model_name="issuetype", + name="deleted_at", + field=models.DateTimeField( + blank=True, null=True, verbose_name="Deleted At" + ), + ), + migrations.AddField( + model_name="issueuserproperty", + name="deleted_at", + field=models.DateTimeField( + blank=True, null=True, verbose_name="Deleted At" + ), + ), + migrations.AddField( + model_name="issueview", + name="deleted_at", + field=models.DateTimeField( + blank=True, null=True, verbose_name="Deleted At" + ), + ), + migrations.AddField( + model_name="issueviewfavorite", + name="deleted_at", + field=models.DateTimeField( + blank=True, null=True, verbose_name="Deleted At" + ), + ), + migrations.AddField( + model_name="issuevote", + name="deleted_at", + field=models.DateTimeField( + blank=True, null=True, verbose_name="Deleted At" + ), + ), + migrations.AddField( + model_name="label", + name="deleted_at", + field=models.DateTimeField( + blank=True, null=True, verbose_name="Deleted At" + ), + ), + migrations.AddField( + model_name="module", + name="deleted_at", + field=models.DateTimeField( + blank=True, null=True, verbose_name="Deleted At" + ), + ), + migrations.AddField( + model_name="modulefavorite", + name="deleted_at", + field=models.DateTimeField( + blank=True, null=True, verbose_name="Deleted At" + ), + ), + migrations.AddField( + model_name="moduleissue", + name="deleted_at", + field=models.DateTimeField( + blank=True, null=True, verbose_name="Deleted At" + ), + ), + migrations.AddField( + model_name="modulelink", + name="deleted_at", + field=models.DateTimeField( + blank=True, null=True, verbose_name="Deleted At" + ), + ), + migrations.AddField( + model_name="modulemember", + name="deleted_at", + field=models.DateTimeField( + blank=True, null=True, verbose_name="Deleted At" + ), + ), + migrations.AddField( + model_name="moduleuserproperties", + name="deleted_at", + field=models.DateTimeField( + blank=True, null=True, verbose_name="Deleted At" + ), + ), + migrations.AddField( + model_name="notification", + name="deleted_at", + field=models.DateTimeField( + blank=True, null=True, verbose_name="Deleted At" + ), + ), + migrations.AddField( + model_name="page", + name="deleted_at", + field=models.DateTimeField( + blank=True, null=True, verbose_name="Deleted At" + ), + ), + migrations.AddField( + model_name="pageblock", + name="deleted_at", + field=models.DateTimeField( + blank=True, null=True, verbose_name="Deleted At" + ), + ), + migrations.AddField( + model_name="pagefavorite", + name="deleted_at", + field=models.DateTimeField( + blank=True, null=True, verbose_name="Deleted At" + ), + ), + migrations.AddField( + model_name="pagelabel", + name="deleted_at", + field=models.DateTimeField( + blank=True, null=True, verbose_name="Deleted At" + ), + ), + migrations.AddField( + model_name="pagelog", + name="deleted_at", + field=models.DateTimeField( + blank=True, null=True, verbose_name="Deleted At" + ), + ), + migrations.AddField( + model_name="pageversion", + name="deleted_at", + field=models.DateTimeField( + blank=True, null=True, verbose_name="Deleted At" + ), + ), + migrations.AddField( + model_name="project", + name="deleted_at", + field=models.DateTimeField( + blank=True, null=True, verbose_name="Deleted At" + ), + ), + migrations.AddField( + model_name="projectdeployboard", + name="deleted_at", + field=models.DateTimeField( + blank=True, null=True, verbose_name="Deleted At" + ), + ), + migrations.AddField( + model_name="projectfavorite", + name="deleted_at", + field=models.DateTimeField( + blank=True, null=True, verbose_name="Deleted At" + ), + ), + migrations.AddField( + model_name="projectidentifier", + name="deleted_at", + field=models.DateTimeField( + blank=True, null=True, verbose_name="Deleted At" + ), + ), + migrations.AddField( + model_name="projectmember", + name="deleted_at", + field=models.DateTimeField( + blank=True, null=True, verbose_name="Deleted At" + ), + ), + migrations.AddField( + model_name="projectmemberinvite", + name="deleted_at", + field=models.DateTimeField( + blank=True, null=True, verbose_name="Deleted At" + ), + ), + migrations.AddField( + model_name="projectpage", + name="deleted_at", + field=models.DateTimeField( + blank=True, null=True, verbose_name="Deleted At" + ), + ), + migrations.AddField( + model_name="projectpublicmember", + name="deleted_at", + field=models.DateTimeField( + blank=True, null=True, verbose_name="Deleted At" + ), + ), + migrations.AddField( + model_name="slackprojectsync", + name="deleted_at", + field=models.DateTimeField( + blank=True, null=True, verbose_name="Deleted At" + ), + ), + migrations.AddField( + model_name="socialloginconnection", + name="deleted_at", + field=models.DateTimeField( + blank=True, null=True, verbose_name="Deleted At" + ), + ), + migrations.AddField( + model_name="state", + name="deleted_at", + field=models.DateTimeField( + blank=True, null=True, verbose_name="Deleted At" + ), + ), + migrations.AddField( + model_name="team", + name="deleted_at", + field=models.DateTimeField( + blank=True, null=True, verbose_name="Deleted At" + ), + ), + migrations.AddField( + model_name="teammember", + name="deleted_at", + field=models.DateTimeField( + blank=True, null=True, verbose_name="Deleted At" + ), + ), + migrations.AddField( + model_name="teampage", + name="deleted_at", + field=models.DateTimeField( + blank=True, null=True, verbose_name="Deleted At" + ), + ), + migrations.AddField( + model_name="userfavorite", + name="deleted_at", + field=models.DateTimeField( + blank=True, null=True, verbose_name="Deleted At" + ), + ), + migrations.AddField( + model_name="usernotificationpreference", + name="deleted_at", + field=models.DateTimeField( + blank=True, null=True, verbose_name="Deleted At" + ), + ), + migrations.AddField( + model_name="userrecentvisit", + name="deleted_at", + field=models.DateTimeField( + blank=True, null=True, verbose_name="Deleted At" + ), + ), + migrations.AddField( + model_name="webhook", + name="deleted_at", + field=models.DateTimeField( + blank=True, null=True, verbose_name="Deleted At" + ), + ), + migrations.AddField( + model_name="webhooklog", + name="deleted_at", + field=models.DateTimeField( + blank=True, null=True, verbose_name="Deleted At" + ), + ), + migrations.AddField( + model_name="workspace", + name="deleted_at", + field=models.DateTimeField( + blank=True, null=True, verbose_name="Deleted At" + ), + ), + migrations.AddField( + model_name="workspaceintegration", + name="deleted_at", + field=models.DateTimeField( + blank=True, null=True, verbose_name="Deleted At" + ), + ), + migrations.AddField( + model_name="workspacemember", + name="deleted_at", + field=models.DateTimeField( + blank=True, null=True, verbose_name="Deleted At" + ), + ), + migrations.AddField( + model_name="workspacememberinvite", + name="deleted_at", + field=models.DateTimeField( + blank=True, null=True, verbose_name="Deleted At" + ), + ), + migrations.AddField( + model_name="workspacetheme", + name="deleted_at", + field=models.DateTimeField( + blank=True, null=True, verbose_name="Deleted At" + ), + ), + migrations.AddField( + model_name="workspaceuserproperties", + name="deleted_at", + field=models.DateTimeField( + blank=True, null=True, verbose_name="Deleted At" + ), + ), + migrations.AlterUniqueTogether( + name="commentreaction", + unique_together={("comment", "actor", "reaction", "deleted_at")}, + ), + migrations.AlterUniqueTogether( + name="cycleuserproperties", + unique_together={("cycle", "user", "deleted_at")}, + ), + migrations.AlterUniqueTogether( + name="dashboardwidget", + unique_together={("widget", "dashboard", "deleted_at")}, + ), + migrations.AlterUniqueTogether( + name="deployboard", + unique_together={ + ("entity_name", "entity_identifier", "deleted_at") + }, + ), + migrations.AlterUniqueTogether( + name="estimate", + unique_together={("name", "project", "deleted_at")}, + ), + migrations.AlterUniqueTogether( + name="inbox", + unique_together={("name", "project", "deleted_at")}, + ), + migrations.AlterUniqueTogether( + name="issueassignee", + unique_together={("issue", "assignee", "deleted_at")}, + ), + migrations.AlterUniqueTogether( + name="issuemention", + unique_together={("issue", "mention", "deleted_at")}, + ), + migrations.AlterUniqueTogether( + name="issuereaction", + unique_together={("issue", "actor", "reaction", "deleted_at")}, + ), + migrations.AlterUniqueTogether( + name="issuerelation", + unique_together={("issue", "related_issue", "deleted_at")}, + ), + migrations.AlterUniqueTogether( + name="issuesubscriber", + unique_together={("issue", "subscriber", "deleted_at")}, + ), + migrations.AlterUniqueTogether( + name="issuetype", + unique_together={("project", "name", "deleted_at")}, + ), + migrations.AlterUniqueTogether( + name="issueuserproperty", + unique_together={("user", "project", "deleted_at")}, + ), + migrations.AlterUniqueTogether( + name="issuevote", + unique_together={("issue", "actor", "deleted_at")}, + ), + migrations.AlterUniqueTogether( + name="label", + unique_together={("name", "project", "deleted_at")}, + ), + migrations.AlterUniqueTogether( + name="module", + unique_together={("name", "project", "deleted_at")}, + ), + migrations.AlterUniqueTogether( + name="moduleissue", + unique_together={("issue", "module", "deleted_at")}, + ), + migrations.AlterUniqueTogether( + name="modulemember", + unique_together={("module", "member", "deleted_at")}, + ), + migrations.AlterUniqueTogether( + name="moduleuserproperties", + unique_together={("module", "user", "deleted_at")}, + ), + migrations.AlterUniqueTogether( + name="project", + unique_together={ + ("identifier", "workspace", "deleted_at"), + ("name", "workspace", "deleted_at"), + }, + ), + migrations.AlterUniqueTogether( + name="projectidentifier", + unique_together={("name", "workspace", "deleted_at")}, + ), + migrations.AlterUniqueTogether( + name="projectmember", + unique_together={("project", "member", "deleted_at")}, + ), + migrations.AlterUniqueTogether( + name="projectpage", + unique_together={("project", "page", "deleted_at")}, + ), + migrations.AlterUniqueTogether( + name="projectpublicmember", + unique_together={("project", "member", "deleted_at")}, + ), + migrations.AlterUniqueTogether( + name="state", + unique_together={("name", "project", "deleted_at")}, + ), + migrations.AlterUniqueTogether( + name="team", + unique_together={("name", "workspace", "deleted_at")}, + ), + migrations.AlterUniqueTogether( + name="teammember", + unique_together={("team", "member", "deleted_at")}, + ), + migrations.AlterUniqueTogether( + name="teampage", + unique_together={("team", "page", "deleted_at")}, + ), + migrations.AlterUniqueTogether( + name="userfavorite", + unique_together={ + ("entity_type", "user", "entity_identifier", "deleted_at") + }, + ), + migrations.AlterUniqueTogether( + name="workspacemember", + unique_together={("workspace", "member", "deleted_at")}, + ), + migrations.AlterUniqueTogether( + name="workspacememberinvite", + unique_together={("email", "workspace", "deleted_at")}, + ), + migrations.AlterUniqueTogether( + name="workspacetheme", + unique_together={("workspace", "name", "deleted_at")}, + ), + migrations.AlterUniqueTogether( + name="workspaceuserproperties", + unique_together={("workspace", "user", "deleted_at")}, + ), + migrations.AddConstraint( + model_name="commentreaction", + constraint=models.UniqueConstraint( + condition=models.Q(("deleted_at__isnull", True)), + fields=("comment", "actor", "reaction"), + name="comment_reaction_unique_comment_actor_reaction_when_deleted_at_null", + ), + ), + migrations.AddConstraint( + model_name="cycleuserproperties", + constraint=models.UniqueConstraint( + condition=models.Q(("deleted_at__isnull", True)), + fields=("cycle", "user"), + name="cycle_user_properties_unique_cycle_user_when_deleted_at_null", + ), + ), + migrations.AddConstraint( + model_name="dashboardwidget", + constraint=models.UniqueConstraint( + condition=models.Q(("deleted_at__isnull", True)), + fields=("widget", "dashboard"), + name="dashboard_widget_unique_widget_dashboard_when_deleted_at_null", + ), + ), + migrations.AddConstraint( + model_name="deployboard", + constraint=models.UniqueConstraint( + condition=models.Q(("deleted_at__isnull", True)), + fields=("entity_name", "entity_identifier"), + name="deploy_board_unique_entity_name_entity_identifier_when_deleted_at_null", + ), + ), + migrations.AddConstraint( + model_name="estimate", + constraint=models.UniqueConstraint( + condition=models.Q(("deleted_at__isnull", True)), + fields=("name", "project"), + name="estimate_unique_name_project_when_deleted_at_null", + ), + ), + migrations.AddConstraint( + model_name="inbox", + constraint=models.UniqueConstraint( + condition=models.Q(("deleted_at__isnull", True)), + fields=("name", "project"), + name="inbox_unique_name_project_when_deleted_at_null", + ), + ), + migrations.AddConstraint( + model_name="issueassignee", + constraint=models.UniqueConstraint( + condition=models.Q(("deleted_at__isnull", True)), + fields=("issue", "assignee"), + name="issue_assignee_unique_issue_assignee_when_deleted_at_null", + ), + ), + migrations.AddConstraint( + model_name="issuemention", + constraint=models.UniqueConstraint( + condition=models.Q(("deleted_at__isnull", True)), + fields=("issue", "mention"), + name="issue_mention_unique_issue_mention_when_deleted_at_null", + ), + ), + migrations.AddConstraint( + model_name="issuereaction", + constraint=models.UniqueConstraint( + condition=models.Q(("deleted_at__isnull", True)), + fields=("issue", "actor", "reaction"), + name="issue_reaction_unique_issue_actor_reaction_when_deleted_at_null", + ), + ), + migrations.AddConstraint( + model_name="issuerelation", + constraint=models.UniqueConstraint( + condition=models.Q(("deleted_at__isnull", True)), + fields=("issue", "related_issue"), + name="issue_relation_unique_issue_related_issue_when_deleted_at_null", + ), + ), + migrations.AddConstraint( + model_name="issuesubscriber", + constraint=models.UniqueConstraint( + condition=models.Q(("deleted_at__isnull", True)), + fields=("issue", "subscriber"), + name="issue_subscriber_unique_issue_subscriber_when_deleted_at_null", + ), + ), + migrations.AddConstraint( + model_name="issuetype", + constraint=models.UniqueConstraint( + condition=models.Q(("deleted_at__isnull", True)), + fields=("name", "project"), + name="issue_type_unique_name_project_when_deleted_at_null", + ), + ), + migrations.AddConstraint( + model_name="issueuserproperty", + constraint=models.UniqueConstraint( + condition=models.Q(("deleted_at__isnull", True)), + fields=("user", "project"), + name="issue_user_property_unique_user_project_when_deleted_at_null", + ), + ), + migrations.AddConstraint( + model_name="issuevote", + constraint=models.UniqueConstraint( + condition=models.Q(("deleted_at__isnull", True)), + fields=("issue", "actor"), + name="issue_vote_unique_issue_actor_when_deleted_at_null", + ), + ), + migrations.AddConstraint( + model_name="label", + constraint=models.UniqueConstraint( + condition=models.Q(("deleted_at__isnull", True)), + fields=("name", "project"), + name="label_unique_name_project_when_deleted_at_null", + ), + ), + migrations.AddConstraint( + model_name="module", + constraint=models.UniqueConstraint( + condition=models.Q(("deleted_at__isnull", True)), + fields=("name", "project"), + name="module_unique_name_project_when_deleted_at_null", + ), + ), + migrations.AddConstraint( + model_name="moduleissue", + constraint=models.UniqueConstraint( + condition=models.Q(("deleted_at__isnull", True)), + fields=("issue", "module"), + name="module_issue_unique_issue_module_when_deleted_at_null", + ), + ), + migrations.AddConstraint( + model_name="modulemember", + constraint=models.UniqueConstraint( + condition=models.Q(("deleted_at__isnull", True)), + fields=("module", "member"), + name="module_member_unique_module_member_when_deleted_at_null", + ), + ), + migrations.AddConstraint( + model_name="moduleuserproperties", + constraint=models.UniqueConstraint( + condition=models.Q(("deleted_at__isnull", True)), + fields=("module", "user"), + name="module_user_properties_unique_module_user_when_deleted_at_null", + ), + ), + migrations.AddConstraint( + model_name="project", + constraint=models.UniqueConstraint( + condition=models.Q(("deleted_at__isnull", True)), + fields=("identifier", "workspace"), + name="project_unique_identifier_workspace_when_deleted_at_null", + ), + ), + migrations.AddConstraint( + model_name="project", + constraint=models.UniqueConstraint( + condition=models.Q(("deleted_at__isnull", True)), + fields=("name", "workspace"), + name="project_unique_name_workspace_when_deleted_at_null", + ), + ), + migrations.AddConstraint( + model_name="projectidentifier", + constraint=models.UniqueConstraint( + condition=models.Q(("deleted_at__isnull", True)), + fields=("name", "workspace"), + name="unique_name_workspace_when_deleted_at_null", + ), + ), + migrations.AddConstraint( + model_name="projectmember", + constraint=models.UniqueConstraint( + condition=models.Q(("deleted_at__isnull", True)), + fields=("project", "member"), + name="project_member_unique_project_member_when_deleted_at_null", + ), + ), + migrations.AddConstraint( + model_name="projectpage", + constraint=models.UniqueConstraint( + condition=models.Q(("deleted_at__isnull", True)), + fields=("project", "page"), + name="project_page_unique_project_page_when_deleted_at_null", + ), + ), + migrations.AddConstraint( + model_name="projectpublicmember", + constraint=models.UniqueConstraint( + condition=models.Q(("deleted_at__isnull", True)), + fields=("project", "member"), + name="project_public_member_unique_project_member_when_deleted_at_null", + ), + ), + migrations.AddConstraint( + model_name="state", + constraint=models.UniqueConstraint( + condition=models.Q(("deleted_at__isnull", True)), + fields=("name", "project"), + name="state_unique_name_project_when_deleted_at_null", + ), + ), + migrations.AddConstraint( + model_name="team", + constraint=models.UniqueConstraint( + condition=models.Q(("deleted_at__isnull", True)), + fields=("name", "workspace"), + name="team_unique_name_workspace_when_deleted_at_null", + ), + ), + migrations.AddConstraint( + model_name="teammember", + constraint=models.UniqueConstraint( + condition=models.Q(("deleted_at__isnull", True)), + fields=("team", "member"), + name="team_member_unique_team_member_when_deleted_at_null", + ), + ), + migrations.AddConstraint( + model_name="teampage", + constraint=models.UniqueConstraint( + condition=models.Q(("deleted_at__isnull", True)), + fields=("team", "page"), + name="team_page_unique_team_page_when_deleted_at_null", + ), + ), + migrations.AddConstraint( + model_name="userfavorite", + constraint=models.UniqueConstraint( + condition=models.Q(("deleted_at__isnull", True)), + fields=("entity_type", "entity_identifier", "user"), + name="user_favorite_unique_entity_type_entity_identifier_user_when_deleted_at_null", + ), + ), + migrations.AddConstraint( + model_name="workspacemember", + constraint=models.UniqueConstraint( + condition=models.Q(("deleted_at__isnull", True)), + fields=("workspace", "member"), + name="workspace_member_unique_workspace_member_when_deleted_at_null", + ), + ), + migrations.AddConstraint( + model_name="workspacememberinvite", + constraint=models.UniqueConstraint( + condition=models.Q(("deleted_at__isnull", True)), + fields=("email", "workspace"), + name="workspace_member_invite_unique_email_workspace_when_deleted_at_null", + ), + ), + migrations.AddConstraint( + model_name="workspacetheme", + constraint=models.UniqueConstraint( + condition=models.Q(("deleted_at__isnull", True)), + fields=("workspace", "name"), + name="workspace_theme_unique_workspace_name_when_deleted_at_null", + ), + ), + migrations.AddConstraint( + model_name="workspaceuserproperties", + constraint=models.UniqueConstraint( + condition=models.Q(("deleted_at__isnull", True)), + fields=("workspace", "user"), + name="workspace_user_properties_unique_workspace_user_when_deleted_at_null", + ), + ), + ] diff --git a/apiserver/plane/db/migrations/0073_analyticview_deleted_at_apiactivitylog_deleted_at_and_more.py b/apiserver/plane/db/migrations/0073_analyticview_deleted_at_apiactivitylog_deleted_at_and_more.py deleted file mode 100644 index ba0e5307e..000000000 --- a/apiserver/plane/db/migrations/0073_analyticview_deleted_at_apiactivitylog_deleted_at_and_more.py +++ /dev/null @@ -1,423 +0,0 @@ -# Generated by Django 4.2.11 on 2024-07-26 11:31 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('db', '0072_issueattachment_external_id_and_more'), - ] - - operations = [ - migrations.AddField( - model_name='analyticview', - name='deleted_at', - field=models.DateTimeField(blank=True, null=True, verbose_name='Deleted At'), - ), - migrations.AddField( - model_name='apiactivitylog', - name='deleted_at', - field=models.DateTimeField(blank=True, null=True, verbose_name='Deleted At'), - ), - migrations.AddField( - model_name='apitoken', - name='deleted_at', - field=models.DateTimeField(blank=True, null=True, verbose_name='Deleted At'), - ), - migrations.AddField( - model_name='commentreaction', - name='deleted_at', - field=models.DateTimeField(blank=True, null=True, verbose_name='Deleted At'), - ), - migrations.AddField( - model_name='cycle', - name='deleted_at', - field=models.DateTimeField(blank=True, null=True, verbose_name='Deleted At'), - ), - migrations.AddField( - model_name='cyclefavorite', - name='deleted_at', - field=models.DateTimeField(blank=True, null=True, verbose_name='Deleted At'), - ), - migrations.AddField( - model_name='cycleissue', - name='deleted_at', - field=models.DateTimeField(blank=True, null=True, verbose_name='Deleted At'), - ), - migrations.AddField( - model_name='cycleuserproperties', - name='deleted_at', - field=models.DateTimeField(blank=True, null=True, verbose_name='Deleted At'), - ), - migrations.AddField( - model_name='dashboard', - name='deleted_at', - field=models.DateTimeField(blank=True, null=True, verbose_name='Deleted At'), - ), - migrations.AddField( - model_name='dashboardwidget', - name='deleted_at', - field=models.DateTimeField(blank=True, null=True, verbose_name='Deleted At'), - ), - migrations.AddField( - model_name='deployboard', - name='deleted_at', - field=models.DateTimeField(blank=True, null=True, verbose_name='Deleted At'), - ), - migrations.AddField( - model_name='emailnotificationlog', - name='deleted_at', - field=models.DateTimeField(blank=True, null=True, verbose_name='Deleted At'), - ), - migrations.AddField( - model_name='estimate', - name='deleted_at', - field=models.DateTimeField(blank=True, null=True, verbose_name='Deleted At'), - ), - migrations.AddField( - model_name='estimatepoint', - name='deleted_at', - field=models.DateTimeField(blank=True, null=True, verbose_name='Deleted At'), - ), - migrations.AddField( - model_name='exporterhistory', - name='deleted_at', - field=models.DateTimeField(blank=True, null=True, verbose_name='Deleted At'), - ), - migrations.AddField( - model_name='fileasset', - name='deleted_at', - field=models.DateTimeField(blank=True, null=True, verbose_name='Deleted At'), - ), - migrations.AddField( - model_name='githubcommentsync', - name='deleted_at', - field=models.DateTimeField(blank=True, null=True, verbose_name='Deleted At'), - ), - migrations.AddField( - model_name='githubissuesync', - name='deleted_at', - field=models.DateTimeField(blank=True, null=True, verbose_name='Deleted At'), - ), - migrations.AddField( - model_name='githubrepository', - name='deleted_at', - field=models.DateTimeField(blank=True, null=True, verbose_name='Deleted At'), - ), - migrations.AddField( - model_name='githubrepositorysync', - name='deleted_at', - field=models.DateTimeField(blank=True, null=True, verbose_name='Deleted At'), - ), - migrations.AddField( - model_name='globalview', - name='deleted_at', - field=models.DateTimeField(blank=True, null=True, verbose_name='Deleted At'), - ), - migrations.AddField( - model_name='importer', - name='deleted_at', - field=models.DateTimeField(blank=True, null=True, verbose_name='Deleted At'), - ), - migrations.AddField( - model_name='inbox', - name='deleted_at', - field=models.DateTimeField(blank=True, null=True, verbose_name='Deleted At'), - ), - migrations.AddField( - model_name='inboxissue', - name='deleted_at', - field=models.DateTimeField(blank=True, null=True, verbose_name='Deleted At'), - ), - migrations.AddField( - model_name='integration', - name='deleted_at', - field=models.DateTimeField(blank=True, null=True, verbose_name='Deleted At'), - ), - migrations.AddField( - model_name='issue', - name='deleted_at', - field=models.DateTimeField(blank=True, null=True, verbose_name='Deleted At'), - ), - migrations.AddField( - model_name='issueactivity', - name='deleted_at', - field=models.DateTimeField(blank=True, null=True, verbose_name='Deleted At'), - ), - migrations.AddField( - model_name='issueassignee', - name='deleted_at', - field=models.DateTimeField(blank=True, null=True, verbose_name='Deleted At'), - ), - migrations.AddField( - model_name='issueattachment', - name='deleted_at', - field=models.DateTimeField(blank=True, null=True, verbose_name='Deleted At'), - ), - migrations.AddField( - model_name='issueblocker', - name='deleted_at', - field=models.DateTimeField(blank=True, null=True, verbose_name='Deleted At'), - ), - migrations.AddField( - model_name='issuecomment', - name='deleted_at', - field=models.DateTimeField(blank=True, null=True, verbose_name='Deleted At'), - ), - migrations.AddField( - model_name='issuelabel', - name='deleted_at', - field=models.DateTimeField(blank=True, null=True, verbose_name='Deleted At'), - ), - migrations.AddField( - model_name='issuelink', - name='deleted_at', - field=models.DateTimeField(blank=True, null=True, verbose_name='Deleted At'), - ), - migrations.AddField( - model_name='issuemention', - name='deleted_at', - field=models.DateTimeField(blank=True, null=True, verbose_name='Deleted At'), - ), - migrations.AddField( - model_name='issuereaction', - name='deleted_at', - field=models.DateTimeField(blank=True, null=True, verbose_name='Deleted At'), - ), - migrations.AddField( - model_name='issuerelation', - name='deleted_at', - field=models.DateTimeField(blank=True, null=True, verbose_name='Deleted At'), - ), - migrations.AddField( - model_name='issuesequence', - name='deleted_at', - field=models.DateTimeField(blank=True, null=True, verbose_name='Deleted At'), - ), - migrations.AddField( - model_name='issuesubscriber', - name='deleted_at', - field=models.DateTimeField(blank=True, null=True, verbose_name='Deleted At'), - ), - migrations.AddField( - model_name='issuetype', - name='deleted_at', - field=models.DateTimeField(blank=True, null=True, verbose_name='Deleted At'), - ), - migrations.AddField( - model_name='issueuserproperty', - name='deleted_at', - field=models.DateTimeField(blank=True, null=True, verbose_name='Deleted At'), - ), - migrations.AddField( - model_name='issueview', - name='deleted_at', - field=models.DateTimeField(blank=True, null=True, verbose_name='Deleted At'), - ), - migrations.AddField( - model_name='issueviewfavorite', - name='deleted_at', - field=models.DateTimeField(blank=True, null=True, verbose_name='Deleted At'), - ), - migrations.AddField( - model_name='issuevote', - name='deleted_at', - field=models.DateTimeField(blank=True, null=True, verbose_name='Deleted At'), - ), - migrations.AddField( - model_name='label', - name='deleted_at', - field=models.DateTimeField(blank=True, null=True, verbose_name='Deleted At'), - ), - migrations.AddField( - model_name='module', - name='deleted_at', - field=models.DateTimeField(blank=True, null=True, verbose_name='Deleted At'), - ), - migrations.AddField( - model_name='modulefavorite', - name='deleted_at', - field=models.DateTimeField(blank=True, null=True, verbose_name='Deleted At'), - ), - migrations.AddField( - model_name='moduleissue', - name='deleted_at', - field=models.DateTimeField(blank=True, null=True, verbose_name='Deleted At'), - ), - migrations.AddField( - model_name='modulelink', - name='deleted_at', - field=models.DateTimeField(blank=True, null=True, verbose_name='Deleted At'), - ), - migrations.AddField( - model_name='modulemember', - name='deleted_at', - field=models.DateTimeField(blank=True, null=True, verbose_name='Deleted At'), - ), - migrations.AddField( - model_name='moduleuserproperties', - name='deleted_at', - field=models.DateTimeField(blank=True, null=True, verbose_name='Deleted At'), - ), - migrations.AddField( - model_name='notification', - name='deleted_at', - field=models.DateTimeField(blank=True, null=True, verbose_name='Deleted At'), - ), - migrations.AddField( - model_name='page', - name='deleted_at', - field=models.DateTimeField(blank=True, null=True, verbose_name='Deleted At'), - ), - migrations.AddField( - model_name='pageblock', - name='deleted_at', - field=models.DateTimeField(blank=True, null=True, verbose_name='Deleted At'), - ), - migrations.AddField( - model_name='pagefavorite', - name='deleted_at', - field=models.DateTimeField(blank=True, null=True, verbose_name='Deleted At'), - ), - migrations.AddField( - model_name='pagelabel', - name='deleted_at', - field=models.DateTimeField(blank=True, null=True, verbose_name='Deleted At'), - ), - migrations.AddField( - model_name='pagelog', - name='deleted_at', - field=models.DateTimeField(blank=True, null=True, verbose_name='Deleted At'), - ), - migrations.AddField( - model_name='pageversion', - name='deleted_at', - field=models.DateTimeField(blank=True, null=True, verbose_name='Deleted At'), - ), - migrations.AddField( - model_name='project', - name='deleted_at', - field=models.DateTimeField(blank=True, null=True, verbose_name='Deleted At'), - ), - migrations.AddField( - model_name='projectdeployboard', - name='deleted_at', - field=models.DateTimeField(blank=True, null=True, verbose_name='Deleted At'), - ), - migrations.AddField( - model_name='projectfavorite', - name='deleted_at', - field=models.DateTimeField(blank=True, null=True, verbose_name='Deleted At'), - ), - migrations.AddField( - model_name='projectidentifier', - name='deleted_at', - field=models.DateTimeField(blank=True, null=True, verbose_name='Deleted At'), - ), - migrations.AddField( - model_name='projectmember', - name='deleted_at', - field=models.DateTimeField(blank=True, null=True, verbose_name='Deleted At'), - ), - migrations.AddField( - model_name='projectmemberinvite', - name='deleted_at', - field=models.DateTimeField(blank=True, null=True, verbose_name='Deleted At'), - ), - migrations.AddField( - model_name='projectpage', - name='deleted_at', - field=models.DateTimeField(blank=True, null=True, verbose_name='Deleted At'), - ), - migrations.AddField( - model_name='projectpublicmember', - name='deleted_at', - field=models.DateTimeField(blank=True, null=True, verbose_name='Deleted At'), - ), - migrations.AddField( - model_name='slackprojectsync', - name='deleted_at', - field=models.DateTimeField(blank=True, null=True, verbose_name='Deleted At'), - ), - migrations.AddField( - model_name='socialloginconnection', - name='deleted_at', - field=models.DateTimeField(blank=True, null=True, verbose_name='Deleted At'), - ), - migrations.AddField( - model_name='state', - name='deleted_at', - field=models.DateTimeField(blank=True, null=True, verbose_name='Deleted At'), - ), - migrations.AddField( - model_name='team', - name='deleted_at', - field=models.DateTimeField(blank=True, null=True, verbose_name='Deleted At'), - ), - migrations.AddField( - model_name='teammember', - name='deleted_at', - field=models.DateTimeField(blank=True, null=True, verbose_name='Deleted At'), - ), - migrations.AddField( - model_name='teampage', - name='deleted_at', - field=models.DateTimeField(blank=True, null=True, verbose_name='Deleted At'), - ), - migrations.AddField( - model_name='userfavorite', - name='deleted_at', - field=models.DateTimeField(blank=True, null=True, verbose_name='Deleted At'), - ), - migrations.AddField( - model_name='usernotificationpreference', - name='deleted_at', - field=models.DateTimeField(blank=True, null=True, verbose_name='Deleted At'), - ), - migrations.AddField( - model_name='userrecentvisit', - name='deleted_at', - field=models.DateTimeField(blank=True, null=True, verbose_name='Deleted At'), - ), - migrations.AddField( - model_name='webhook', - name='deleted_at', - field=models.DateTimeField(blank=True, null=True, verbose_name='Deleted At'), - ), - migrations.AddField( - model_name='webhooklog', - name='deleted_at', - field=models.DateTimeField(blank=True, null=True, verbose_name='Deleted At'), - ), - migrations.AddField( - model_name='workspace', - name='deleted_at', - field=models.DateTimeField(blank=True, null=True, verbose_name='Deleted At'), - ), - migrations.AddField( - model_name='workspaceintegration', - name='deleted_at', - field=models.DateTimeField(blank=True, null=True, verbose_name='Deleted At'), - ), - migrations.AddField( - model_name='workspacemember', - name='deleted_at', - field=models.DateTimeField(blank=True, null=True, verbose_name='Deleted At'), - ), - migrations.AddField( - model_name='workspacememberinvite', - name='deleted_at', - field=models.DateTimeField(blank=True, null=True, verbose_name='Deleted At'), - ), - migrations.AddField( - model_name='workspacetheme', - name='deleted_at', - field=models.DateTimeField(blank=True, null=True, verbose_name='Deleted At'), - ), - migrations.AddField( - model_name='workspaceuserproperties', - name='deleted_at', - field=models.DateTimeField(blank=True, null=True, verbose_name='Deleted At'), - ), - ] diff --git a/apiserver/plane/db/migrations/0074_alter_label_unique_together_and_more.py b/apiserver/plane/db/migrations/0074_alter_label_unique_together_and_more.py deleted file mode 100644 index 33fcf3fe3..000000000 --- a/apiserver/plane/db/migrations/0074_alter_label_unique_together_and_more.py +++ /dev/null @@ -1,75 +0,0 @@ -# Generated by Django 4.2.11 on 2024-07-31 12:17 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ( - "db", - "0073_analyticview_deleted_at_apiactivitylog_deleted_at_and_more", - ), - ] - - operations = [ - migrations.AlterUniqueTogether( - name="label", - unique_together={("name", "project", "deleted_at")}, - ), - migrations.AlterUniqueTogether( - name="module", - unique_together={("name", "project", "deleted_at")}, - ), - migrations.AlterUniqueTogether( - name="project", - unique_together={ - ("identifier", "workspace", "deleted_at"), - ("name", "workspace", "deleted_at"), - }, - ), - migrations.AlterUniqueTogether( - name="projectidentifier", - unique_together={("name", "workspace", "deleted_at")}, - ), - migrations.AddConstraint( - model_name="label", - constraint=models.UniqueConstraint( - condition=models.Q(("deleted_at__isnull", True)), - fields=("name", "project"), - name="label_unique_name_project_when_deleted_at_null", - ), - ), - migrations.AddConstraint( - model_name="module", - constraint=models.UniqueConstraint( - condition=models.Q(("deleted_at__isnull", True)), - fields=("name", "project"), - name="module_unique_name_project_when_deleted_at_null", - ), - ), - migrations.AddConstraint( - model_name="project", - constraint=models.UniqueConstraint( - condition=models.Q(("deleted_at__isnull", True)), - fields=("identifier", "workspace"), - name="project_unique_identifier_workspace_when_deleted_at_null", - ), - ), - migrations.AddConstraint( - model_name="project", - constraint=models.UniqueConstraint( - condition=models.Q(("deleted_at__isnull", True)), - fields=("name", "workspace"), - name="project_unique_name_workspace_when_deleted_at_null", - ), - ), - migrations.AddConstraint( - model_name="projectidentifier", - constraint=models.UniqueConstraint( - condition=models.Q(("deleted_at__isnull", True)), - fields=("name", "workspace"), - name="unique_name_workspace_when_deleted_at_null", - ), - ), - ] diff --git a/apiserver/plane/db/models/cycle.py b/apiserver/plane/db/models/cycle.py index 89c6e1707..b3ce49e01 100644 --- a/apiserver/plane/db/models/cycle.py +++ b/apiserver/plane/db/models/cycle.py @@ -161,7 +161,14 @@ class CycleUserProperties(ProjectBaseModel): ) class Meta: - unique_together = ["cycle", "user"] + unique_together = ["cycle", "user", "deleted_at"] + constraints = [ + models.UniqueConstraint( + fields=["cycle", "user"], + condition=models.Q(deleted_at__isnull=True), + name="cycle_user_properties_unique_cycle_user_when_deleted_at_null", + ) + ] verbose_name = "Cycle User Property" verbose_name_plural = "Cycle User Properties" db_table = "cycle_user_properties" diff --git a/apiserver/plane/db/models/dashboard.py b/apiserver/plane/db/models/dashboard.py index f21557a54..b9c3c45b0 100644 --- a/apiserver/plane/db/models/dashboard.py +++ b/apiserver/plane/db/models/dashboard.py @@ -88,7 +88,14 @@ class DashboardWidget(BaseModel): return f"{self.dashboard.name} {self.widget.key}" class Meta: - unique_together = ("widget", "dashboard") + unique_together = ("widget", "dashboard", "deleted_at") + constraints = [ + models.UniqueConstraint( + fields=["widget", "dashboard"], + condition=models.Q(deleted_at__isnull=True), + name="dashboard_widget_unique_widget_dashboard_when_deleted_at_null", + ) + ] verbose_name = "Dashboard Widget" verbose_name_plural = "Dashboard Widgets" db_table = "dashboard_widgets" diff --git a/apiserver/plane/db/models/deploy_board.py b/apiserver/plane/db/models/deploy_board.py index 41ffbc7c1..7f16910e1 100644 --- a/apiserver/plane/db/models/deploy_board.py +++ b/apiserver/plane/db/models/deploy_board.py @@ -46,7 +46,14 @@ class DeployBoard(WorkspaceBaseModel): return f"{self.entity_identifier} <{self.entity_name}>" class Meta: - unique_together = ["entity_name", "entity_identifier"] + unique_together = ["entity_name", "entity_identifier", "deleted_at"] + constraints = [ + models.UniqueConstraint( + fields=["entity_name", "entity_identifier"], + condition=models.Q(deleted_at__isnull=True), + name="deploy_board_unique_entity_name_entity_identifier_when_deleted_at_null", + ) + ] verbose_name = "Deploy Board" verbose_name_plural = "Deploy Boards" db_table = "deploy_boards" diff --git a/apiserver/plane/db/models/estimate.py b/apiserver/plane/db/models/estimate.py index 0713d774f..eb2eaf49b 100644 --- a/apiserver/plane/db/models/estimate.py +++ b/apiserver/plane/db/models/estimate.py @@ -1,6 +1,7 @@ # Django imports from django.core.validators import MaxValueValidator, MinValueValidator from django.db import models +from django.db.models import Q # Module imports from .project import ProjectBaseModel @@ -19,7 +20,14 @@ class Estimate(ProjectBaseModel): return f"{self.name} <{self.project.name}>" class Meta: - unique_together = ["name", "project"] + unique_together = ["name", "project", "deleted_at"] + constraints = [ + models.UniqueConstraint( + fields=["name", "project"], + condition=Q(deleted_at__isnull=True), + name="estimate_unique_name_project_when_deleted_at_null", + ) + ] verbose_name = "Estimate" verbose_name_plural = "Estimates" db_table = "estimates" diff --git a/apiserver/plane/db/models/favorite.py b/apiserver/plane/db/models/favorite.py index ebfe67dfe..cd5a414a5 100644 --- a/apiserver/plane/db/models/favorite.py +++ b/apiserver/plane/db/models/favorite.py @@ -31,7 +31,14 @@ class UserFavorite(WorkspaceBaseModel): ) class Meta: - unique_together = ["entity_type", "user", "entity_identifier"] + unique_together = ["entity_type", "user", "entity_identifier", "deleted_at"] + constraints = [ + models.UniqueConstraint( + fields=["entity_type", "entity_identifier", "user"], + condition=models.Q(deleted_at__isnull=True), + name="user_favorite_unique_entity_type_entity_identifier_user_when_deleted_at_null", + ) + ] verbose_name = "User Favorite" verbose_name_plural = "User Favorites" db_table = "user_favorites" diff --git a/apiserver/plane/db/models/inbox.py b/apiserver/plane/db/models/inbox.py index f45e90042..be2b1f3dd 100644 --- a/apiserver/plane/db/models/inbox.py +++ b/apiserver/plane/db/models/inbox.py @@ -19,7 +19,14 @@ class Inbox(ProjectBaseModel): return f"{self.name} <{self.project.name}>" class Meta: - unique_together = ["name", "project"] + unique_together = ["name", "project", "deleted_at"] + constraints = [ + models.UniqueConstraint( + fields=["name", "project"], + condition=models.Q(deleted_at__isnull=True), + name="inbox_unique_name_project_when_deleted_at_null", + ) + ] verbose_name = "Inbox" verbose_name_plural = "Inboxes" db_table = "inboxes" diff --git a/apiserver/plane/db/models/issue.py b/apiserver/plane/db/models/issue.py index 629dc0eb5..cafa732c5 100644 --- a/apiserver/plane/db/models/issue.py +++ b/apiserver/plane/db/models/issue.py @@ -295,7 +295,14 @@ class IssueRelation(ProjectBaseModel): ) class Meta: - unique_together = ["issue", "related_issue"] + unique_together = ["issue", "related_issue", "deleted_at"] + constraints = [ + models.UniqueConstraint( + fields=["issue", "related_issue"], + condition=Q(deleted_at__isnull=True), + name="issue_relation_unique_issue_related_issue_when_deleted_at_null", + ) + ] verbose_name = "Issue Relation" verbose_name_plural = "Issue Relations" db_table = "issue_relations" @@ -316,7 +323,14 @@ class IssueMention(ProjectBaseModel): ) class Meta: - unique_together = ["issue", "mention"] + unique_together = ["issue", "mention", "deleted_at"] + constraints = [ + models.UniqueConstraint( + fields=["issue", "mention"], + condition=Q(deleted_at__isnull=True), + name="issue_mention_unique_issue_mention_when_deleted_at_null", + ) + ] verbose_name = "Issue Mention" verbose_name_plural = "Issue Mentions" db_table = "issue_mentions" @@ -337,7 +351,14 @@ class IssueAssignee(ProjectBaseModel): ) class Meta: - unique_together = ["issue", "assignee"] + unique_together = ["issue", "assignee", "deleted_at"] + constraints = [ + models.UniqueConstraint( + fields=["issue", "assignee"], + condition=Q(deleted_at__isnull=True), + name="issue_assignee_unique_issue_assignee_when_deleted_at_null", + ) + ] verbose_name = "Issue Assignee" verbose_name_plural = "Issue Assignees" db_table = "issue_assignees" @@ -512,7 +533,14 @@ class IssueUserProperty(ProjectBaseModel): verbose_name_plural = "Issue User Properties" db_table = "issue_user_properties" ordering = ("-created_at",) - unique_together = ["user", "project"] + unique_together = ["user", "project", "deleted_at"] + constraints = [ + models.UniqueConstraint( + fields=["user", "project"], + condition=Q(deleted_at__isnull=True), + name="issue_user_property_unique_user_project_when_deleted_at_null", + ) + ] def __str__(self): """Return properties status of the issue""" @@ -538,9 +566,9 @@ class Label(ProjectBaseModel): unique_together = ["name", "project", "deleted_at"] constraints = [ models.UniqueConstraint( - fields=['name', 'project'], + fields=["name", "project"], condition=Q(deleted_at__isnull=True), - name='label_unique_name_project_when_deleted_at_null' + name="label_unique_name_project_when_deleted_at_null", ) ] verbose_name = "Label" @@ -610,7 +638,14 @@ class IssueSubscriber(ProjectBaseModel): ) class Meta: - unique_together = ["issue", "subscriber"] + unique_together = ["issue", "subscriber", "deleted_at"] + constraints = [ + models.UniqueConstraint( + fields=["issue", "subscriber"], + condition=models.Q(deleted_at__isnull=True), + name="issue_subscriber_unique_issue_subscriber_when_deleted_at_null", + ) + ] verbose_name = "Issue Subscriber" verbose_name_plural = "Issue Subscribers" db_table = "issue_subscribers" @@ -632,7 +667,14 @@ class IssueReaction(ProjectBaseModel): reaction = models.CharField(max_length=20) class Meta: - unique_together = ["issue", "actor", "reaction"] + unique_together = ["issue", "actor", "reaction", "deleted_at"] + constraints = [ + models.UniqueConstraint( + fields=["issue", "actor", "reaction"], + condition=models.Q(deleted_at__isnull=True), + name="issue_reaction_unique_issue_actor_reaction_when_deleted_at_null", + ) + ] verbose_name = "Issue Reaction" verbose_name_plural = "Issue Reactions" db_table = "issue_reactions" @@ -656,7 +698,14 @@ class CommentReaction(ProjectBaseModel): reaction = models.CharField(max_length=20) class Meta: - unique_together = ["comment", "actor", "reaction"] + unique_together = ["comment", "actor", "reaction", "deleted_at"] + constraints = [ + models.UniqueConstraint( + fields=["comment", "actor", "reaction"], + condition=models.Q(deleted_at__isnull=True), + name="comment_reaction_unique_comment_actor_reaction_when_deleted_at_null", + ) + ] verbose_name = "Comment Reaction" verbose_name_plural = "Comment Reactions" db_table = "comment_reactions" @@ -687,6 +736,14 @@ class IssueVote(ProjectBaseModel): unique_together = [ "issue", "actor", + "deleted_at", + ] + constraints = [ + models.UniqueConstraint( + fields=["issue", "actor"], + condition=models.Q(deleted_at__isnull=True), + name="issue_vote_unique_issue_actor_when_deleted_at_null", + ) ] verbose_name = "Issue Vote" verbose_name_plural = "Issue Votes" diff --git a/apiserver/plane/db/models/issue_type.py b/apiserver/plane/db/models/issue_type.py index f1ea487be..0b61a5772 100644 --- a/apiserver/plane/db/models/issue_type.py +++ b/apiserver/plane/db/models/issue_type.py @@ -1,5 +1,6 @@ # Django imports from django.db import models +from django.db.models import Q # Module imports from .workspace import WorkspaceBaseModel @@ -15,7 +16,14 @@ class IssueType(WorkspaceBaseModel): is_active = models.BooleanField(default=True) class Meta: - unique_together = ["project", "name"] + unique_together = ["project", "name", "deleted_at"] + constraints = [ + models.UniqueConstraint( + fields=["name", "project"], + condition=Q(deleted_at__isnull=True), + name="issue_type_unique_name_project_when_deleted_at_null", + ) + ] verbose_name = "Issue Type" verbose_name_plural = "Issue Types" db_table = "issue_types" diff --git a/apiserver/plane/db/models/module.py b/apiserver/plane/db/models/module.py index 62991cee9..7c1fff53e 100644 --- a/apiserver/plane/db/models/module.py +++ b/apiserver/plane/db/models/module.py @@ -130,7 +130,14 @@ class ModuleMember(ProjectBaseModel): member = models.ForeignKey("db.User", on_delete=models.CASCADE) class Meta: - unique_together = ["module", "member"] + unique_together = ["module", "member", "deleted_at"] + constraints = [ + models.UniqueConstraint( + fields=["module", "member"], + condition=models.Q(deleted_at__isnull=True), + name="module_member_unique_module_member_when_deleted_at_null", + ) + ] verbose_name = "Module Member" verbose_name_plural = "Module Members" db_table = "module_members" @@ -149,7 +156,14 @@ class ModuleIssue(ProjectBaseModel): ) class Meta: - unique_together = ["issue", "module"] + unique_together = ["issue", "module", "deleted_at"] + constraints = [ + models.UniqueConstraint( + fields=["issue", "module"], + condition=models.Q(deleted_at__isnull=True), + name="module_issue_unique_issue_module_when_deleted_at_null", + ) + ] verbose_name = "Module Issue" verbose_name_plural = "Module Issues" db_table = "module_issues" @@ -222,7 +236,14 @@ class ModuleUserProperties(ProjectBaseModel): ) class Meta: - unique_together = ["module", "user"] + unique_together = ["module", "user", "deleted_at"] + constraints = [ + models.UniqueConstraint( + fields=["module", "user"], + condition=models.Q(deleted_at__isnull=True), + name="module_user_properties_unique_module_user_when_deleted_at_null", + ) + ] verbose_name = "Module User Property" verbose_name_plural = "Module User Property" db_table = "module_user_properties" diff --git a/apiserver/plane/db/models/page.py b/apiserver/plane/db/models/page.py index 97381c2f6..5a7f3b001 100644 --- a/apiserver/plane/db/models/page.py +++ b/apiserver/plane/db/models/page.py @@ -234,7 +234,14 @@ class ProjectPage(BaseModel): ) class Meta: - unique_together = ["project", "page"] + unique_together = ["project", "page", "deleted_at"] + constraints = [ + models.UniqueConstraint( + fields=["project", "page"], + condition=models.Q(deleted_at__isnull=True), + name="project_page_unique_project_page_when_deleted_at_null", + ) + ] verbose_name = "Project Page" verbose_name_plural = "Project Pages" db_table = "project_pages" @@ -256,7 +263,14 @@ class TeamPage(BaseModel): ) class Meta: - unique_together = ["team", "page"] + unique_together = ["team", "page", "deleted_at"] + constraints = [ + models.UniqueConstraint( + fields=["team", "page"], + condition=models.Q(deleted_at__isnull=True), + name="team_page_unique_team_page_when_deleted_at_null", + ) + ] verbose_name = "Team Page" verbose_name_plural = "Team Pages" db_table = "team_pages" diff --git a/apiserver/plane/db/models/project.py b/apiserver/plane/db/models/project.py index 88bfd4ca0..f8d9379da 100644 --- a/apiserver/plane/db/models/project.py +++ b/apiserver/plane/db/models/project.py @@ -214,7 +214,14 @@ class ProjectMember(ProjectBaseModel): super(ProjectMember, self).save(*args, **kwargs) class Meta: - unique_together = ["project", "member"] + unique_together = ["project", "member", "deleted_at"] + constraints = [ + models.UniqueConstraint( + fields=["project", "member"], + condition=Q(deleted_at__isnull=True), + name="project_member_unique_project_member_when_deleted_at_null", + ) + ] verbose_name = "Project Member" verbose_name_plural = "Project Members" db_table = "project_members" @@ -324,7 +331,14 @@ class ProjectPublicMember(ProjectBaseModel): ) class Meta: - unique_together = ["project", "member"] + unique_together = ["project", "member", "deleted_at"] + constraints = [ + models.UniqueConstraint( + fields=["project", "member"], + condition=models.Q(deleted_at__isnull=True), + name="project_public_member_unique_project_member_when_deleted_at_null", + ) + ] verbose_name = "Project Public Member" verbose_name_plural = "Project Public Members" db_table = "project_public_members" diff --git a/apiserver/plane/db/models/state.py b/apiserver/plane/db/models/state.py index 36e053e22..c661a4d61 100644 --- a/apiserver/plane/db/models/state.py +++ b/apiserver/plane/db/models/state.py @@ -1,6 +1,7 @@ # Django imports from django.db import models from django.template.defaultfilters import slugify +from django.db.models import Q # Module imports from .project import ProjectBaseModel @@ -36,7 +37,14 @@ class State(ProjectBaseModel): return f"{self.name} <{self.project.name}>" class Meta: - unique_together = ["name", "project"] + unique_together = ["name", "project", "deleted_at"] + constraints = [ + models.UniqueConstraint( + fields=["name", "project"], + condition=Q(deleted_at__isnull=True), + name="state_unique_name_project_when_deleted_at_null", + ) + ] verbose_name = "State" verbose_name_plural = "States" db_table = "states" diff --git a/apiserver/plane/db/models/workspace.py b/apiserver/plane/db/models/workspace.py index f10d1ce6d..2c60dbe5b 100644 --- a/apiserver/plane/db/models/workspace.py +++ b/apiserver/plane/db/models/workspace.py @@ -185,7 +185,14 @@ class WorkspaceMember(BaseModel): is_active = models.BooleanField(default=True) class Meta: - unique_together = ["workspace", "member"] + unique_together = ["workspace", "member", "deleted_at"] + constraints = [ + models.UniqueConstraint( + fields=["workspace", "member"], + condition=models.Q(deleted_at__isnull=True), + name="workspace_member_unique_workspace_member_when_deleted_at_null", + ) + ] verbose_name = "Workspace Member" verbose_name_plural = "Workspace Members" db_table = "workspace_members" @@ -210,7 +217,14 @@ class WorkspaceMemberInvite(BaseModel): role = models.PositiveSmallIntegerField(choices=ROLE_CHOICES, default=10) class Meta: - unique_together = ["email", "workspace"] + unique_together = ["email", "workspace", "deleted_at"] + constraints = [ + models.UniqueConstraint( + fields=["email", "workspace"], + condition=models.Q(deleted_at__isnull=True), + name="workspace_member_invite_unique_email_workspace_when_deleted_at_null", + ) + ] verbose_name = "Workspace Member Invite" verbose_name_plural = "Workspace Member Invites" db_table = "workspace_member_invites" @@ -240,7 +254,14 @@ class Team(BaseModel): return f"{self.name} <{self.workspace.name}>" class Meta: - unique_together = ["name", "workspace"] + unique_together = ["name", "workspace", "deleted_at"] + constraints = [ + models.UniqueConstraint( + fields=["name", "workspace"], + condition=models.Q(deleted_at__isnull=True), + name="team_unique_name_workspace_when_deleted_at_null", + ) + ] verbose_name = "Team" verbose_name_plural = "Teams" db_table = "teams" @@ -264,7 +285,14 @@ class TeamMember(BaseModel): return self.team.name class Meta: - unique_together = ["team", "member"] + unique_together = ["team", "member", "deleted_at"] + constraints = [ + models.UniqueConstraint( + fields=["team", "member"], + condition=models.Q(deleted_at__isnull=True), + name="team_member_unique_team_member_when_deleted_at_null", + ) + ] verbose_name = "Team Member" verbose_name_plural = "Team Members" db_table = "team_members" @@ -287,7 +315,14 @@ class WorkspaceTheme(BaseModel): return str(self.name) + str(self.actor.email) class Meta: - unique_together = ["workspace", "name"] + unique_together = ["workspace", "name", "deleted_at"] + constraints = [ + models.UniqueConstraint( + fields=["workspace", "name"], + condition=models.Q(deleted_at__isnull=True), + name="workspace_theme_unique_workspace_name_when_deleted_at_null", + ) + ] verbose_name = "Workspace Theme" verbose_name_plural = "Workspace Themes" db_table = "workspace_themes" @@ -312,7 +347,14 @@ class WorkspaceUserProperties(BaseModel): ) class Meta: - unique_together = ["workspace", "user"] + unique_together = ["workspace", "user", "deleted_at"] + constraints = [ + models.UniqueConstraint( + fields=["workspace", "user"], + condition=models.Q(deleted_at__isnull=True), + name="workspace_user_properties_unique_workspace_user_when_deleted_at_null", + ) + ] verbose_name = "Workspace User Property" verbose_name_plural = "Workspace User Property" db_table = "workspace_user_properties" diff --git a/web/public/sw.js.map b/web/public/sw.js.map index edb9d2667..82a31b46d 100644 --- a/web/public/sw.js.map +++ b/web/public/sw.js.map @@ -1 +1 @@ -{"version":3,"file":"sw.js","sources":["../../../../../../private/tmp/c3f85ac15a3d7be63e5b3dc6cacf3c67/sw.js"],"sourcesContent":["import {registerRoute as workbox_routing_registerRoute} from '/Users/sriramveeraghanta/Desktop/makeplane/plane/node_modules/workbox-routing/registerRoute.mjs';\nimport {NetworkFirst as workbox_strategies_NetworkFirst} from '/Users/sriramveeraghanta/Desktop/makeplane/plane/node_modules/workbox-strategies/NetworkFirst.mjs';\nimport {NetworkOnly as workbox_strategies_NetworkOnly} from '/Users/sriramveeraghanta/Desktop/makeplane/plane/node_modules/workbox-strategies/NetworkOnly.mjs';\nimport {clientsClaim as workbox_core_clientsClaim} from '/Users/sriramveeraghanta/Desktop/makeplane/plane/node_modules/workbox-core/clientsClaim.mjs';/**\n * Welcome to your Workbox-powered service worker!\n *\n * You'll need to register this file in your web app.\n * See https://goo.gl/nhQhGp\n *\n * The rest of the code is auto-generated. Please don't update this file\n * directly; instead, make changes to your Workbox build configuration\n * and re-run your build process.\n * See https://goo.gl/2aRDsh\n */\n\n\nimportScripts(\n \n);\n\n\n\n\n\n\n\nself.skipWaiting();\n\nworkbox_core_clientsClaim();\n\n\n\nworkbox_routing_registerRoute(\"/\", new workbox_strategies_NetworkFirst({ \"cacheName\":\"start-url\", plugins: [{ cacheWillUpdate: async ({ request, response, event, state }) => { if (response && response.type === 'opaqueredirect') { return new Response(response.body, { status: 200, statusText: 'OK', headers: response.headers }) } return response } }] }), 'GET');\nworkbox_routing_registerRoute(/.*/i, new workbox_strategies_NetworkOnly({ \"cacheName\":\"dev\", plugins: [] }), 'GET');\n\n\n\n\n"],"names":["importScripts","self","skipWaiting","workbox_core_clientsClaim","workbox_routing_registerRoute","workbox_strategies_NetworkFirst","plugins","cacheWillUpdate","request","response","event","state","type","Response","body","status","statusText","headers","workbox_strategies_NetworkOnly"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"sw.js","sources":["../../../../../../../private/tmp/ea290982c9ca115771c7186cd16ad5dd/sw.js"],"sourcesContent":["import {registerRoute as workbox_routing_registerRoute} from '/Users/narayan/Desktop/personal/plane/plane/node_modules/workbox-routing/registerRoute.mjs';\nimport {NetworkFirst as workbox_strategies_NetworkFirst} from '/Users/narayan/Desktop/personal/plane/plane/node_modules/workbox-strategies/NetworkFirst.mjs';\nimport {NetworkOnly as workbox_strategies_NetworkOnly} from '/Users/narayan/Desktop/personal/plane/plane/node_modules/workbox-strategies/NetworkOnly.mjs';\nimport {clientsClaim as workbox_core_clientsClaim} from '/Users/narayan/Desktop/personal/plane/plane/node_modules/workbox-core/clientsClaim.mjs';/**\n * Welcome to your Workbox-powered service worker!\n *\n * You'll need to register this file in your web app.\n * See https://goo.gl/nhQhGp\n *\n * The rest of the code is auto-generated. Please don't update this file\n * directly; instead, make changes to your Workbox build configuration\n * and re-run your build process.\n * See https://goo.gl/2aRDsh\n */\n\n\nimportScripts(\n \n);\n\n\n\n\n\n\n\nself.skipWaiting();\n\nworkbox_core_clientsClaim();\n\n\n\nworkbox_routing_registerRoute(\"/\", new workbox_strategies_NetworkFirst({ \"cacheName\":\"start-url\", plugins: [{ cacheWillUpdate: async ({ request, response, event, state }) => { if (response && response.type === 'opaqueredirect') { return new Response(response.body, { status: 200, statusText: 'OK', headers: response.headers }) } return response } }] }), 'GET');\nworkbox_routing_registerRoute(/.*/i, new workbox_strategies_NetworkOnly({ \"cacheName\":\"dev\", plugins: [] }), 'GET');\n\n\n\n\n"],"names":["importScripts","self","skipWaiting","workbox_core_clientsClaim","workbox_routing_registerRoute","workbox_strategies_NetworkFirst","plugins","cacheWillUpdate","request","response","event","state","type","Response","body","status","statusText","headers","workbox_strategies_NetworkOnly"],"mappings":"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"} \ No newline at end of file