From b5634f5fa1a659de68dc822da10f8f3a206bd905 Mon Sep 17 00:00:00 2001 From: Surya Prashanth Date: Fri, 9 May 2025 21:05:05 +0530 Subject: [PATCH] chore: add disable_auto_set_user flag on base model save method (#7041) - when disable_auto_set_user flag is set, user fields like created_by are derived from payload instead of crum --- apiserver/plane/db/models/base.py | 36 ++++++++++++++++++------------- 1 file changed, 21 insertions(+), 15 deletions(-) diff --git a/apiserver/plane/db/models/base.py b/apiserver/plane/db/models/base.py index d0531e881..558c25a40 100644 --- a/apiserver/plane/db/models/base.py +++ b/apiserver/plane/db/models/base.py @@ -18,22 +18,28 @@ class BaseModel(AuditModel): class Meta: abstract = True - def save(self, *args, **kwargs): - user = get_current_user() + def save(self, *args, created_by_id=None, disable_auto_set_user=False, **kwargs): + if not disable_auto_set_user: + # Check if created_by_id is provided + if created_by_id: + self.created_by_id = created_by_id + else: + user = get_current_user() - if user is None or user.is_anonymous: - self.created_by = None - self.updated_by = None - super(BaseModel, self).save(*args, **kwargs) - else: - # Check if the model is being created or updated - if self._state.adding: - # If created only set created_by value: set updated_by to None - self.created_by = user - self.updated_by = None - # If updated only set updated_by value don't touch created_by - self.updated_by = user - super(BaseModel, self).save(*args, **kwargs) + if user is None or user.is_anonymous: + self.created_by = None + self.updated_by = None + else: + # Check if the model is being created or updated + if self._state.adding: + # If creating, set created_by and leave updated_by as None + self.created_by = user + self.updated_by = None + else: + # If updating, set updated_by only + self.updated_by = user + + super(BaseModel, self).save(*args, **kwargs) def __str__(self): return str(self.id)