diff -r 0eca05146080 -r 50452584f7ae src/pyams_content/component/paragraph/html.py --- a/src/pyams_content/component/paragraph/html.py Fri Nov 10 11:47:23 2017 +0100 +++ b/src/pyams_content/component/paragraph/html.py Fri Nov 10 11:47:59 2017 +0100 @@ -23,14 +23,17 @@ from pyams_content.component.links.interfaces import ILinkContainerTarget, IInternalLink, IExternalLink, IMailtoLink from pyams_content.component.paragraph.interfaces import IParagraphFactory from pyams_content.component.paragraph.interfaces.html import IHTMLParagraph -from pyams_i18n.interfaces import II18n +from pyams_content.features.checker.interfaces import IContentChecker, MISSING_VALUE, MISSING_LANG_VALUE +from pyams_i18n.interfaces import II18n, II18nManager, INegotiator from zope.lifecycleevent.interfaces import IObjectAddedEvent, IObjectModifiedEvent # import packages from pyams_content.component.links import InternalLink, ExternalLink, MailtoLink -from pyams_content.component.paragraph import BaseParagraph -from pyams_utils.registry import utility_config +from pyams_content.component.paragraph import BaseParagraph, BaseParagraphContentChecker +from pyams_utils.adapter import adapter_config +from pyams_utils.registry import utility_config, get_utility from pyams_utils.request import check_request +from pyams_utils.traversing import get_parent from pyams_utils.url import absolute_url from pyquery import PyQuery from pyramid.events import subscriber @@ -145,3 +148,28 @@ paragraph = event.object for lang, body in (paragraph.body or {}).items(): check_associations(paragraph, body, lang, notify=False) + + +@adapter_config(context=IHTMLParagraph, provides=IContentChecker) +class HTMLParagraphContentChecker(BaseParagraphContentChecker): + """HTML paragraph content checker""" + + def inner_check(self, request): + output = [] + translate = request.localizer.translate + manager = get_parent(self.context, II18nManager) + if manager is not None: + langs = manager.get_languages() + else: + negotiator = get_utility(INegotiator) + langs = (negotiator.server_language, ) + i18n = II18n(self.context) + for lang in langs: + value = i18n.get_attribute('body', lang, request) + if not value: + field_title = translate(IHTMLParagraph['body'].title) + if len(langs) == 1: + output.append(translate(MISSING_VALUE).format(field=field_title)) + else: + output.append(translate(MISSING_LANG_VALUE).format(field=field_title, lang=lang)) + return output