def with_base_attributes(cls): def create(self, validated_data): user = None request = self.context.get("request") if request and hasattr(request, "user"): user = request.user if user is not None: validated_data['created_by'] = user validated_data['modified_by'] = user obj = self.Meta.model.objects.create(**validated_data) return obj def update(self, instance, validated_data): user = None request = self.context.get("request") if request and hasattr(request, "user"): user = request.user if user is not None: validated_data['modified_by'] = user obj = self.Meta.model obj.objects.filter(pk=instance.id).update(**validated_data) return instance setattr(cls, "create", create) setattr(cls, "update", update) return cls