* dev: initialize inbox * dev: inbox and inbox issues models, views and serializers * dev: issue object filter for inbox * dev: filter for search issues * dev: inbox snooze and duplicates * dev: set duplicate to null by default * feat: inbox ui and services * feat: project detail in inbox * style: layout, popover, icons, sidebar * dev: default inbox for project and pending issues count * dev: fix exception when creating default inbox * fix: empty state for inbox * dev: auto issue state updation when rejected or marked duplicate * fix: inbox update status * fix: hydrating chose with old values filters workflow * feat: inbox issue filtering * fix: issue inbox filtering * feat: filter inbox issues * refactor: analytics, border colors * dev: filters and views for inbox * dev: source for inboxissue and update list inbox issue * dev: update list endpoint to house filters and additional data * dev: bridge id for list * dev: remove print logs * dev: update inbox issue workflow * dev: add description_html in issue details * fix: inbox track event auth, chore: inbox issue action authorization * fix: removed unnecessary api calls * style: viewed issues * fix: priority validation * dev: remove print logs * dev: update issue inbox update workflow * chore: added inbox view context * fix: type errors * fix: build errors and warnings * dev: update issue inbox workflow and log all the changes * fix: filters logic, sidebar fields to show * dev: update issue filtering status * chore: update create inbox issue modal, fix: mutation issues * dev: update issue accept workflow * chore: add comment to inbox issues * chore: remove inboxIssueId from url after deleting * dev: update the issue triage workflow * fix: mutation after issue status change * chore: issue details sidebar divider * fix: issue activity for inbox issues * dev: update inbox perrmissions * dev: create new permission layer * chore: auth layer for inbox * chore: show accepting status * chore: show issue status at the top of issue details --------- Co-authored-by: Dakshesh Jain <dakshesh.jain14@gmail.com> Co-authored-by: gurusainath <gurusainath007@gmail.com> Co-authored-by: Aaryan Khandelwal <aaryankhandu123@gmail.com>
51 lines
1.6 KiB
Python
51 lines
1.6 KiB
Python
# Django imports
|
|
from django.db import models
|
|
|
|
# Module imports
|
|
from plane.db.models import ProjectBaseModel
|
|
|
|
|
|
class Inbox(ProjectBaseModel):
|
|
name = models.CharField(max_length=255)
|
|
description = models.TextField(verbose_name="Inbox Description", blank=True)
|
|
is_default = models.BooleanField(default=False)
|
|
view_props = models.JSONField(default=dict)
|
|
|
|
def __str__(self):
|
|
"""Return name of the Inbox"""
|
|
return f"{self.name} <{self.project.name}>"
|
|
|
|
class Meta:
|
|
unique_together = ["name", "project"]
|
|
verbose_name = "Inbox"
|
|
verbose_name_plural = "Inboxes"
|
|
db_table = "inboxes"
|
|
ordering = ("name",)
|
|
|
|
|
|
class InboxIssue(ProjectBaseModel):
|
|
inbox = models.ForeignKey(
|
|
"db.Inbox", related_name="issue_inbox", on_delete=models.CASCADE
|
|
)
|
|
issue = models.ForeignKey(
|
|
"db.Issue", related_name="issue_inbox", on_delete=models.CASCADE
|
|
)
|
|
status = models.IntegerField(
|
|
choices=((-2, "Pending"), (-1, "Rejected"), (0, "Snoozed"), (1, "Accepted"), (2, "Duplicate")),
|
|
default=-2,
|
|
)
|
|
snoozed_till = models.DateTimeField(null=True)
|
|
duplicate_to = models.ForeignKey(
|
|
"db.Issue", related_name="inbox_duplicate", on_delete=models.SET_NULL, null=True
|
|
)
|
|
source = models.TextField(blank=True, null=True)
|
|
|
|
class Meta:
|
|
verbose_name = "InboxIssue"
|
|
verbose_name_plural = "InboxIssues"
|
|
db_table = "inbox_issues"
|
|
ordering = ("-created_at",)
|
|
|
|
def __str__(self):
|
|
"""Return name of the Issue"""
|
|
return f"{self.issue.name} <{self.inbox.name}>"
|