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)