Review: Needs Fixing

Traceback (most recent call last):
  File 
"/home/tim/Projects/OpenLP/openlp/click-slide-to-go-live-from-blank/openlp/core/ui/slidecontroller.py",
 line 1401, in on_preview_double_click
    elif not Registry().get_flag('has doubleclick added item to service') is 
True:
  File 
"/home/tim/Projects/OpenLP/openlp/click-slide-to-go-live-from-blank/openlp/core/common/registry.py",
 line 160, in get_flag
    raise KeyError('Working Flag {key} not found in list'.format(key=key))
KeyError: 'Working Flag has doubleclick added item to service not found in list'

Blank live and double click on a preview slide.

Diff comments:

> 
> === modified file 'openlp/core/lib/mediamanageritem.py'
> --- openlp/core/lib/mediamanageritem.py       2016-05-17 13:15:53 +0000
> +++ openlp/core/lib/mediamanageritem.py       2016-07-16 15:46:57 +0000
> @@ -488,6 +488,8 @@
>                                                          'You must select one 
> or more items to preview.'))
>          else:
>              log.debug('%s Preview requested' % self.plugin.name)
> +            # Reset the flag for: "has doubleclick added item to service" to 
> False.
> +            Registry().set_flag('has doubleclick added item to service', 
> False)

comment superfluous (not needed)

>              service_item = self.build_service_item()
>              if service_item:
>                  service_item.from_plugin = True
> 
> === modified file 'openlp/core/ui/slidecontroller.py'
> --- openlp/core/ui/slidecontroller.py 2016-05-20 16:22:06 +0000
> +++ openlp/core/ui/slidecontroller.py 2016-07-16 15:46:57 +0000
> @@ -797,12 +798,18 @@
>  
>      def replace_service_manager_item(self, item):
>          """
> -        Replacement item following a remote edit
> +        Replacement item following a remote edit.
> +        This action  also takes place when a song that is sent to live from 
> Service Manager is edited.
> +        If display is blanked, it will get unblanked if automatic unblanking 
> is enabled. We prevent this from happening

Comments are to help but you do not need to write pseudo code next to the real 
code.

> +        by setting a flag to "True" and then to "False" after the processing 
> is done.
> +        The flag is also set to "False" on startup so display may be 
> unblanked properly.
>  
>          :param item: The current service item
>          """
>          if item == self.service_item:
> +            Registry().set_flag('replace service manager item', True)
>              self._process_item(item, 
> self.preview_widget.current_slide_number())
> +            Registry().set_flag('replace service manager item', False)
>  
>      def add_service_manager_item(self, item, slide_no):
>          """
> @@ -971,9 +978,12 @@
>  
>      def on_slide_unblank(self):
>          """
> -        Handle the slidecontroller unblank event
> +        Handle the slidecontroller unblank event.
> +        If we are re-processing service item, don't unblank the display
> +        (Found in def replace_service_manager_item)

Not needed

>          """
> -        self.on_blank_display(False)
> +        if not Registry().get_flag('replace service manager item') is True:
> +            self.on_blank_display(False)
>  
>      def on_blank_display(self, checked=None):
>          """
> @@ -1104,6 +1114,14 @@
>                  self.log_debug('Could not get lock in slide_selected after 
> waiting %f, skip to avoid deadlock.'
>                                 % timeout)
>              return
> +        # If "click live slide to unblank" is enabled, unblank the display. 
> And start = Item is sent to Live.
> +        # Note: If this if statement is placed at the bottom of this 
> function instead of top slide transitions are lost.
> +        if self.is_live and Settings().value('core/click live slide to 
> unblank'):
> +            # With this display stays blanked when "auto unblank" setting is 
> not enabled and new item is sent to Live.
> +            if not Settings().value('core/auto unblank') and start:
> +                ()

??????

> +            if not start:
> +                Registry().execute('slidecontroller_live_unblank')
>          row = self.preview_widget.current_slide_number()
>          old_selected_row = self.selected_row
>          self.selected_row = 0
> 
> === modified file 'tests/functional/openlp_core_ui/test_slidecontroller.py'
> --- tests/functional/openlp_core_ui/test_slidecontroller.py   2016-06-01 
> 21:42:54 +0000
> +++ tests/functional/openlp_core_ui/test_slidecontroller.py   2016-07-16 
> 15:46:57 +0000
> @@ -713,6 +713,54 @@
>              slide_controller.theme_screen, slide_controller.blank_screen
>          ])
>  
> +    @patch('openlp.core.ui.slidecontroller.Settings')
> +    def on_preview_double_click_unblank_display_test(self, MockedSettings):
> +        # GIVEN: A slide controller, actions needed, settins set to True.
> +        slide_controller = SlideController(None)
> +        mocked_settings = MagicMock()
> +        mocked_settings.return_value = True
> +        MockedSettings.return_value = mocked_settings
> +        slide_controller.service_item = MagicMock()
> +        slide_controller.service_item.is_media = MagicMock()
> +        slide_controller.on_media_close = MagicMock()
> +        slide_controller.on_go_live = MagicMock()
> +        slide_controller.on_preview_add_to_service = MagicMock()
> +        slide_controller.media_reset = MagicMock()
> +        Registry.create()
> +        reg_value = True

Why do we need reg_value.  just set to true in the call

> +        Registry().set_flag('has doubleclick added item to service', 
> reg_value)
> +
> +        # WHEN: on_preview_double_click is called
> +        slide_controller.on_preview_double_click()
> +
> +        # THEN: The call to addActions should be correct
> +        self.assertEqual(1, slide_controller.on_go_live.call_count, 
> 'on_go_live should have been called once.')
> +        self.assertEqual(0, 
> slide_controller.on_preview_add_to_service.call_count, 'Should have not been 
> called.')
> +
> +    @patch('openlp.core.ui.slidecontroller.Settings')
> +    def on_preview_double_click_add_to_service_test(self, MockedSettings):
> +        # GIVEN: A slide controller, actions needed, settins set to False.
> +        slide_controller = SlideController(None)
> +        mocked_settings = MagicMock()
> +        mocked_settings.value.return_value = False
> +        MockedSettings.return_value = mocked_settings
> +        slide_controller.service_item = MagicMock()
> +        slide_controller.service_item.is_media = MagicMock()
> +        slide_controller.on_media_close = MagicMock()
> +        slide_controller.on_go_live = MagicMock()
> +        slide_controller.on_preview_add_to_service = MagicMock()
> +        slide_controller.media_reset = MagicMock()
> +        Registry.create()
> +        reg_value = False
> +        Registry().set_flag('has doubleclick added item to service', 
> reg_value)
> +
> +        # WHEN: on_preview_double_click is called
> +        slide_controller.on_preview_double_click()
> +
> +        # THEN: The call to addActions should be correct
> +        self.assertEqual(0, slide_controller.on_go_live.call_count, 
> 'on_go_live Should have not been called.')
> +        self.assertEqual(1, 
> slide_controller.on_preview_add_to_service.call_count, 'Should have been 
> called once.')
> +
>      @patch(u'openlp.core.ui.slidecontroller.SlideController.image_manager')
>      @patch(u'PyQt5.QtCore.QTimer.singleShot')
>      def test_update_preview_live(self, mocked_singleShot, 
> mocked_image_manager):


-- 
https://code.launchpad.net/~suutari-olli/openlp/click-slide-to-go-live-from-blank/+merge/300257
Your team OpenLP Core is subscribed to branch lp:openlp.

_______________________________________________
Mailing list: https://launchpad.net/~openlp-core
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~openlp-core
More help   : https://help.launchpad.net/ListHelp

Reply via email to