Пример #1
0
    def ready(self):
        # Load main menu entry and widgets.
        # Do this by just importing all from these files.
        from . import main_menu, widgets  # noqa

        # Import all required stuff.
        from django.db.models.signals import post_save
        from openslides.config.signals import config_signal
        from openslides.projector.api import register_slide_model
        from openslides.utils.rest_api import router
        from .signals import setup_users_config, user_post_save
        from .views import UserViewSet

        # Load User model.
        User = self.get_model('User')

        # Connect signals.
        config_signal.connect(setup_users_config, dispatch_uid='setup_users_config')
        post_save.connect(user_post_save, sender=User, dispatch_uid='users_user_post_save')

        # Register slides.
        register_slide_model(User, 'participant/user_slide.html')

        # Register viewsets.
        router.register('users/user', UserViewSet)
Пример #2
0
    def ready(self):
        # Load main menu entry, personal info and widgets.
        # Do this by just importing all from these files.
        from . import main_menu, personal_info, widgets  # noqa

        # Import all required stuff.
        from openslides.config.signals import config_signal
        from openslides.utils.rest_api import router
        from openslides.projector.api import register_slide_model
        from .signals import create_builtin_workflows, setup_motion_config
        from .views import CategoryViewSet, MotionViewSet, WorkflowViewSet

        # Connect signals.
        config_signal.connect(setup_motion_config,
                              dispatch_uid='setup_motion_config')
        post_migrate.connect(create_builtin_workflows,
                             dispatch_uid='motion_create_builtin_workflows')

        # Register slides.
        Motion = self.get_model('Motion')
        MotionPoll = self.get_model('MotionPoll')
        register_slide_model(Motion, 'motion/slide.html')
        register_slide_model(MotionPoll, 'motion/motionpoll_slide.html')

        # Register viewsets.
        router.register('motion/category', CategoryViewSet)
        router.register('motion/motion', MotionViewSet)
        router.register('motion/workflow', WorkflowViewSet)
Пример #3
0
    def ready(self):
        # Load main menu entry and widgets.
        # Do this by just importing all from these files.
        from . import main_menu, widgets  # noqa

        # Import all required stuff.
        from django.db.models import signals
        from openslides.config.signals import config_signal
        from openslides.projector.api import register_slide_model
        from openslides.utils.autoupdate import inform_changed_data_receiver
        from openslides.utils.rest_api import router
        from .signals import setup_general_config
        from .views import CustomSlideViewSet, TagViewSet

        # Connect signals.
        config_signal.connect(setup_general_config,
                              dispatch_uid='setup_general_config')

        # Register slides.
        CustomSlide = self.get_model('CustomSlide')
        register_slide_model(CustomSlide, 'core/customslide_slide.html')

        # Register viewsets.
        router.register('core/customslide', CustomSlideViewSet)
        router.register('core/tag', TagViewSet)

        # Update data when any model of any installed app is saved or deleted.
        # TODO: Test if the m2m_changed signal is also needed.
        signals.post_save.connect(inform_changed_data_receiver,
                                  dispatch_uid='inform_changed_data_receiver')
        signals.post_delete.connect(
            inform_changed_data_receiver,
            dispatch_uid='inform_changed_data_receiver')
Пример #4
0
    def ready(self):
        # Load main menu entry, personal info and widgets.
        # Do this by just importing all from these files.
        from . import main_menu, personal_info, widgets  # noqa

        # Import all required stuff.
        from openslides.config.signals import config_signal
        from openslides.projector.api import register_slide_model
        from openslides.utils.rest_api import router
        from openslides.utils.signals import template_manipulation
        from .signals import setup_assignment_config
        from .template import add_assignment_stylesheets
        from .views import AssignmentViewSet

        # Connect signals.
        config_signal.connect(setup_assignment_config,
                              dispatch_uid='setup_assignment_config')

        # Connect template signal.
        template_manipulation.connect(
            add_assignment_stylesheets,
            dispatch_uid='add_assignment_stylesheets')

        # Register slides.
        Assignment = self.get_model('Assignment')
        AssignmentPoll = self.get_model('AssignmentPoll')
        register_slide_model(Assignment, 'assignment/slide.html')
        register_slide_model(AssignmentPoll,
                             'assignment/assignmentpoll_slide.html')

        # Register viewsets.
        router.register('assignment/assignment', AssignmentViewSet)
    def test_next_speaker_on_related_item(self):
        """
        Test to add a speaker on a related item.

        The patching of slide_callback and slide_model is needed to cleanup the
        call of register_slide_model after the test is run.
        """
        register_slide_model(RelatedItem, 'some/template.html')
        related_item = RelatedItem.objects.create()
        agenda_item = Item.objects.create(content_object=related_item)
        config['projector_active_slide'] = {'callback': 'test_related_item', 'pk': 1}
        response = self.speaker1_client.get('/agenda/list_of_speakers/add/')

        self.assertRedirects(response, '/agenda/%d/' % agenda_item.pk)
        self.assertEqual(Speaker.objects.get(item__pk=agenda_item.pk).user, self.speaker1)
        self.assertMessage(response, 'You were successfully added to the list of speakers.')
