def _get_clean_narration(self):
"""
Return narration without HTML tags/entities.
Example:
<div data-oe-version="1.2">uveweve osoas</div>
-> uveweve osoas
"""
self.ensure_one()
narration = self.narration or ''
# Remove HTML tags safely
soup = BeautifulSoup(narration, "html.parser")
clean_text = soup.get_text(separator=' ', strip=True)
# Extra cleanup for spaces/newlines
clean_text = re.sub(r'\s+', ' ', clean_text).strip()
return clean_text