emrt.necd.content 2.5.48__zip → 2.5.50__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.48 → emrt.necd.content-2.5.50}/PKG-INFO +11 -1
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/docs/HISTORY.txt +10 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/browser/carryover.py +48 -1
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/browser/templates/carryover.pt +7 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/conclusions.py +3 -5
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/profiles/default/metadata.xml +1 -1
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/reviewfolder.py +40 -6
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/templates/observationview.pt +1 -1
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/upgrades/configure.zcml +12 -0
- emrt.necd.content-2.5.50/emrt/necd/content/upgrades/evolve2550.py +56 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/utils.py +1 -1
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/vocabularies.py +9 -8
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt.necd.content.egg-info/PKG-INFO +11 -1
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt.necd.content.egg-info/SOURCES.txt +1 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/setup.py +1 -1
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/.editorconfig +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/.gitignore +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/MANIFEST.in +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/Makefile +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/README.txt +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/bootstrap.py +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/build_manylinux.sh +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/buildout.cfg +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/docs/INSTALL.txt +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/docs/LICENSE.GPL +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/docs/LICENSE.txt +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/__init__.py +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/__init__.py +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/INTEGRATION.txt +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/__init__.py +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/adapters/__init__.py +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/adapters/configure.zcml +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/adapters/reference_number.py +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/browser/__init__.py +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/browser/attachmentdownload.py +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/browser/bulk_update.py +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/browser/comments.py +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/browser/configure.zcml +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/browser/copyfiles.py +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/browser/flatten_json.so +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/browser/get_sample_xls.py +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/browser/interfaces.py +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/browser/macros.py +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/browser/observation_import.py +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/browser/reminder.py +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/browser/statechange.py +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/browser/statisticsview.py +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/browser/tableau.py +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/browser/templates/assign_answerer_form.pt +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/browser/templates/assign_conclusion_reviewer_form.pt +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/browser/templates/assign_counterpart_form.pt +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/browser/templates/bulk_update.pt +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/browser/templates/finalisedfolderview.pt +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/browser/templates/import_observation.pt +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/browser/templates/inboxreviewfolderview.pt +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/browser/templates/macros.pt +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/browser/templates/multi_input.pt +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/browser/templates/reminder.pt +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/browser/templates/reminder_default_content.pt +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/browser/templates/reviewfolder_get_table.pt +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/browser/templates/reviewfolderview.pt +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/browser/templates/statisticsview.pt +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/browser/templates/tableau_connector.pt +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/browser/templates/tableau_dashboard.pt +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/browser/xls_utils.py +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/comment.py +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/commentanswer.py +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/commentextender.py +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/configure.zcml +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/constants.py +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/converter.py +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/crons.py +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/forms/__init__.py +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/forms/configure.zcml +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/forms/redraft.py +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/inbox_sections.py +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/indexers.py +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/locales/README.txt +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/necdfile.py +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/nfr_code_matching.py +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/notifications/__init__.py +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/notifications/answer_acknowledged.pt +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/notifications/answer_acknowledged.py +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/notifications/answer_to_msexperts.pt +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/notifications/answer_to_msexperts.py +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/notifications/comment_added.py +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/notifications/comment_added.zcml +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/notifications/comment_to_msa.pt +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/notifications/comment_to_mse.pt +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/notifications/conclusion_to_comment.pt +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/notifications/conclusion_to_comment.py +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/notifications/configure.zcml +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/notifications/new_comment.pt +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/notifications/observation_finalisation_denied.pt +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/notifications/observation_finalisation_denied.py +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/notifications/observation_finalisation_request.pt +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/notifications/observation_finalisation_request.py +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/notifications/observation_finalised.pt +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/notifications/observation_finalised.py +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/notifications/observation_finalised_rev_msg.pt +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/notifications/observation_recalled.py +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/notifications/observation_recalled.zcml +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/notifications/observation_recalled_closed_msa.pt +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/notifications/observation_recalled_closed_se.pt +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/notifications/observation_recalled_denied_se.pt +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/notifications/question_answered.py +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/notifications/question_answered_lr_msg.pt +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/notifications/question_answered_msexperts_msg.pt +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/notifications/question_answered_rev_msg.pt +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/notifications/question_ready_for_approval.pt +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/notifications/question_ready_for_approval.py +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/notifications/question_redraft.pt +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/notifications/question_redraft.py +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/notifications/question_redraft.zcml +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/notifications/question_to_counterpart.pt +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/notifications/question_to_counterpart.py +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/notifications/question_to_ms.pt +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/notifications/question_to_ms.py +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/notifications/question_to_ms_rev_msg.pt +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/notifications/utils.py +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/observation.py +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/overrides.zcml +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/patches.py +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/patches.zcml +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/permissions.zcml +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/profiles/default/catalog.xml +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/profiles/default/cssregistry.xml +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/profiles/default/diff_tool.xml +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/profiles/default/emrt.necd.content_various.txt +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/profiles/default/jsregistry.xml +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/profiles/default/ldap_plugin.xml +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/profiles/default/necdvocabularies/conclusion_reasons.csv +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/profiles/default/necdvocabularies/eea_member_states.csv +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/profiles/default/necdvocabularies/fuel.csv +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/profiles/default/necdvocabularies/ghg_source_category.csv +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/profiles/default/necdvocabularies/ghg_source_sectors.csv +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/profiles/default/necdvocabularies/highlight.csv +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/profiles/default/necdvocabularies/highlight_2024_onwards.csv +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/profiles/default/necdvocabularies/highlight_projection.csv +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/profiles/default/necdvocabularies/parameter.csv +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/profiles/default/necdvocabularies/pollutants.csv +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/profiles/default/necdvocabularies/scenario_type.csv +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/profiles/default/registry.xml +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/profiles/default/rolemap.xml +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/profiles/default/sharing.xml +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/profiles/default/tinymce.xml +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/profiles/default/types/Comment.xml +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/profiles/default/types/CommentAnswer.xml +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/profiles/default/types/Conclusions.xml +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/profiles/default/types/Folder.xml +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/profiles/default/types/NECDFile.xml +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/profiles/default/types/Observation.xml +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/profiles/default/types/Question.xml +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/profiles/default/types/ReviewFolder.xml +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/profiles/default/types.xml +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/profiles/default/workflows/esd-answer-workflow/definition.xml +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/profiles/default/workflows/esd-comment-workflow/definition.xml +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/profiles/default/workflows/esd-conclusion-workflow/definition.xml +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/profiles/default/workflows/esd-file-workflow/definition.xml +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/profiles/default/workflows/esd-question-review-workflow/definition.xml +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/profiles/default/workflows/esd-review-workflow/definition.xml +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/profiles/default/workflows/esd-reviewtool-folder-workflow/definition.xml +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/profiles/default/workflows.xml +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/profiles.zcml +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/question.py +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/roles/__init__.py +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/roles/configure.zcml +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/roles/localroles.py +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/roles/localrolesubscriber.py +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/setuphandlers.py +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/static/chosen-sprite.png +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/static/chosen-sprite@2x.png +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/static/chosen.jquery.js +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/static/chosen.min.css +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/static/cookies.js +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/static/eea-tabs.css +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/static/eea-tabs.js +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/static/emrt.necd.content.css +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/static/flags.css +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/static/flags.png +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/static/inbox_view.css +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/static/inbox_view.js +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/static/moment.min.js +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/static/phase-1.png +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/static/phase-12.png +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/static/phase-2.png +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/static/tableauwdc-2.3.1.min.js +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/static/tableauwdc-2.3.latest.min.js +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/subscribers.py +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/subscriptionconfiguration.py +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/subscriptions/__init__.py +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/subscriptions/configure.zcml +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/subscriptions/dexterity.py +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/subscriptions/interfaces.py +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/templates/conclusion_layout.pt +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/templates/diffedview.pt +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/templates/macro_qa_chat.pt +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/templates/subscriptionconfiguration.pt +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/templates/subscriptionconfigurationreview.pt +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/templates/widget_activity.pt +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/templates/widget_activity_type.pt +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/templates/widget_highlight.pt +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/templates/widget_pollutants.pt +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/tests.py +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/timeit.py +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/transform_html_to_docx.py +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/upgrades/__init__.py +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/upgrades/evolve2010.py +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/upgrades/evolve2015.py +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/upgrades/evolve2016.py +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/upgrades/evolve2022.py +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/upgrades/evolve2024.py +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/upgrades/evolve2025.py +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/upgrades/evolve2029.py +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/upgrades/evolve2032.py +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/upgrades/evolve2037.py +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/upgrades/evolve2038.py +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/upgrades/evolve2042.py +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/upgrades/evolve2044.py +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/upgrades/evolve2045.py +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/upgrades/evolve205.py +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/upgrades/evolve206.py +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/upgrades/evolve207.py +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/upgrades/evolve2201.py +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/upgrades/evolve230.py +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/upgrades/evolve235.py +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/upgrades/evolve236.py +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/upgrades/evolve237.py +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/upgrades/evolve240.py +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/upgrades/evolve243.py +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/upgrades/evolve252.py +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/upgrades/evolve2524.py +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/upgrades/evolve2537.py +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/upgrades/evolve2538.py +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/upgrades/evolve2540.py +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/upgrades/evolve2542.py +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/upgrades/evolve258.py +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/upgrades/portal_workflow.py +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/upgrades/templates/portal_workflow_apply_and_reindex.pt +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/utilities/__init__.py +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/utilities/configure.zcml +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/utilities/interfaces.py +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/utilities/ldap_utils.py +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/utilities/ldap_wrapper.py +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/utilities/ms_user.py +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/utilities/question.py +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/utilities/roles.py +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/views.zcml +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/vocabularies.zcml +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt.necd.content.egg-info/dependency_links.txt +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt.necd.content.egg-info/entry_points.txt +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt.necd.content.egg-info/namespace_packages.txt +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt.necd.content.egg-info/not-zip-safe +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt.necd.content.egg-info/requires.txt +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt.necd.content.egg-info/top_level.txt +0 -0
- {emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 1.1
|
|
2
2
|
Name: emrt.necd.content
|
|
3
|
-
Version: 2.5.
|
|
3
|
+
Version: 2.5.50
|
|
4
4
|
Summary: Content-types for EMRT-NECD Review Tool
|
|
5
5
|
Home-page: https://github.com/eea/emrt.necd.content/
|
|
6
6
|
Author: Mikel Larreategi
|
|
@@ -15,6 +15,16 @@ Description: Introduction
|
|
|
15
15
|
Changelog
|
|
16
16
|
=========
|
|
17
17
|
|
|
18
|
+
2.5.50 (2024-04-30)
|
|
19
|
+
|
|
20
|
+
- Task #260973 - Add formatting
|
|
21
|
+
- Task #260971 - Review if flags need updating/ all are still relevant
|
|
22
|
+
- Bug #269439 - Error when editing conclusion text
|
|
23
|
+
|
|
24
|
+
2.5.49 (2024-04-25)
|
|
25
|
+
|
|
26
|
+
- Task #260971 - Add "Description flags" to carryover
|
|
27
|
+
|
|
18
28
|
2.5.48 (2024-04-11)
|
|
19
29
|
|
|
20
30
|
- Feature #260968 - Reminder button: allow user / country selection
|
|
@@ -1,6 +1,16 @@
|
|
|
1
1
|
Changelog
|
|
2
2
|
=========
|
|
3
3
|
|
|
4
|
+
2.5.50 (2024-04-30)
|
|
5
|
+
|
|
6
|
+
- Task #260973 - Add formatting
|
|
7
|
+
- Task #260971 - Review if flags need updating/ all are still relevant
|
|
8
|
+
- Bug #269439 - Error when editing conclusion text
|
|
9
|
+
|
|
10
|
+
2.5.49 (2024-04-25)
|
|
11
|
+
|
|
12
|
+
- Task #260971 - Add "Description flags" to carryover
|
|
13
|
+
|
|
4
14
|
2.5.48 (2024-04-11)
|
|
5
15
|
|
|
6
16
|
- Feature #260968 - Reminder button: allow user / country selection
|
{emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/browser/carryover.py
RENAMED
|
@@ -50,6 +50,14 @@ def get_vocabulary_values(context, name):
|
|
|
50
50
|
except:
|
|
51
51
|
return []
|
|
52
52
|
|
|
53
|
+
def get_vocabulary_titles(context, name):
|
|
54
|
+
try:
|
|
55
|
+
factory = getUtility(IVocabularyFactory, name)
|
|
56
|
+
vocabulary = factory(context)
|
|
57
|
+
return [x.title for x in vocabulary.by_value.values()]
|
|
58
|
+
except:
|
|
59
|
+
return []
|
|
60
|
+
|
|
53
61
|
|
|
54
62
|
def read_int(value):
|
|
55
63
|
result = 0
|
|
@@ -100,6 +108,7 @@ EXTRA_FIELDS = (
|
|
|
100
108
|
("year", read_inventory_year),
|
|
101
109
|
("nfr_code", read_unicode),
|
|
102
110
|
("pollutants", read_list),
|
|
111
|
+
("highlight", read_list),
|
|
103
112
|
)
|
|
104
113
|
|
|
105
114
|
EXTRA_FIELDS_PROJECTION = (
|
|
@@ -108,6 +117,31 @@ EXTRA_FIELDS_PROJECTION = (
|
|
|
108
117
|
("year", read_projection_year),
|
|
109
118
|
("nfr_code", read_unicode),
|
|
110
119
|
("pollutants", read_list),
|
|
120
|
+
("highlight", read_list),
|
|
121
|
+
)
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
def transform_title_to_vocabulary_value(vocab_name):
|
|
125
|
+
def context_aware(context):
|
|
126
|
+
factory = getUtility(IVocabularyFactory, vocab_name)
|
|
127
|
+
vocabulary = factory(context)
|
|
128
|
+
title_to_value = dict([(v.title, k) for k, v in vocabulary.by_value.items()])
|
|
129
|
+
def vocab_aware(title):
|
|
130
|
+
return title_to_value.get(title, title)
|
|
131
|
+
return vocab_aware
|
|
132
|
+
return context_aware
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
def transform_higlight_value_from_title(context):
|
|
136
|
+
context_aware = transform_title_to_vocabulary_value("emrt.necd.content.highlight")
|
|
137
|
+
vocab_aware = context_aware(context)
|
|
138
|
+
def title_list_to_values(titles):
|
|
139
|
+
return [vocab_aware(title) for title in titles]
|
|
140
|
+
return title_list_to_values
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
TRANSFORM_EXTRA_FIELDS = (
|
|
144
|
+
("highlight", transform_higlight_value_from_title),
|
|
111
145
|
)
|
|
112
146
|
|
|
113
147
|
|
|
@@ -255,11 +289,20 @@ def read_extra_fields(row, row_nr, start_at, context):
|
|
|
255
289
|
if context.type == "projection"
|
|
256
290
|
else EXTRA_FIELDS
|
|
257
291
|
)
|
|
292
|
+
transform_extra_fields = {
|
|
293
|
+
fname: transform(context)
|
|
294
|
+
for fname, transform
|
|
295
|
+
in TRANSFORM_EXTRA_FIELDS
|
|
296
|
+
}
|
|
258
297
|
result = dict()
|
|
259
298
|
for idx, (fname, reader) in enumerate(extra_fields):
|
|
260
299
|
col_idx = start_at + idx
|
|
261
300
|
try:
|
|
262
|
-
|
|
301
|
+
read_value = reader(_read_col(row, col_idx))
|
|
302
|
+
if fname in transform_extra_fields:
|
|
303
|
+
result[fname] = transform_extra_fields[fname](read_value)
|
|
304
|
+
else:
|
|
305
|
+
result[fname] = read_value
|
|
263
306
|
except IndexError:
|
|
264
307
|
msg = "Cannot read field {} on column {}, row {}.".format(
|
|
265
308
|
fname, col_idx + 1, row_nr
|
|
@@ -332,9 +375,13 @@ class CarryOverView(BrowserView):
|
|
|
332
375
|
values_for_nfr_code = get_vocabulary_values(
|
|
333
376
|
self.context, "emrt.necd.content.nfr_code"
|
|
334
377
|
)
|
|
378
|
+
titles_for_highlight = get_vocabulary_titles(
|
|
379
|
+
self.context, "emrt.necd.content.highlight"
|
|
380
|
+
)
|
|
335
381
|
return self.index(
|
|
336
382
|
values_for_nfr_code=u", ".join(values_for_nfr_code),
|
|
337
383
|
values_for_pollutants=u", ".join(values_for_pollutants),
|
|
384
|
+
titles_for_highlight=u", ".join(titles_for_highlight),
|
|
338
385
|
is_projection=self.context.type == "projection",
|
|
339
386
|
)
|
|
340
387
|
|
|
@@ -36,6 +36,7 @@
|
|
|
36
36
|
<th tal:condition="is_projection">Projection year</th>
|
|
37
37
|
<th>NFR Code</th>
|
|
38
38
|
<th>Pollutants</th>
|
|
39
|
+
<th>Description flags</th>
|
|
39
40
|
</tr>
|
|
40
41
|
</thead>
|
|
41
42
|
<tbody><tr>
|
|
@@ -48,6 +49,7 @@
|
|
|
48
49
|
<td tal:condition="is_projection">2025<br />2030<br />2040<br />2050</td>
|
|
49
50
|
<td>1A2d</td>
|
|
50
51
|
<td>PCBs<br />HCB<br />SO2</td>
|
|
52
|
+
<td>Adjustment<br />Revised Estimate</td>
|
|
51
53
|
</tr></tbody>
|
|
52
54
|
</table>
|
|
53
55
|
|
|
@@ -66,6 +68,7 @@
|
|
|
66
68
|
<li tal:condition="is_projection">Field: Projection year (list) - multiple values, separated by newline. Valid values: 2025, 2030, 2040, 2050</li>
|
|
67
69
|
<li>Field: NFR category code (string) - single value.</li>
|
|
68
70
|
<li>Field: Pollutants (list) - multiple values, separated by newline.</li>
|
|
71
|
+
<li>Field: Description flags (list) - multiple values, separated by newline.</li>
|
|
69
72
|
</ul>
|
|
70
73
|
If provided, the conclusion text will replace the existing conclusion text.
|
|
71
74
|
</p>
|
|
@@ -82,6 +85,7 @@
|
|
|
82
85
|
<th tal:condition="is_projection">Projection year</th>
|
|
83
86
|
<th>NFR Code</th>
|
|
84
87
|
<th>Pollutants</th>
|
|
88
|
+
<th>Description flags</th>
|
|
85
89
|
</tr>
|
|
86
90
|
</thead>
|
|
87
91
|
<tbody><tr>
|
|
@@ -95,6 +99,7 @@
|
|
|
95
99
|
<td tal:condition="is_projection">2025<br />2030<br />2040<br />2050</td>
|
|
96
100
|
<td>1A2d</td>
|
|
97
101
|
<td>PCBs<br />HCB<br />SO2</td>
|
|
102
|
+
<td>Adjustment<br />Revised Estimate</td>
|
|
98
103
|
</tr></tbody>
|
|
99
104
|
</table>
|
|
100
105
|
|
|
@@ -107,6 +112,8 @@
|
|
|
107
112
|
<dd>${python:options.get('values_for_nfr_code')}</dd>
|
|
108
113
|
<dt>Pollutants</dt>
|
|
109
114
|
<dd>${python:options.get('values_for_pollutants')}</dd>
|
|
115
|
+
<dt>Description flags</dt>
|
|
116
|
+
<dd>${python:options.get('titles_for_highlight')}</dd>
|
|
110
117
|
</dl>
|
|
111
118
|
</div>
|
|
112
119
|
|
|
@@ -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
|
|
@@ -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
|
|
{emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/templates/observationview.pt
RENAMED
|
@@ -376,7 +376,7 @@
|
|
|
376
376
|
<span class="eea-icon eea-icon-lg wfRole"><!-- --></span>
|
|
377
377
|
<span tal:content="item/role"></span><br/>
|
|
378
378
|
<a
|
|
379
|
-
tal:attributes="href python:'http://www.eionet.europa.eu/directory/user?uid='+item['actor']"
|
|
379
|
+
tal:attributes="href python:'http://www.eionet.europa.eu/directory/user?uid=' + (item['actor'] or '')"
|
|
380
380
|
tal:content="item/author"></a>
|
|
381
381
|
<br/>
|
|
382
382
|
<span
|
{emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/upgrades/configure.zcml
RENAMED
|
@@ -810,5 +810,17 @@
|
|
|
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>
|
|
813
825
|
|
|
814
826
|
</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)
|
|
@@ -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:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 1.1
|
|
2
2
|
Name: emrt.necd.content
|
|
3
|
-
Version: 2.5.
|
|
3
|
+
Version: 2.5.50
|
|
4
4
|
Summary: Content-types for EMRT-NECD Review Tool
|
|
5
5
|
Home-page: https://github.com/eea/emrt.necd.content/
|
|
6
6
|
Author: Mikel Larreategi
|
|
@@ -15,6 +15,16 @@ Description: Introduction
|
|
|
15
15
|
Changelog
|
|
16
16
|
=========
|
|
17
17
|
|
|
18
|
+
2.5.50 (2024-04-30)
|
|
19
|
+
|
|
20
|
+
- Task #260973 - Add formatting
|
|
21
|
+
- Task #260971 - Review if flags need updating/ all are still relevant
|
|
22
|
+
- Bug #269439 - Error when editing conclusion text
|
|
23
|
+
|
|
24
|
+
2.5.49 (2024-04-25)
|
|
25
|
+
|
|
26
|
+
- Task #260971 - Add "Description flags" to carryover
|
|
27
|
+
|
|
18
28
|
2.5.48 (2024-04-11)
|
|
19
29
|
|
|
20
30
|
- Feature #260968 - Reminder button: allow user / country selection
|
{emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt.necd.content.egg-info/SOURCES.txt
RENAMED
|
@@ -241,6 +241,7 @@ emrt/necd/content/upgrades/evolve2537.py
|
|
|
241
241
|
emrt/necd/content/upgrades/evolve2538.py
|
|
242
242
|
emrt/necd/content/upgrades/evolve2540.py
|
|
243
243
|
emrt/necd/content/upgrades/evolve2542.py
|
|
244
|
+
emrt/necd/content/upgrades/evolve2550.py
|
|
244
245
|
emrt/necd/content/upgrades/evolve258.py
|
|
245
246
|
emrt/necd/content/upgrades/portal_workflow.py
|
|
246
247
|
emrt/necd/content/upgrades/templates/portal_workflow_apply_and_reindex.pt
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/adapters/__init__.py
RENAMED
|
File without changes
|
{emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/adapters/configure.zcml
RENAMED
|
File without changes
|
{emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/adapters/reference_number.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/browser/bulk_update.py
RENAMED
|
File without changes
|
|
File without changes
|
{emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/browser/configure.zcml
RENAMED
|
File without changes
|
{emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/browser/copyfiles.py
RENAMED
|
File without changes
|
{emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/browser/flatten_json.so
RENAMED
|
File without changes
|
{emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/browser/get_sample_xls.py
RENAMED
|
File without changes
|
{emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/browser/interfaces.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/browser/statechange.py
RENAMED
|
File without changes
|
{emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/browser/statisticsview.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/browser/templates/macros.pt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/browser/xls_utils.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{emrt.necd.content-2.5.48 → emrt.necd.content-2.5.50}/emrt/necd/content/forms/configure.zcml
RENAMED
|
File without changes
|
|
File without changes
|