Exemple #1
0
    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
Exemple #2
0
    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
Exemple #3
0
 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()
Exemple #4
0
    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')
Exemple #5
0
    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')
Exemple #6
0
    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
Exemple #7
0
 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
Exemple #8
0
    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