Commit 3ab8e40d authored by Rafael Monnerat's avatar Rafael Monnerat

erp5_web_renderjs_ui: Use RJS Skin to check consistency

See merge request nexedi/erp5!1888
parents 3c307e6a 5fcd5812
...@@ -12,39 +12,49 @@ if not context.getAvailableLanguageList(): ...@@ -12,39 +12,49 @@ if not context.getAvailableLanguageList():
if context.getSkinSelectionName() != 'RJS': if context.getSkinSelectionName() != 'RJS':
return [] return []
# find the .js containing translation data portal = context.getPortalObject()
gadget_translation_data_js = context.WebSite_getTranslationDataWebScriptValue() current_skin_selection = portal.getSkinNameFromRequest(context.REQUEST)
if gadget_translation_data_js is None: if not current_skin_selection:
return [] current_skin_selection = portal.portal_skins.getDefaultSkin()
error_list = [] try:
if context.WebSite_getTranslationDataTextContent( portal.changeSkin(context.getSkinSelectionName())
) != gadget_translation_data_js.getTextContent():
error_list.append("Translation data script content is not up to date") # find the .js containing translation data
gadget_translation_data_js = context.WebSite_getTranslationDataWebScriptValue()
if fixit: if gadget_translation_data_js is None:
# try to detect the case of two incompatible web sites configured for the same translation gadget. return []
# Use a mapping of set of web site ids keyed by translation data script reference and check
# if we update the same translation data script more than once in the same REQUEST. error_list = []
# Using REQUEST is not really good, since upgrader uses grouped activities and we can just check if context.WebSite_getTranslationDataTextContent(
# web sites processed in the same activity group, but that's easy and hopefully better than nothing. ) != gadget_translation_data_js.getTextContent():
already_updated_websites = container.REQUEST.get( error_list.append("Translation data script content is not up to date")
script.getId(), defaultdict(set))
container.REQUEST.set(script.getId(), already_updated_websites) if fixit:
gadget_translation_data_js_reference = gadget_translation_data_js.getReference() # try to detect the case of two incompatible web sites configured for the same translation gadget.
already_updated_websites[gadget_translation_data_js_reference].add(context.getId()) # Use a mapping of set of web site ids keyed by translation data script reference and check
if len(already_updated_websites[gadget_translation_data_js_reference]) > 1: # if we update the same translation data script more than once in the same REQUEST.
raise RuntimeError( # Using REQUEST is not really good, since upgrader uses grouped activities and we can just check
"Translation script %s is used by more than one web site with different configurations (%s)" # web sites processed in the same activity group, but that's easy and hopefully better than nothing.
% ( already_updated_websites = container.REQUEST.get(
gadget_translation_data_js_reference, script.getId(), defaultdict(set))
", ".join(already_updated_websites[gadget_translation_data_js_reference]), container.REQUEST.set(script.getId(), already_updated_websites)
)) gadget_translation_data_js_reference = gadget_translation_data_js.getReference()
already_updated_websites[gadget_translation_data_js_reference].add(context.getId())
context.WebSite_updateTranslationData() if len(already_updated_websites[gadget_translation_data_js_reference]) > 1:
# since we might have modified some cached files, check again the modification date raise RuntimeError(
# consistency. "Translation script %s is used by more than one web site with different configurations (%s)"
error_list.extend( % (
context.WebSite_checkCacheModificationDateConsistency(fixit=True)) gadget_translation_data_js_reference,
", ".join(already_updated_websites[gadget_translation_data_js_reference]),
return error_list ))
context.WebSite_updateTranslationData()
# since we might have modified some cached files, check again the modification date
# consistency.
error_list.extend(
context.WebSite_checkCacheModificationDateConsistency(fixit=True))
return error_list
finally:
portal.changeSkin(current_skin_selection)
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment