def get_projector_html(): """ Returns an html-code to show on the projector. The overlay is only shown on agenda-items and not on the list-of-speakers slide. """ slide = get_active_object() if slide is None or isinstance(slide, Item): item = slide else: # TODO: If there are more the one items, use the first one in the # mptt tree that is not closed try: item = Item.objects.filter( content_type=ContentType.objects.get_for_model(slide), object_id=slide.pk)[0] except IndexError: item = None if item and get_active_slide().get('type', None) != 'list_of_speakers': list_of_speakers = item.get_list_of_speakers( old_speakers_count=config['agenda_show_last_speakers'], coming_speakers_count=5) value = render_to_string('agenda/overlay_speaker_projector.html', { 'list_of_speakers': list_of_speakers, 'closed': item.speaker_list_closed}) else: value = None return value
def get_projector_html(): """ Returns an html-code to show on the projector. The overlay is only shown on agenda-items and not on the list-of-speakers slide. """ slide = get_active_object() if slide is None or isinstance(slide, Item): item = slide else: # TODO: If there is more than one item, use the first one in the # mptt tree that is not closed. try: item = Item.objects.filter( content_type=ContentType.objects.get_for_model(slide), object_id=slide.pk)[0] except IndexError: item = None if item and get_active_slide().get('type', None) != 'list_of_speakers': list_of_speakers = item.get_list_of_speakers( old_speakers_count=config['agenda_show_last_speakers'], coming_speakers_count=5) value = render_to_string( 'agenda/overlay_speaker_projector.html', { 'list_of_speakers': list_of_speakers, 'closed': item.speaker_list_closed }) else: value = None return value
def set_elected(self, person, value=True): candidate = self.assignment_candidates.get(person=person) candidate.elected = value candidate.save() # update projector if assignment or assignmentpoll slide is active active_object = get_active_object() if (type(active_object) is type(self) and active_object.pk == self.pk) or \ (type(active_object) is AssignmentPoll and active_object.assignment_id == self.pk): update_projector()
def test_get_active_object(self): mock_Model = MagicMock() mock_Model.DoesNotExist = Exception mock_slide_model = {'mock_model': mock_Model} mock_active_slide = {'callback': 'unknown'} mock_get_active_slide = MagicMock(return_value=mock_active_slide) with patch('openslides.projector.api.get_active_slide', mock_get_active_slide): with patch('openslides.projector.api.slide_model', mock_slide_model): # test unknwon slide_callback_name self.assertIsNone(projector_api.get_active_object()) # test unknown object mock_Model.objects.get.side_effect = Exception mock_active_slide.update(callback='mock_model', pk=42) self.assertIsNone(projector_api.get_active_object()) mock_Model.objects.get.assert_called_with(pk=42) # test success mock_Model.objects.get.side_effect = None mock_Model.objects.get.return_value = 'success' self.assertEqual(projector_api.get_active_object(), 'success')
def get_item(self): """ Returns the current Item, or None, if the current Slide is not an Agenda Item. """ slide = get_active_object() if slide is None or isinstance(slide, Item): # No Slide or an agenda item is active item = slide else: # A related Item is active try: item = Item.objects.filter( content_type=ContentType.objects.get_for_model(slide), object_id=slide.pk)[0] except IndexError: item = None return item
def get_item(self): """ Returns the item of the current slide is an agenda item slide or a slide of a related model else returns None. """ slide_object = get_active_object() if slide_object is None or isinstance(slide_object, Item): item = slide_object else: # TODO: If there is more than one item, use the first one in the # mptt tree that is not closed. try: item = Item.objects.filter( content_type=ContentType.objects.get_for_model(slide_object), object_id=slide_object.pk)[0] except IndexError: item = None return item