Пример #6
0
    def test_register_slide_model(self, mock_register_slide, mock_render_to_string):
        mock_SlideModel = MagicMock()
        mock_SlideModel.slide_callback_name = 'mock_callback_name'
        mock_SlideModel.DoesNotExist = Exception
        mock_slide_object = MagicMock()
        mock_slide_object.get_slide_context.return_value = 'some context'
        mock_SlideModel.objects.get.return_value = mock_slide_object

        projector_api.register_slide_model(mock_SlideModel, 'some template')
        used_args, __ = mock_register_slide.call_args
        self.assertEqual(used_args[0], 'mock_callback_name')

        # Test the generated slide function
        used_args[1](pk=1)
        mock_render_to_string.assert_called_with('some template', 'some context')

        # Test with non existing object
        mock_SlideModel.objects.get.side_effect = Exception
        self.assertRaises(projector_api.SlideError, used_args[1], pk=1)
Пример #7
0
    def test_register_slide_model(self, mock_register_slide, mock_render_to_string):
        mock_SlideModel = MagicMock()
        mock_SlideModel.slide_callback_name = 'mock_callback_name'
        mock_SlideModel.DoesNotExist = Exception
        mock_slide_object = MagicMock()
        mock_slide_object.get_slide_context.return_value = 'some context'
        mock_SlideModel.objects.get.return_value = mock_slide_object

        projector_api.register_slide_model(mock_SlideModel, 'some template')
        used_args, __ = mock_register_slide.call_args
        self.assertEqual(used_args[0], 'mock_callback_name')
        self.assertEqual(used_args[2], mock_SlideModel)

        # Test the generated slide function
        used_args[1](pk=1)
        mock_render_to_string.assert_called_with('some template', 'some context')

        # Test with non existing object
        mock_SlideModel.objects.get.side_effect = Exception
        self.assertRaises(projector_api.SlideError, used_args[1], pk=1)
    def test_next_speaker_on_related_item(self):
        """
        Test to add a speaker on a related item.

        The patching of slide_callback and slide_model is needed to cleanup the
        call of register_slide_model after the test is run.
        """
        register_slide_model(RelatedItem, 'some/template.html')
        related_item = RelatedItem.objects.create()
        agenda_item = Item.objects.create(content_object=related_item)
        config['projector_active_slide'] = {
            'callback': 'test_related_item',
            'pk': 1
        }
        response = self.speaker1_client.get('/agenda/list_of_speakers/add/')

        self.assertRedirects(response, '/agenda/%d/' % agenda_item.pk)
        self.assertEqual(
            Speaker.objects.get(item__pk=agenda_item.pk).user, self.speaker1)
        self.assertMessage(
            response, 'You were successfully added to the list of speakers.')
Пример #9
0
from openslides.projector.api import register_slide_model

from .models import Motion, MotionPoll

register_slide_model(Motion, 'motion/slide.html')
register_slide_model(MotionPoll, 'motion/motionpoll_slide.html')
Пример #10
0
from openslides.projector.api import register_slide_model

from .models import User

register_slide_model(User, 'participant/user_slide.html')
Пример #11
0
# -*- coding: utf-8 -*-

from openslides.projector.api import register_slide_model

from .models import Motion

register_slide_model(Motion, 'motion/slide.html')
Пример #12
0
from .models import Category
from .voting_system import Hoechstzahl, feed_hoechstzahls


def category_slide_list(**kwargs):
    """
    Slide to show an overview of all categories.
    """
    context = {'category_list': Category.objects.all()}
    return render_to_string('openslides_topicvoting/category_slide_list.html', context)


def result_slide(**kwargs):
    """
    Slide to show a table with all voting results. The winning topics are given too.
    """
    feed_hoechstzahls()
    result_table_and_info = Hoechstzahl.get_result_table_and_info()
    context = {'result_table': result_table_and_info['result_table'],
               'winning_topics': result_table_and_info['winning_topics'],
               'runoff_poll_warning': result_table_and_info['runoff_poll_warning'],
               'topic_post_warning': result_table_and_info['topic_post_warning'],
               'divisors': map(lambda rank: rank * 2 + 1, range(max(config['openslides_topicvoting_posts'], 3)))}
    return render_to_string('openslides_topicvoting/result_slide.html', context)


register_slide_model(Category, 'openslides_topicvoting/category_slide.html')
register_slide('topicvoting_category_list', category_slide_list)
register_slide('topicvoting_result', result_slide)
Пример #13
0
# -*- coding: utf-8 -*-

from openslides.projector.api import register_slide_model

from .models import Assignment

register_slide_model(Assignment, 'assignment/slide.html')
Пример #14
0
from openslides.projector.api import register_slide_model

from .models import Assignment, AssignmentPoll

register_slide_model(Assignment, 'assignment/slide.html')
register_slide_model(AssignmentPoll, 'assignment/assignmentpoll_slide.html')
Пример #15
0
from openslides.projector.api import register_slide_model

from .models import CustomSlide

register_slide_model(CustomSlide, 'core/customslide_slide.html')
Пример #16
0
# -*- coding: utf-8 -*-

from openslides.projector.api import register_slide_model

from .models import ProjectorSlide

register_slide_model(ProjectorSlide, 'projector/projectorslide_slide.html')