from market.models import FarmerMarketListing


NON_EDITABLE_FARMER_OWNER_STATUSES = frozenset(
    {
        FarmerMarketListing.Status.LIVE,
        FarmerMarketListing.Status.SOLD,
        FarmerMarketListing.Status.CANCELLED,
        FarmerMarketListing.Status.EXPIRED,
        "APPROVED",
        "PUBLISHED",
    }
)


def normalize_farmer_listing_status(value):
    return str(value or "").strip().upper()


def can_farmer_edit_own_listing(listing_or_status):
    status = normalize_farmer_listing_status(getattr(listing_or_status, "status", listing_or_status))
    return bool(status) and status not in NON_EDITABLE_FARMER_OWNER_STATUSES
