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)
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)
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')
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.')
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)
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.')
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')
from openslides.projector.api import register_slide_model from .models import User register_slide_model(User, 'participant/user_slide.html')
# -*- coding: utf-8 -*- from openslides.projector.api import register_slide_model from .models import Motion register_slide_model(Motion, 'motion/slide.html')
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)
# -*- coding: utf-8 -*- from openslides.projector.api import register_slide_model from .models import Assignment register_slide_model(Assignment, 'assignment/slide.html')
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')
from openslides.projector.api import register_slide_model from .models import CustomSlide register_slide_model(CustomSlide, 'core/customslide_slide.html')
# -*- coding: utf-8 -*- from openslides.projector.api import register_slide_model from .models import ProjectorSlide register_slide_model(ProjectorSlide, 'projector/projectorslide_slide.html')