from django.db import models


class ActiveManager(models.Manager):
    """
    Custom manager that excludes soft deleted records by default.
    
    This manager automatically filters out records where is_deleted=True,
    providing a clean interface for working with active records only.
    """
    
    def get_queryset(self):
        """
        Return queryset excluding soft deleted records.
        
        Returns:
            QuerySet: All objects where is_deleted=False
        """
        return super().get_queryset().filter(is_deleted=False)
    
    def with_deleted(self):
        """
        Return queryset including soft deleted records.
        
        Returns:
            QuerySet: All objects including soft deleted ones
        """
        return super().get_queryset()
    
    def deleted_only(self):
        """
        Return queryset with only soft deleted records.
        
        Returns:
            QuerySet: Only objects where is_deleted=True
        """
        return super().get_queryset().filter(is_deleted=True)

