plugin_registry.register(ReadRSSFeed2x3Plugin) # *************************************************************************** # ******************************* Read RSS feed plugin ********************** # *************************************************************************** class ReadRSSFeed3x3Plugin(ReadRSSFeed2x3Plugin): """ Big read RSS feed into HTML plugin. """ uid = "read_rss_feed_3x3" name = _("Read RSS feed") plugin_registry.register(ReadRSSFeed3x3Plugin) # ************************************************************************* # ****************** Registering the widgets ****************************** # ************************************************************************* # Registering the Android widgets for Read RSS feed plugin plugin. plugin_widget_registry.register(ReadRSSFeed2x3AndroidMainWidget) plugin_widget_registry.register(ReadRSSFeed3x3AndroidMainWidget) # Registering the Windows8 widgets for Read RSS feed plugin. plugin_widget_registry.register(ReadRSSFeed2x3Windows8MainWidget)
URL dashboard plugin. """ uid = 'url_1x1' name = _("URL") group = _("URLs") form = URLForm @property def html_class(self): """ If plugin has an image, we add a class `iconic` to it. """ html_class = super(URL1x1Plugin, self).html_class if self.data.image: html_class += ' iconic-url' return html_class plugin_registry.register(URL1x1Plugin) # ************************************************************************* # ****************** Registering the widgets for URL plugin *************** # ************************************************************************* # Registering the Android widgets for URL plugin. plugin_widget_registry.register(URL1x1AndroidMainWidget) plugin_widget_registry.register(URL1x1AndroidShortcutWidget) # Registering the Windows8widgets for URL plugin. plugin_widget_registry.register(URL1x1Windows8MainWidget) plugin_widget_registry.register(URL1x1Windows8SidebarWidget)
plugin_registry.register(Video4x4Plugin) # ************************************************************************* # ******************************* Gigantic video plugin ******************* # ************************************************************************* class Video5x5Plugin(Video2x2Plugin): """ Video dashboard plugin. """ uid = 'video_5x5' name = _("Video") plugin_registry.register(Video5x5Plugin) # ************************************************************************* # ****************** Registering the widgets for Video plugin ************* # ************************************************************************* # Registering the Android widgets for Video plugin. plugin_widget_registry.register(Video2x2AndroidMainWidget) plugin_widget_registry.register(Video3x3AndroidMainWidget) plugin_widget_registry.register(Video4x4AndroidMainWidget) plugin_widget_registry.register(Video5x5AndroidMainWidget) # Registering the Windows8widgets for Video plugin. plugin_widget_registry.register(Video2x2Windows8MainWidget) plugin_widget_registry.register(Video2x2Windows8SidebarWidget)
class URLBootstrapTwo2x2Plugin(URLBootstrapTwo1x1Plugin): """ URL dashboard plugin. """ uid = 'url_bootstrap_two_2x2' plugin_registry.register(URLBootstrapTwo2x2Plugin) # ****************************************************** # ***************** Registering widgets **************** # ****************************************************** # Registering dummy plugin widgets plugin_widget_registry.register(Dummy1x1Bootstrap2FluidMainWidget) plugin_widget_registry.register(Dummy2x2Bootstrap2FluidMainWidget) # Registering image plugin widgets plugin_widget_registry.register(Image1x1Bootstrap2FluidMainWidget) plugin_widget_registry.register(Image2x2Bootstrap2FluidMainWidget) plugin_widget_registry.register(Image3x2Bootstrap2FluidMainWidget) plugin_widget_registry.register(Image3x3Bootstrap2FluidMainWidget) plugin_widget_registry.register(Image3x4Bootstrap2FluidMainWidget) plugin_widget_registry.register(Image4x4Bootstrap2FluidMainWidget) plugin_widget_registry.register(Image4x5Bootstrap2FluidMainWidget) plugin_widget_registry.register(Image5x4Bootstrap2FluidMainWidget) plugin_widget_registry.register(Image5x5Bootstrap2FluidMainWidget) # Registering memo plugin widgets plugin_widget_registry.register(Memo2x2Bootstrap2FluidMainWidget)
# ************************************************************************** class TinyMCEMemo3x3Plugin(TinyMCEMemo2x2Plugin): """ Exact copy of the memo plugin, just rendered bigger. """ uid = 'tinymce_memo_3x3' plugin_registry.register(TinyMCEMemo3x3Plugin) # ************************************************************************** # ****************** Registering the widgets ******************************* # ************************************************************************** # Registering the Android widgets for Memo plugin. plugin_widget_registry.register(Memo2x2AndroidMainWidget) plugin_widget_registry.register(Memo1x1AndroidShortcutWidget) # Registering the Android widgets for Big memo plugin. plugin_widget_registry.register(Memo3x3AndroidMainWidget) # Registering the Windows8 widgets for Big memo plugin. plugin_widget_registry.register(Memo3x3Windows8MainWidget) # Registering the Android widgets for Huge memo plugin. plugin_widget_registry.register(Memo4x5AndroidMainWidget) # Registering the Android widgets for TinyMCE memo plugin. plugin_widget_registry.register(TinyMCEMemo2x2AndroidMainWidget) # Registering the Android widgets for Big TinyMCE memo plugin.
# ************************************************************************* class Image5x5Plugin(Image1x1Plugin): """ Image5x5 dashboard plugin. """ uid = 'image_5x5' plugin_registry.register(Image5x5Plugin) # ************************************************************************* # **************** Registering the widgets for Image1x1 plugin ************ # ************************************************************************* # Registering the Android widgets for Image1x1 plugin. plugin_widget_registry.register(Image1x1AndroidMainWidget) # Registering the Android widgets for Image1x1 plugin. plugin_widget_registry.register(Image2x2AndroidMainWidget) # Registering the Android widgets for Image1x1 plugin. plugin_widget_registry.register(Image3x3AndroidMainWidget) # Registering the Android widgets for Image1x1 plugin. plugin_widget_registry.register(Image3x2AndroidMainWidget) # Registering the Android widgets for Image1x1 plugin. plugin_widget_registry.register(Image2x3AndroidMainWidget) # Registering the Windows8widgets for Image1x1 plugin. plugin_widget_registry.register(Image1x1Windows8MainWidget)
except Exception as e: pass plugin_registry.register(Weather2x2Plugin) # ******************************************************************************** # ******************************* Big weather plugin ***************************** # ******************************************************************************** class Weather3x3Plugin(Weather2x2Plugin): """ Big weather dashboard plugin. """ uid = 'weather_3x3' name = _("Weather") group = _("Weather") plugin_registry.register(Weather3x3Plugin) # ******************************************************************************** # ******************************* Registering the widgets ************************ # ******************************************************************************** # Registering the Android widgets for Weather plugin. plugin_widget_registry.register(Weather2x2AndroidMainWidget) # Registering the Android widgets for Big weather plugin. plugin_widget_registry.register(Weather3x3AndroidMainWidget)
# ************************************************************************** main_sizes = ( (2, 3), ) sidebar_sizes = ( (2, 3), ) plugin_widget_factory(BaseReadRSSFeedWidget, 'windows8', 'main', 'read_rss_feed', main_sizes) plugin_widget_factory(BaseReadRSSFeedWidget, 'windows8', 'sidebar', 'read_rss_feed', sidebar_sizes) # ************************************************************************** # ******************* Registering the widgets for URL plugin *************** # ************************************************************************** plugin_widget_registry.register(URL1x1Windows8MainWidget) plugin_widget_registry.register(URL1x1Windows8SidebarWidget) # ************************************************************************** # ***************** Registering the widgets for Video plugin *************** # ************************************************************************** main_sizes = ( (2, 2), ) sidebar_sizes = ( (2, 3), ) plugin_widget_factory(BaseVideoWidget, 'windows8', 'main', 'video', main_sizes) plugin_widget_factory(BaseVideoWidget, 'windows8', 'sidebar', 'video', sidebar_sizes)
main_sizes = ( (2, 2), (3, 3), (4, 5), (5, 5), ) plugin_widget_factory(BaseTinyMCEMemoWidget, 'bootstrap2_fluid', 'main', \ 'tinymce_memo', main_sizes) # ************************************************************************** # ******************* Registering the widgets for URL plugin *************** # ************************************************************************** # Registering URL plugin widgets plugin_widget_registry.register(URLBootstrapTwo1x1Bootstrap2FluidMainWidget) #plugin_widget_registry.register(URLBootstrapTwo2x2Bootstrap2FluidMainWidget) # ************************************************************************** # ***************** Registering the widgets for Video plugin *************** # ************************************************************************** main_sizes = ( (2, 2), (3, 3), (4, 4), (5, 5), ) plugin_widget_factory(BaseVideoWidget, 'bootstrap2_fluid', 'main', 'video', \ main_sizes)
# ************************************************************************** # ******************* Registering widgets for RSS plugin ******************* # ************************************************************************** main_sizes = ((2, 3), ) sidebar_sizes = ((2, 3), ) plugin_widget_factory(BaseReadRSSFeedWidget, 'windows8', 'main', 'read_rss_feed', main_sizes) plugin_widget_factory(BaseReadRSSFeedWidget, 'windows8', 'sidebar', 'read_rss_feed', sidebar_sizes) # ************************************************************************** # ******************* Registering the widgets for URL plugin *************** # ************************************************************************** plugin_widget_registry.register(URL1x1Windows8MainWidget) plugin_widget_registry.register(URL1x1Windows8SidebarWidget) # ************************************************************************** # ***************** Registering the widgets for Video plugin *************** # ************************************************************************** main_sizes = ((2, 2), ) sidebar_sizes = ((2, 3), ) plugin_widget_factory(BaseVideoWidget, 'windows8', 'main', 'video', main_sizes) plugin_widget_factory(BaseVideoWidget, 'windows8', 'sidebar', 'video', sidebar_sizes) # ************************************************************************** # *************** Registering the widgets for Bookmark plugin *************** # **************************************************************************
.order_by('-date_published')[:self.data.max_items] plugin_registry.register(News2x5Plugin) # *************************************************************************** # ******************************* Huge news plugin ************************** # *************************************************************************** class News4x5Plugin(BaseDashboardPlugin): """ News plugin. """ uid = 'news_4x5' name = _("News") form = NewsForm group = _("News") plugin_registry.register(News4x5Plugin) # ************************************************************************* # ****************** Registering the widgets ****************************** # ************************************************************************* # Registering the Android widgets for News plugin plugin. plugin_widget_registry.register(News2x5AndroidMainWidget) # Registering the Android widgets for Huge news plugin plugin. plugin_widget_registry.register(News4x5AndroidMainWidget)
plugin_widget_factory(BaseNewsWidget, 'android', 'main', 'news', main_sizes) # ************************************************************************** # ******************* Registering widgets for RSS plugin ******************* # ************************************************************************** main_sizes = ( (2, 3), (3, 3), ) plugin_widget_factory(BaseReadRSSFeedWidget, 'android', 'main', 'read_rss_feed', main_sizes) # ************************************************************************** # ******************* Registering the widgets for URL plugin *************** # ************************************************************************** plugin_widget_registry.register(URL1x1AndroidMainWidget) plugin_widget_registry.register(URL1x1AndroidShortcutWidget) # ************************************************************************** # ***************** Registering the widgets for Video plugin *************** # ************************************************************************** main_sizes = ( (2, 2), (3, 3), (4, 4), (5, 5), ) plugin_widget_factory(BaseVideoWidget, 'android', 'main', 'video', main_sizes) # **************************************************************************
plugin_widget_factory(BaseTinyMCEMemoWidget, 'android', 'main', 'tinymce_memo', main_sizes) # ************************************************************************** # ******************* Registering widgets for RSS plugin ******************* # ************************************************************************** main_sizes = ( (2, 3), (3, 3), ) plugin_widget_factory(BaseReadRSSFeedWidget, 'android', 'main', 'read_rss_feed', main_sizes) # ************************************************************************** # ******************* Registering the widgets for URL plugin *************** # ************************************************************************** plugin_widget_registry.register(URL1x1AndroidMainWidget) plugin_widget_registry.register(URL1x1AndroidShortcutWidget) # ************************************************************************** # ***************** Registering the widgets for Video plugin *************** # ************************************************************************** main_sizes = ( (2, 2), (3, 3), (4, 4), (5, 5), ) plugin_widget_factory(BaseVideoWidget, 'android', 'main', 'video', main_sizes) # **************************************************************************
""" (Big) dummy3x3 dashboard plugin. """ uid = 'dummy_3x3' name = _("Dummy") group = _("Dummy") plugin_registry.register(Dummy3x3Plugin) # ******************************************************************************** # ******************************* Registering the widgets ************************ # ******************************************************************************** # Registering the Android widgets for Dummy plugin. plugin_widget_registry.register(Dummy1x1AndroidMainWidget) plugin_widget_registry.register(Dummy1x1AndroidShortcutWidget) # Registering the Windows8 widgets for Dummy plugin. plugin_widget_registry.register(Dummy1x1Windows8MainWidget) plugin_widget_registry.register(Dummy1x1Windows8SidebarWidget) # Registering the Android widgets for Large dummy plugin. plugin_widget_registry.register(Dummy2x1AndroidMainWidget) # Registering the Android widgets for LargeDummy plugin. plugin_widget_registry.register(Dummy1x2AndroidMainWidget) plugin_widget_registry.register(Dummy1x2AndroidShortcutWidget) # Registering the Android widgets for Big dummy plugin. plugin_widget_registry.register(Dummy3x3AndroidMainWidget)
def plugin_widget_factory(base_class, layout_uid, placeholder_uid, plugin_uid_prefix, sizes=[]): """ Plugin widget factory. :param dash.base.BaseDashboardWidget base_class: Subclass of. :param string layout_uid: Layout UID, for which widgets are generated. :param string placeholder_uid: Placeholder UID, for which widets are generated. :param string plugin_uid_prefix: Prefix of the plugin UID. :param iterable sizes: Iterable of tuples. :example: >>> from dash.contrib.plugins.image.dash_widgets import BaseImageWidget >>> plugin_widget_factory(BaseImageWidget, 'android', 'main', 'image', zip(range(6, 10), range(6, 10))) The example above will update the plugin widget registry with the following dictionary: >>> { >>> 'android.main.image_6x6': dash.factory.Widget, >>> 'android.main.image_7x7': dash.factory.Widget, >>> 'android.main.image_8x8': dash.factory.Widget, >>> 'android.main.image_9x9': dash.factory.Widget, >>> } The generated class (one of them), would look as follows: >>> class Widget(BaseImageWidget): >>> layout_uid = 'android' >>> placeholder_uid = 'main' >>> plugin_uid = 'image_6x6' >>> cols = 6 >>> rows = 6 The ``layout_uid``, ``placeholder_uid``, ``plugin_uid``, ``cols`` and ``rows`` properties are generated automatically. """ for cols, rows in sizes: plugin_uid = "{plugin_uid_prefix}_{cols}x{rows}".format( plugin_uid_prefix = plugin_uid_prefix, cols = cols, rows = rows ) #class_name = "{plugin_uid_prefix}{cols}x{rows}{layout_uid}{placeholder_uid}Widget".format( # plugin_uid_prefix = plugin_uid_prefix.title(), # cols = cols, # rows = rows, # layout_uid = layout_uid.title(), # placeholder_uid = placeholder_uid.title() # ) class WidgetMeta(type): """ Dynamically created plugin widget meta class. """ def __new__(cls, name, bases, props): props['layout_uid'] = layout_uid props['placeholder_uid'] = placeholder_uid props['plugin_uid'] = plugin_uid props['cols'] = cols props['rows'] = rows return type.__new__(cls, name, bases, props) class Widget(with_metaclass(WidgetMeta, base_class)): """ Dynamically created widget class. """ plugin_widget_registry.register(Widget)
class Image8x1Plugin(BaseImagePlugin): """Image3x8 dashboard plugin.""" uid = 'image_8x1' plugin_registry.register(Image8x1Plugin) # ****************************************************** # ***************** Registering widgets **************** # ****************************************************** # Registering dummy plugin widgets plugin_widget_registry.register(Dummy1x1ExampleMainWidget) plugin_widget_registry.register(Dummy2x2ExampleMainWidget) plugin_widget_registry.register(Dummy1x1ExampleTopShortcutsWidget) plugin_widget_registry.register(Dummy1x1ExampleRightShortcutsWidget) plugin_widget_registry.register(Dummy2x2ExampleRightShortcutsWidget) plugin_widget_registry.register(Dummy1x1ExampleBottomShortcutsWidget) plugin_widget_registry.register(Dummy1x1ExampleLeftShortcutsWidget) plugin_widget_registry.register(Dummy2x2ExampleLeftShortcutsWidget) # Registering image plugin widgets plugin_widget_registry.register(Image1x1ExampleMainWidget) plugin_widget_registry.register(Image2x2ExampleMainWidget)
def plugin_widget_factory(base_class, layout_uid, placeholder_uid, plugin_uid_prefix, sizes=[]): """ Plugin widget factory. :param dash.base.BaseDashboardWidget base_class: Subclass of. :param string layout_uid: Layout UID, for which widgets are generated. :param string placeholder_uid: Placeholder UID, for which widets are generated. :param string plugin_uid_prefix: Prefix of the plugin UID. :param iterable sizes: Iterable of tuples. :example: >>> from dash.contrib.plugins.image.dash_widgets import BaseImageWidget >>> plugin_widget_factory(BaseImageWidget, 'android', 'main', 'image', zip(range(6, 10), range(6, 10))) The example above will update the plugin widget registry with the following dictionary: >>> { >>> 'android.main.image_6x6': dash.factory.Widget, >>> 'android.main.image_7x7': dash.factory.Widget, >>> 'android.main.image_8x8': dash.factory.Widget, >>> 'android.main.image_9x9': dash.factory.Widget, >>> } The generated class (one of them), would look as follows: >>> class Widget(BaseImageWidget): >>> layout_uid = 'android' >>> placeholder_uid = 'main' >>> plugin_uid = 'image_6x6' >>> cols = 6 >>> rows = 6 The ``layout_uid``, ``placeholder_uid``, ``plugin_uid``, ``cols`` and ``rows`` properties are generated automatically. """ for cols, rows in sizes: plugin_uid = "{plugin_uid_prefix}_{cols}x{rows}".format( plugin_uid_prefix=plugin_uid_prefix, cols=cols, rows=rows) #class_name = "{plugin_uid_prefix}{cols}x{rows}{layout_uid}{placeholder_uid}Widget".format( # plugin_uid_prefix = plugin_uid_prefix.title(), # cols = cols, # rows = rows, # layout_uid = layout_uid.title(), # placeholder_uid = placeholder_uid.title() # ) class WidgetMeta(type): """ Dynamically created plugin widget meta class. """ def __new__(cls, name, bases, props): props['layout_uid'] = layout_uid props['placeholder_uid'] = placeholder_uid props['plugin_uid'] = plugin_uid props['cols'] = cols props['rows'] = rows return type.__new__(cls, name, bases, props) class Widget(with_metaclass(WidgetMeta, base_class)): """ Dynamically created widget class. """ plugin_widget_registry.register(Widget)