feat(logs): add workspace activity log api
This commit is contained in:
@@ -1,6 +1,12 @@
|
||||
from django.contrib.auth import get_user_model
|
||||
from django.db import models
|
||||
|
||||
from apps.logs.services import build_workspace_log_metadata
|
||||
from apps.logs.services.constants import (
|
||||
SECTION_RATES,
|
||||
SECTION_WORKSPACE,
|
||||
SECTION_WORKSPACE_MEMBERS,
|
||||
)
|
||||
from core.models.base import BaseModel
|
||||
|
||||
User = get_user_model()
|
||||
@@ -26,6 +32,15 @@ class Workspace(BaseModel):
|
||||
def __str__(self):
|
||||
return self.name
|
||||
|
||||
def get_additional_data(self):
|
||||
return build_workspace_log_metadata(
|
||||
section=SECTION_WORKSPACE,
|
||||
workspace_id=self.id,
|
||||
target_id=self.id,
|
||||
target_label=self.name,
|
||||
extra={"owner_id": str(self.owner_id)},
|
||||
)
|
||||
|
||||
@property
|
||||
def members(self):
|
||||
return User.objects.filter(
|
||||
@@ -77,6 +92,21 @@ class WorkspaceMembership(BaseModel):
|
||||
def __str__(self):
|
||||
return f"{self.user} @ {self.workspace}"
|
||||
|
||||
def get_additional_data(self):
|
||||
return build_workspace_log_metadata(
|
||||
section=SECTION_WORKSPACE_MEMBERS,
|
||||
workspace_id=self.workspace_id,
|
||||
target_id=self.id,
|
||||
target_label=self.user.full_name or self.user.mobile,
|
||||
extra={
|
||||
"member_user_id": str(self.user_id),
|
||||
"role": self.role,
|
||||
"canonical_owner_membership": (
|
||||
self.role == self.Role.OWNER and self.user_id == self.workspace.owner_id
|
||||
),
|
||||
},
|
||||
)
|
||||
|
||||
|
||||
class PriceUnit(BaseModel):
|
||||
code = models.CharField(max_length=8, unique=True)
|
||||
@@ -130,3 +160,15 @@ class WorkspaceUserRate(BaseModel):
|
||||
models.Index(fields=["workspace"], name="wur_workspace_idx"),
|
||||
models.Index(fields=["user"], name="wur_user_idx"),
|
||||
]
|
||||
|
||||
def get_additional_data(self):
|
||||
return build_workspace_log_metadata(
|
||||
section=SECTION_RATES,
|
||||
workspace_id=self.workspace_id,
|
||||
target_id=self.id,
|
||||
target_label=self.user.full_name or self.user.mobile,
|
||||
extra={
|
||||
"rate_user_id": str(self.user_id),
|
||||
"currency": self.currency,
|
||||
},
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user