diff --git a/CHANGES.rst b/CHANGES.rst index ee9ae314e..015b1ca3e 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -15,6 +15,12 @@ Changelog empty, it was not emptying the value on new item, now it is the case except for `title` that can not be empty. [gbastien] +- Make `MeetingItem.marginalNotes` field editable by `MeetingManagers` when item + is `presented` (before it was when item was `itemfrozen`) so votes are also + editable when item is `presented` as it relies on same permission + `WriteMarginalNotes` that we should change name to a more generic name like + `WriteClosedMeetingMeetingManagersReservedFields`. + [gbastien] 4.2.13 (2024-12-06) ------------------- diff --git a/src/Products/PloneMeeting/model/PloneMeeting.zargo b/src/Products/PloneMeeting/model/PloneMeeting.zargo index 9dc5f72a4..ec1c49e71 100644 Binary files a/src/Products/PloneMeeting/model/PloneMeeting.zargo and b/src/Products/PloneMeeting/model/PloneMeeting.zargo differ diff --git a/src/Products/PloneMeeting/profiles/default/workflows/meetingitem_workflow/definition.xml b/src/Products/PloneMeeting/profiles/default/workflows/meetingitem_workflow/definition.xml index c578c94c9..9da3a7fec 100644 --- a/src/Products/PloneMeeting/profiles/default/workflows/meetingitem_workflow/definition.xml +++ b/src/Products/PloneMeeting/profiles/default/workflows/meetingitem_workflow/definition.xml @@ -357,6 +357,7 @@ Manager + MeetingManager diff --git a/src/Products/PloneMeeting/tests/testWorkflows.py b/src/Products/PloneMeeting/tests/testWorkflows.py index 2982f6e9c..491d60ede 100644 --- a/src/Products/PloneMeeting/tests/testWorkflows.py +++ b/src/Products/PloneMeeting/tests/testWorkflows.py @@ -973,26 +973,27 @@ def test_pm_ItemMarginalNotes(self): item = self.create('MeetingItem') item.setDecision(self.decisionText) # field not writeable - marginalNotesField = item.getField('marginalNotes') - self.assertFalse(marginalNotesField.writeable(item)) + marginal_notes_field = item.getField('marginalNotes') + self.assertFalse(marginal_notes_field.writeable(item)) self.assertFalse(item.mayQuickEdit('marginalNotes')) self.validateItem(item) # as MeetingManager self.changeUser('pmManager') # field not writeable - self.assertFalse(marginalNotesField.writeable(item)) + self.assertFalse(marginal_notes_field.writeable(item)) self.assertFalse(item.mayQuickEdit('marginalNotes')) + # writeable when "presented" meeting = self.create('Meeting') self.presentItem(item) self.assertEqual(item.query_state(), 'presented') - self.assertFalse(marginalNotesField.writeable(item)) - self.assertFalse(item.mayQuickEdit('marginalNotes')) + self.assertTrue(marginal_notes_field.writeable(item)) + self.assertTrue(item.mayQuickEdit('marginalNotes')) # writeable when meeting frozen self.freezeMeeting(meeting) self.assertEqual(item.query_state(), 'itemfrozen') - self.assertTrue(marginalNotesField.writeable(item)) + self.assertTrue(marginal_notes_field.writeable(item)) self.assertTrue(item.mayQuickEdit('marginalNotes')) # as other fields obsField = item.getField('observations') @@ -1003,7 +1004,7 @@ def test_pm_ItemMarginalNotes(self): self.closeMeeting(meeting) self.assertEqual(meeting.query_state(), 'closed') self.assertEqual(item.query_state(), 'accepted') - self.assertTrue(marginalNotesField.writeable(item)) + self.assertTrue(marginal_notes_field.writeable(item)) self.assertTrue(item.mayQuickEdit('marginalNotes')) # but not other fields self.assertFalse(obsField.writeable(item))