ФУНКЦИИ - МЕЖПРОЕКТНАЯ КОММУНИКАЦИЯ: self-service workspace invite approval

This commit is contained in:
DCCONSTRUCTIONS
2026-05-09 22:57:07 +03:00
parent 42bc0fb0e6
commit 0be8f01283
22 changed files with 707 additions and 77 deletions
@@ -238,6 +238,17 @@ class WorkspaceMember(BaseModel):
class WorkspaceMemberInvite(BaseModel):
NODEDC_APPROVAL_NOT_REQUIRED = "not_required"
NODEDC_APPROVAL_PENDING = "pending"
NODEDC_APPROVAL_APPROVED = "approved"
NODEDC_APPROVAL_REJECTED = "rejected"
NODEDC_APPROVAL_CHOICES = (
(NODEDC_APPROVAL_NOT_REQUIRED, "Not required"),
(NODEDC_APPROVAL_PENDING, "Pending NODE.DC approval"),
(NODEDC_APPROVAL_APPROVED, "Approved by NODE.DC"),
(NODEDC_APPROVAL_REJECTED, "Rejected by NODE.DC"),
)
workspace = models.ForeignKey("db.Workspace", on_delete=models.CASCADE, related_name="workspace_member_invite")
email = models.CharField(max_length=255)
accepted = models.BooleanField(default=False)
@@ -245,6 +256,14 @@ class WorkspaceMemberInvite(BaseModel):
message = models.TextField(null=True)
responded_at = models.DateTimeField(null=True)
role = models.PositiveSmallIntegerField(choices=ROLE_CHOICES, default=5)
nodedc_approval_status = models.CharField(
max_length=32,
choices=NODEDC_APPROVAL_CHOICES,
default=NODEDC_APPROVAL_NOT_REQUIRED,
)
nodedc_approval_request_id = models.CharField(max_length=255, null=True, blank=True)
nodedc_approval_decided_at = models.DateTimeField(null=True, blank=True)
nodedc_platform_invite_link = models.URLField(max_length=1000, null=True, blank=True)
class Meta:
unique_together = ["email", "workspace", "deleted_at"]