emrt.necd.content 2.5.49__zip → 2.5.51__zip
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- emrt.necd.content-2.5.51/PKG-INFO +1724 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/docs/HISTORY.txt +10 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/conclusions.py +3 -5
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/configure.zcml +6 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/profiles/default/metadata.xml +1 -1
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/reviewfolder.py +40 -6
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/subscribers.py +9 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/upgrades/configure.zcml +25 -0
- emrt.necd.content-2.5.51/emrt/necd/content/upgrades/evolve2550.py +56 -0
- emrt.necd.content-2.5.51/emrt/necd/content/upgrades/evolve2551.py +31 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/utils.py +1 -1
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/vocabularies.py +9 -8
- emrt.necd.content-2.5.51/emrt.necd.content.egg-info/PKG-INFO +1724 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt.necd.content.egg-info/SOURCES.txt +2 -0
- emrt.necd.content-2.5.51/emrt.necd.content.egg-info/entry_points.txt +2 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/setup.py +1 -1
- emrt.necd.content-2.5.49/PKG-INFO +0 -1692
- emrt.necd.content-2.5.49/emrt.necd.content.egg-info/PKG-INFO +0 -1692
- emrt.necd.content-2.5.49/emrt.necd.content.egg-info/entry_points.txt +0 -5
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/.editorconfig +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/.gitignore +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/MANIFEST.in +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/Makefile +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/README.txt +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/bootstrap.py +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/build_manylinux.sh +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/buildout.cfg +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/docs/INSTALL.txt +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/docs/LICENSE.GPL +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/docs/LICENSE.txt +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/__init__.py +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/__init__.py +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/INTEGRATION.txt +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/__init__.py +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/adapters/__init__.py +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/adapters/configure.zcml +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/adapters/reference_number.py +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/browser/__init__.py +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/browser/attachmentdownload.py +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/browser/bulk_update.py +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/browser/carryover.py +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/browser/comments.py +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/browser/configure.zcml +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/browser/copyfiles.py +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/browser/flatten_json.so +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/browser/get_sample_xls.py +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/browser/interfaces.py +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/browser/macros.py +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/browser/observation_import.py +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/browser/reminder.py +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/browser/statechange.py +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/browser/statisticsview.py +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/browser/tableau.py +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/browser/templates/assign_answerer_form.pt +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/browser/templates/assign_conclusion_reviewer_form.pt +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/browser/templates/assign_counterpart_form.pt +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/browser/templates/bulk_update.pt +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/browser/templates/carryover.pt +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/browser/templates/finalisedfolderview.pt +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/browser/templates/import_observation.pt +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/browser/templates/inboxreviewfolderview.pt +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/browser/templates/macros.pt +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/browser/templates/multi_input.pt +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/browser/templates/reminder.pt +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/browser/templates/reminder_default_content.pt +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/browser/templates/reviewfolder_get_table.pt +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/browser/templates/reviewfolderview.pt +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/browser/templates/statisticsview.pt +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/browser/templates/tableau_connector.pt +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/browser/templates/tableau_dashboard.pt +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/browser/xls_utils.py +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/comment.py +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/commentanswer.py +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/commentextender.py +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/constants.py +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/converter.py +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/crons.py +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/forms/__init__.py +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/forms/configure.zcml +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/forms/redraft.py +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/inbox_sections.py +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/indexers.py +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/locales/README.txt +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/necdfile.py +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/nfr_code_matching.py +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/notifications/__init__.py +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/notifications/answer_acknowledged.pt +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/notifications/answer_acknowledged.py +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/notifications/answer_to_msexperts.pt +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/notifications/answer_to_msexperts.py +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/notifications/comment_added.py +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/notifications/comment_added.zcml +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/notifications/comment_to_msa.pt +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/notifications/comment_to_mse.pt +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/notifications/conclusion_to_comment.pt +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/notifications/conclusion_to_comment.py +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/notifications/configure.zcml +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/notifications/new_comment.pt +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/notifications/observation_finalisation_denied.pt +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/notifications/observation_finalisation_denied.py +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/notifications/observation_finalisation_request.pt +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/notifications/observation_finalisation_request.py +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/notifications/observation_finalised.pt +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/notifications/observation_finalised.py +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/notifications/observation_finalised_rev_msg.pt +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/notifications/observation_recalled.py +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/notifications/observation_recalled.zcml +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/notifications/observation_recalled_closed_msa.pt +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/notifications/observation_recalled_closed_se.pt +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/notifications/observation_recalled_denied_se.pt +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/notifications/question_answered.py +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/notifications/question_answered_lr_msg.pt +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/notifications/question_answered_msexperts_msg.pt +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/notifications/question_answered_rev_msg.pt +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/notifications/question_ready_for_approval.pt +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/notifications/question_ready_for_approval.py +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/notifications/question_redraft.pt +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/notifications/question_redraft.py +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/notifications/question_redraft.zcml +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/notifications/question_to_counterpart.pt +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/notifications/question_to_counterpart.py +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/notifications/question_to_ms.pt +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/notifications/question_to_ms.py +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/notifications/question_to_ms_rev_msg.pt +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/notifications/utils.py +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/observation.py +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/overrides.zcml +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/patches.py +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/patches.zcml +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/permissions.zcml +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/profiles/default/catalog.xml +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/profiles/default/cssregistry.xml +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/profiles/default/diff_tool.xml +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/profiles/default/emrt.necd.content_various.txt +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/profiles/default/jsregistry.xml +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/profiles/default/ldap_plugin.xml +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/profiles/default/necdvocabularies/conclusion_reasons.csv +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/profiles/default/necdvocabularies/eea_member_states.csv +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/profiles/default/necdvocabularies/fuel.csv +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/profiles/default/necdvocabularies/ghg_source_category.csv +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/profiles/default/necdvocabularies/ghg_source_sectors.csv +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/profiles/default/necdvocabularies/highlight.csv +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/profiles/default/necdvocabularies/highlight_2024_onwards.csv +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/profiles/default/necdvocabularies/highlight_projection.csv +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/profiles/default/necdvocabularies/parameter.csv +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/profiles/default/necdvocabularies/pollutants.csv +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/profiles/default/necdvocabularies/scenario_type.csv +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/profiles/default/registry.xml +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/profiles/default/rolemap.xml +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/profiles/default/sharing.xml +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/profiles/default/tinymce.xml +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/profiles/default/types/Comment.xml +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/profiles/default/types/CommentAnswer.xml +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/profiles/default/types/Conclusions.xml +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/profiles/default/types/Folder.xml +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/profiles/default/types/NECDFile.xml +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/profiles/default/types/Observation.xml +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/profiles/default/types/Question.xml +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/profiles/default/types/ReviewFolder.xml +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/profiles/default/types.xml +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/profiles/default/workflows/esd-answer-workflow/definition.xml +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/profiles/default/workflows/esd-comment-workflow/definition.xml +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/profiles/default/workflows/esd-conclusion-workflow/definition.xml +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/profiles/default/workflows/esd-file-workflow/definition.xml +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/profiles/default/workflows/esd-question-review-workflow/definition.xml +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/profiles/default/workflows/esd-review-workflow/definition.xml +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/profiles/default/workflows/esd-reviewtool-folder-workflow/definition.xml +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/profiles/default/workflows.xml +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/profiles.zcml +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/question.py +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/roles/__init__.py +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/roles/configure.zcml +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/roles/localroles.py +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/roles/localrolesubscriber.py +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/setuphandlers.py +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/static/chosen-sprite.png +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/static/chosen-sprite@2x.png +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/static/chosen.jquery.js +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/static/chosen.min.css +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/static/cookies.js +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/static/eea-tabs.css +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/static/eea-tabs.js +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/static/emrt.necd.content.css +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/static/flags.css +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/static/flags.png +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/static/inbox_view.css +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/static/inbox_view.js +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/static/moment.min.js +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/static/phase-1.png +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/static/phase-12.png +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/static/phase-2.png +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/static/tableauwdc-2.3.1.min.js +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/static/tableauwdc-2.3.latest.min.js +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/subscriptionconfiguration.py +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/subscriptions/__init__.py +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/subscriptions/configure.zcml +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/subscriptions/dexterity.py +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/subscriptions/interfaces.py +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/templates/conclusion_layout.pt +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/templates/diffedview.pt +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/templates/macro_qa_chat.pt +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/templates/observationview.pt +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/templates/subscriptionconfiguration.pt +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/templates/subscriptionconfigurationreview.pt +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/templates/widget_activity.pt +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/templates/widget_activity_type.pt +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/templates/widget_highlight.pt +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/templates/widget_pollutants.pt +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/tests.py +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/timeit.py +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/transform_html_to_docx.py +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/upgrades/__init__.py +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/upgrades/evolve2010.py +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/upgrades/evolve2015.py +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/upgrades/evolve2016.py +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/upgrades/evolve2022.py +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/upgrades/evolve2024.py +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/upgrades/evolve2025.py +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/upgrades/evolve2029.py +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/upgrades/evolve2032.py +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/upgrades/evolve2037.py +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/upgrades/evolve2038.py +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/upgrades/evolve2042.py +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/upgrades/evolve2044.py +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/upgrades/evolve2045.py +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/upgrades/evolve205.py +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/upgrades/evolve206.py +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/upgrades/evolve207.py +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/upgrades/evolve2201.py +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/upgrades/evolve230.py +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/upgrades/evolve235.py +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/upgrades/evolve236.py +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/upgrades/evolve237.py +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/upgrades/evolve240.py +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/upgrades/evolve243.py +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/upgrades/evolve252.py +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/upgrades/evolve2524.py +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/upgrades/evolve2537.py +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/upgrades/evolve2538.py +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/upgrades/evolve2540.py +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/upgrades/evolve2542.py +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/upgrades/evolve258.py +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/upgrades/portal_workflow.py +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/upgrades/templates/portal_workflow_apply_and_reindex.pt +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/utilities/__init__.py +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/utilities/configure.zcml +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/utilities/interfaces.py +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/utilities/ldap_utils.py +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/utilities/ldap_wrapper.py +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/utilities/ms_user.py +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/utilities/question.py +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/utilities/roles.py +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/views.zcml +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/vocabularies.zcml +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt.necd.content.egg-info/dependency_links.txt +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt.necd.content.egg-info/namespace_packages.txt +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt.necd.content.egg-info/not-zip-safe +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt.necd.content.egg-info/requires.txt +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt.necd.content.egg-info/top_level.txt +0 -0
- {emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/setup.cfg +0 -0
|
@@ -1,6 +1,16 @@
|
|
|
1
1
|
Changelog
|
|
2
2
|
=========
|
|
3
3
|
|
|
4
|
+
2.5.51 (2024-05-23)
|
|
5
|
+
|
|
6
|
+
- Bug #270288 - Fix observation not reindexing after new comments
|
|
7
|
+
|
|
8
|
+
2.5.50 (2024-04-30)
|
|
9
|
+
|
|
10
|
+
- Task #260973 - Add formatting
|
|
11
|
+
- Task #260971 - Review if flags need updating/ all are still relevant
|
|
12
|
+
- Bug #269439 - Error when editing conclusion text
|
|
13
|
+
|
|
4
14
|
2.5.49 (2024-04-25)
|
|
5
15
|
|
|
6
16
|
- Task #260971 - Add "Description flags" to carryover
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
import datetime
|
|
2
|
-
from copy import copy
|
|
3
1
|
from logging import getLogger
|
|
4
2
|
from AccessControl import getSecurityManager
|
|
5
3
|
from Acquisition import aq_base
|
|
@@ -12,9 +10,7 @@ from emrt.necd.content import MessageFactory as _
|
|
|
12
10
|
from emrt.necd.content.utils import hidden
|
|
13
11
|
from emrt.necd.content.utils import get_vocabulary_value
|
|
14
12
|
from plone import api
|
|
15
|
-
import plone.z3cform.templates
|
|
16
13
|
from plone.app.dexterity.behaviors.discussion import IAllowDiscussion
|
|
17
|
-
from plone.app.textfield import RichText
|
|
18
14
|
from plone.dexterity.browser import add
|
|
19
15
|
from plone.dexterity.browser import edit
|
|
20
16
|
from plone.dexterity.content import Container
|
|
@@ -70,7 +66,7 @@ class IConclusions(form.Schema, IImageScaleTraversable):
|
|
|
70
66
|
required=True,
|
|
71
67
|
)
|
|
72
68
|
|
|
73
|
-
text =
|
|
69
|
+
text = schema.Text(
|
|
74
70
|
title=_(u'Text'),
|
|
75
71
|
required=True,
|
|
76
72
|
default=u'',
|
|
@@ -244,6 +240,7 @@ class PseudoConclusion(object):
|
|
|
244
240
|
text = u''
|
|
245
241
|
closing_reason = ''
|
|
246
242
|
highlight = ''
|
|
243
|
+
highlight_vocabulary = ''
|
|
247
244
|
|
|
248
245
|
def __init__(self, context):
|
|
249
246
|
self.context = context
|
|
@@ -258,6 +255,7 @@ class PseudoConclusion(object):
|
|
|
258
255
|
|
|
259
256
|
def __call__(self, container):
|
|
260
257
|
self.highlight = container.highlight
|
|
258
|
+
self.highlight_vocabulary = container.highlight_vocabulary
|
|
261
259
|
# [refs #102793] needed by vocabularies
|
|
262
260
|
self.type = container.type # inventory/projection
|
|
263
261
|
return self
|
|
@@ -193,6 +193,12 @@
|
|
|
193
193
|
handler="emrt.necd.content.notifications.observation_finalisation_request.notification_lr"
|
|
194
194
|
/>
|
|
195
195
|
|
|
196
|
+
<!-- New comment, reindex number of replies -->
|
|
197
|
+
<subscriber
|
|
198
|
+
for="plone.app.discussion.interfaces.IComment zope.lifecycleevent.IObjectAddedEvent"
|
|
199
|
+
handler="emrt.necd.content.subscribers.new_discussion_comment"
|
|
200
|
+
/>
|
|
201
|
+
|
|
196
202
|
<!-- Crons view -->
|
|
197
203
|
<browser:page
|
|
198
204
|
name="cron_update_vocabularies"
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
from collections import namedtuple
|
|
1
2
|
import itertools
|
|
2
3
|
import time
|
|
3
4
|
from StringIO import StringIO
|
|
@@ -133,14 +134,17 @@ def get_finalisation_reasons(reviewfolder):
|
|
|
133
134
|
return reasons
|
|
134
135
|
|
|
135
136
|
|
|
137
|
+
MissingHighlight = namedtuple("MissingHighlight", ["title"])
|
|
138
|
+
|
|
136
139
|
def translate_highlights(vocab, keys):
|
|
137
|
-
return tuple(
|
|
140
|
+
return tuple(
|
|
141
|
+
vocab.by_token.get(x, MissingHighlight(x)).title for x in keys)
|
|
138
142
|
|
|
139
143
|
|
|
140
|
-
def get_highlight_vocabs(context):
|
|
144
|
+
def get_highlight_vocabs(context, voc_name=None):
|
|
141
145
|
vocab_highlight = getUtility(
|
|
142
146
|
IVocabularyFactory,
|
|
143
|
-
name='emrt.necd.content.highlight')(context)
|
|
147
|
+
name='emrt.necd.content.highlight')(context, voc_name)
|
|
144
148
|
|
|
145
149
|
vocab_highlight_values = tuple([
|
|
146
150
|
term.value for term in vocab_highlight
|
|
@@ -159,6 +163,28 @@ def get_highlight_vocabs(context):
|
|
|
159
163
|
|
|
160
164
|
return vocab_description_flags, vocab_conclusion_flags, vocab_highlight
|
|
161
165
|
|
|
166
|
+
def classify_unknown_highlights(context, unknown_highlights):
|
|
167
|
+
result = {
|
|
168
|
+
"description_flags": set(),
|
|
169
|
+
"conclusion_flags": set()
|
|
170
|
+
}
|
|
171
|
+
if context.type == 'inventory':
|
|
172
|
+
other_highlight_vocabularies = [
|
|
173
|
+
x for x in HIGHLIGHT_VOCABULARY_TYPES.by_value
|
|
174
|
+
if x and x != context.highlight_vocabulary
|
|
175
|
+
and not x.endswith('projection')
|
|
176
|
+
]
|
|
177
|
+
for voc_name in other_highlight_vocabularies:
|
|
178
|
+
vocab_description_flags, vocab_conclusion_flags, vocab_highlight = (
|
|
179
|
+
get_highlight_vocabs(context, voc_name)
|
|
180
|
+
)
|
|
181
|
+
highlights = translate_highlights(vocab_highlight, unknown_highlights)
|
|
182
|
+
description_flags = get_common(highlights, vocab_description_flags)
|
|
183
|
+
conclusion_flags = get_common(highlights, vocab_conclusion_flags)
|
|
184
|
+
result["conclusion_flags"].update(conclusion_flags)
|
|
185
|
+
result["description_flags"].update(description_flags)
|
|
186
|
+
|
|
187
|
+
return result
|
|
162
188
|
|
|
163
189
|
def filter_for_ms(brains, context):
|
|
164
190
|
if api.user.is_anonymous():
|
|
@@ -654,6 +680,14 @@ class ExportReviewFolderForm(form.Form, ReviewFolderMixin):
|
|
|
654
680
|
row = [observation.getId]
|
|
655
681
|
highlights = translate_highlights(
|
|
656
682
|
vocab_highlight, observation['get_highlight'] or [])
|
|
683
|
+
description_flags = get_common(highlights, vocab_description_flags)
|
|
684
|
+
conclusion_flags = get_common(highlights, vocab_conclusion_flags)
|
|
685
|
+
unknown_flags = classify_unknown_highlights(
|
|
686
|
+
self.context,
|
|
687
|
+
set(highlights).difference(
|
|
688
|
+
itertools.chain(description_flags, conclusion_flags)
|
|
689
|
+
)
|
|
690
|
+
)
|
|
657
691
|
|
|
658
692
|
for key in fields_to_export:
|
|
659
693
|
if key == 'observation_is_potential_technical_correction':
|
|
@@ -664,11 +698,11 @@ class ExportReviewFolderForm(form.Form, ReviewFolderMixin):
|
|
|
664
698
|
row.append(yes_no_bool(IS_FIELD_MAP[key] in highlights))
|
|
665
699
|
elif key == 'get_description_flags':
|
|
666
700
|
row.append(', '.join(
|
|
667
|
-
|
|
701
|
+
list(itertools.chain(description_flags, unknown_flags["description_flags"]))
|
|
668
702
|
))
|
|
669
703
|
elif key == 'get_conclusion_flags':
|
|
670
704
|
row.append(', '.join(
|
|
671
|
-
|
|
705
|
+
list(itertools.chain(conclusion_flags, unknown_flags["conclusion_flags"]))
|
|
672
706
|
))
|
|
673
707
|
elif key == 'get_is_ms_key_category':
|
|
674
708
|
row.append(
|
|
@@ -784,7 +818,7 @@ class ExportReviewFolderForm(form.Form, ReviewFolderMixin):
|
|
|
784
818
|
|
|
785
819
|
try:
|
|
786
820
|
comment_html = comment.text.output_relative_to(context)
|
|
787
|
-
output_text = html2text.html2text(comment_html)
|
|
821
|
+
output_text = html2text.html2text(comment_html, bodywidth=0)
|
|
788
822
|
except AttributeError:
|
|
789
823
|
output_text = comment.text
|
|
790
824
|
|
|
@@ -3,6 +3,9 @@ from DateTime import DateTime
|
|
|
3
3
|
from plone import api
|
|
4
4
|
from Products.CMFCore.utils import getToolByName
|
|
5
5
|
|
|
6
|
+
from emrt.necd.content.observation import IObservation
|
|
7
|
+
from emrt.necd.content.utils import find_parent_with_interface
|
|
8
|
+
|
|
6
9
|
|
|
7
10
|
def question_transition(question, event):
|
|
8
11
|
if event.action in ['approve-question']:
|
|
@@ -158,3 +161,9 @@ def observation_transition(observation, event):
|
|
|
158
161
|
|
|
159
162
|
|
|
160
163
|
observation.reindexObject()
|
|
164
|
+
|
|
165
|
+
|
|
166
|
+
def new_discussion_comment(comment, event):
|
|
167
|
+
with api.env.adopt_roles(roles=['Manager']):
|
|
168
|
+
observation = find_parent_with_interface(IObservation, comment)
|
|
169
|
+
observation.reindexObject()
|
{emrt.necd.content-2.5.49 → emrt.necd.content-2.5.51}/emrt/necd/content/upgrades/configure.zcml
RENAMED
|
@@ -810,5 +810,30 @@
|
|
|
810
810
|
|
|
811
811
|
</genericsetup:upgradeSteps>
|
|
812
812
|
|
|
813
|
+
<genericsetup:upgradeSteps
|
|
814
|
+
source="2.5.48"
|
|
815
|
+
destination="2.5.50"
|
|
816
|
+
profile="emrt.necd.content:default">
|
|
817
|
+
|
|
818
|
+
<genericsetup:upgradeStep
|
|
819
|
+
title="Roll-back formatting for conclusion text."
|
|
820
|
+
description="[refs #260973] Add formatting."
|
|
821
|
+
handler=".evolve2550.run"
|
|
822
|
+
/>
|
|
823
|
+
|
|
824
|
+
</genericsetup:upgradeSteps>
|
|
825
|
+
|
|
826
|
+
<genericsetup:upgradeSteps
|
|
827
|
+
source="2.5.50"
|
|
828
|
+
destination="2.5.51"
|
|
829
|
+
profile="emrt.necd.content:default">
|
|
830
|
+
|
|
831
|
+
<genericsetup:upgradeStep
|
|
832
|
+
title="Reindex observation discussion counts"
|
|
833
|
+
description="[refs #270288] observation not reindexed when new discussion comments are added."
|
|
834
|
+
handler=".evolve2551.run"
|
|
835
|
+
/>
|
|
836
|
+
|
|
837
|
+
</genericsetup:upgradeSteps>
|
|
813
838
|
|
|
814
839
|
</configure>
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
from logging import getLogger
|
|
2
|
+
|
|
3
|
+
import transaction
|
|
4
|
+
from DateTime import DateTime
|
|
5
|
+
|
|
6
|
+
from zope.component import getMultiAdapter
|
|
7
|
+
from zope.globalrequest import getRequest
|
|
8
|
+
|
|
9
|
+
from plone.app.textfield.value import RichTextValue
|
|
10
|
+
|
|
11
|
+
import plone.api as api
|
|
12
|
+
|
|
13
|
+
import html2text
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
LOGGER = getLogger(__name__)
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
def filter_is_carried_over(obs):
|
|
20
|
+
return hasattr(obs, "carryover_from")
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
def filter_has_comments(obs):
|
|
24
|
+
return (
|
|
25
|
+
getattr(obs, "closing_comments", None)
|
|
26
|
+
or getattr(obs, "closing_deny_comments", None)
|
|
27
|
+
)
|
|
28
|
+
|
|
29
|
+
def run(_):
|
|
30
|
+
catalog = api.portal.get_tool("portal_catalog")
|
|
31
|
+
brains = catalog(portal_type="Conclusions", modified={"range": "min", "query": DateTime("2024/02/19")})
|
|
32
|
+
brains_len = len(brains)
|
|
33
|
+
a_tenth = brains_len / 10
|
|
34
|
+
conclusions = (brain.getObject() for brain in brains)
|
|
35
|
+
LOGGER.info("Found %s brains. Selecting some...", brains_len)
|
|
36
|
+
valid_conclusions = (
|
|
37
|
+
obj
|
|
38
|
+
for obj in conclusions
|
|
39
|
+
if isinstance(obj.text, RichTextValue)
|
|
40
|
+
)
|
|
41
|
+
for idx, conclusion in enumerate(valid_conclusions, start=1):
|
|
42
|
+
LOGGER.info(conclusion.absolute_url(1))
|
|
43
|
+
|
|
44
|
+
try:
|
|
45
|
+
conclusion_html = conclusion.text.output_relative_to(conclusion)
|
|
46
|
+
conclusion.text = html2text.html2text(conclusion_html, bodywidth=0)
|
|
47
|
+
except Exception:
|
|
48
|
+
LOGGER.exception("Could not update conclusion text!")
|
|
49
|
+
|
|
50
|
+
conclusion.aq_parent.reindexObject()
|
|
51
|
+
conclusion.reindexObject()
|
|
52
|
+
|
|
53
|
+
# log progress
|
|
54
|
+
if a_tenth and idx % a_tenth == 0:
|
|
55
|
+
transaction.savepoint(optimistic=True)
|
|
56
|
+
LOGGER.info("Done %s/%s.", idx, brains_len)
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
from logging import getLogger
|
|
2
|
+
|
|
3
|
+
import transaction
|
|
4
|
+
from DateTime import DateTime
|
|
5
|
+
|
|
6
|
+
import plone.api as api
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
LOGGER = getLogger(__name__)
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
def run(_):
|
|
13
|
+
catalog = api.portal.get_tool("portal_catalog")
|
|
14
|
+
brains = catalog(portal_type="Observation", modified={"range": "min", "query": DateTime("2024/02/19")})
|
|
15
|
+
|
|
16
|
+
brains_len = len(brains)
|
|
17
|
+
a_tenth = brains_len / 10
|
|
18
|
+
|
|
19
|
+
LOGGER.info("Found %s brains...", brains_len)
|
|
20
|
+
|
|
21
|
+
observations = (b.getObject() for b in brains)
|
|
22
|
+
|
|
23
|
+
for idx, observation in enumerate(observations, start=1):
|
|
24
|
+
LOGGER.info(observation.absolute_url(1))
|
|
25
|
+
|
|
26
|
+
observation.reindexObject()
|
|
27
|
+
|
|
28
|
+
# log progress
|
|
29
|
+
if a_tenth and idx % a_tenth == 0:
|
|
30
|
+
transaction.savepoint(optimistic=True)
|
|
31
|
+
LOGGER.info("Done %s/%s.", idx, brains_len)
|
|
@@ -143,7 +143,7 @@ def render_rich_text_value(context, obj):
|
|
|
143
143
|
|
|
144
144
|
def richtext2text(value, context):
|
|
145
145
|
html_value = value.output_relative_to(context)
|
|
146
|
-
output_text = html2text.html2text(html_value)
|
|
146
|
+
output_text = html2text.html2text(html_value, bodywidth=0)
|
|
147
147
|
return safe_unicode(output_text)
|
|
148
148
|
|
|
149
149
|
|
|
@@ -199,16 +199,17 @@ class Fuel(object):
|
|
|
199
199
|
@implementer(IVocabularyFactory)
|
|
200
200
|
class Highlight(object):
|
|
201
201
|
|
|
202
|
-
def __call__(self, context):
|
|
202
|
+
def __call__(self, context, voc_name=None):
|
|
203
203
|
pvoc = api.portal.get_tool('portal_vocabularies')
|
|
204
204
|
|
|
205
|
-
if
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
205
|
+
if voc_name is None:
|
|
206
|
+
if context.highlight_vocabulary:
|
|
207
|
+
voc_name = context.highlight_vocabulary
|
|
208
|
+
else:
|
|
209
|
+
voc_name = (
|
|
210
|
+
'highlight' if context.type == 'inventory'
|
|
211
|
+
else 'highlight_projection'
|
|
212
|
+
)
|
|
212
213
|
|
|
213
214
|
voc = pvoc.getVocabularyByName(voc_name)
|
|
214
215
|
if voc is None:
|