Skip to content

Commit

Permalink
Added parameters the_objects=False and by_signature_number to `ge…
Browse files Browse the repository at this point in the history
…t_default_signatories`.
  • Loading branch information
gbastien committed Jan 9, 2025
1 parent 460aeba commit f566dbd
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 2 deletions.
2 changes: 2 additions & 0 deletions CHANGES.rst
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@ Changelog
`_get_default_signatories` to `get_default_signatories` and
`_get_default_voters` to `_get_default_voters` and added it to `safe_utils`
so it may be used in restricted python code.
Added parameters `the_objects=False` and `by_signature_number`
to `get_default_signatories`.
[gbastien]
- Added parameter `signatories={}` to `BaseDGHV.print_signatories_by_position`
to be able to pass a dict of arbitrary held positions to render as signatures.
Expand Down
8 changes: 6 additions & 2 deletions src/Products/PloneMeeting/browser/meeting.py
Original file line number Diff line number Diff line change
Expand Up @@ -275,15 +275,19 @@ def get_default_attendees(cfg):
return res


def get_default_signatories(cfg):
def get_default_signatories(cfg, the_objects=False, by_signature_number=False):
'''The default signatories are the active held_positions
with a defined signature_number.'''
res = {}
if "signatories" in cfg.getUsedMeetingAttributes():
signers = [held_pos for held_pos in get_all_usable_held_positions(cfg)
if held_pos.defaults and 'present' in
held_pos.defaults and held_pos.signature_number]
res = {signer.UID(): signer.signature_number for signer in signers}
res = {signer if the_objects else signer.UID():
signer.signature_number for signer in signers}
if by_signature_number:
# keys are values, values are keys
res = {v: k for k, v in res.items()}
return res


Expand Down
16 changes: 16 additions & 0 deletions src/Products/PloneMeeting/tests/testMeeting.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
from Products.Five import zcml
from Products.PloneMeeting.adapters import CAN_NOT_DELETE_MEETING_ERROR
from Products.PloneMeeting.browser.meeting import get_default_attendees
from Products.PloneMeeting.browser.meeting import get_default_signatories
from Products.PloneMeeting.config import DEFAULT_LIST_TYPES
from Products.PloneMeeting.config import ITEM_NO_PREFERRED_MEETING_VALUE
from Products.PloneMeeting.config import MEETINGMANAGERS_GROUP_SUFFIX
Expand Down Expand Up @@ -3700,6 +3701,21 @@ def test_pm_Validate_attendees_invariant(self):
self.assertEqual(len(errors), 1)
self.assertEqual(errors[0].message, error_msg)

def test_pm_get_default_signatories(self):
"""Returns default signatories, can return uids,
held_position objects and by signature number or not."""
cfg = self.meetingConfig
self.changeUser('pmManager')
self.assertEqual(get_default_signatories(cfg), {})
self.assertEqual(get_default_signatories(cfg, the_objects=True), {})
self.assertEqual(get_default_signatories(cfg, by_signature_number=True), {})
self._setUpOrderedContacts()
self.assertEqual(get_default_signatories(cfg),
{self.hp1_uid: '1', self.hp4_uid: '2'})
self.assertEqual(
get_default_signatories(cfg, the_objects=True, by_signature_number=True),
{'1': self.hp1, '2': self.hp4})

def test_pm_Votes_observations(self):
"""Fields Meeting.votes_observations and MeetingItem.votesObservations
are only viewable to everybody when meeting/item is decided."""
Expand Down

0 comments on commit f566dbd

Please sign in to comment.