Module presalytics.lib.themes.ooxml
Expand source code Browse git
import typing
import presalytics
import presalytics.client.auth
import presalytics.story.components
import presalytics.story.outline
import presalytics.story.util
import presalytics.client.presalytics_ooxml_automation.models
class OoxmlTheme(presalytics.story.components.ThemeBase):
"""
TODO: Review whether this class is obsolete
"""
name: str
ooxml_id: str
plugin_config: typing.Dict
always_refresh: bool
__component_kind__ = 'ooxml-theme'
def __init__(self,
name,
ooxml_theme_id,
plugin_config=None,
always_refresh=False,
client_info={},
**kwargs):
super(OoxmlTheme, self).__init__(**kwargs)
self.name = name
self.ooxml_id = ooxml_theme_id
self.always_refresh = always_refresh
self.client_kwargs = client_info
if not plugin_config or self.always_refresh:
if not plugin_config:
self.plugin_config = {}
self.get_configuration()
def get_configuration(self):
client = presalytics.Client(**self.client_kwargs)
theme = client.ooxml_automation.theme_themes_details_get_id(self.ooxml_id)
extra_params = ['dateCreated', 'dateModified', 'userCreated', 'userModified', 'id', 'themeId']
colors = {k: v for k, v in theme.colors.to_dict().items() if k not in extra_params}
fonts = {k: v for k, v in theme.fonts.to_dict().items() if k not in extra_params}
slide_details = client.ooxml_automation.slides_slides_details_get_id(theme.slide_id)
color_map_dict = slide_details.slide_master.to_dict()["color_map"]
color_types = client.ooxml_automation.shared_colortypes_get()
mapped_colors = {
"background1": self.map_color_type("background1", color_map_dict, colors, color_types),
"background2": self.map_color_type("background2", color_map_dict, colors, color_types),
"text1": self.map_color_type("text1", color_map_dict, colors, color_types),
"text2": self.map_color_type("text2", color_map_dict, colors, color_types)
}
color_params = {k: v for k, v in colors.items() if k not in extra_params}
color_params.update(mapped_colors)
params = {k: v for k, v in color_params.items() if k not in extra_params}
params.update(fonts)
self.plugin_config = params
def map_color_type(
self,
color_map_name: str,
color_map: typing.Dict,
theme_colors: typing.Dict,
color_types_list=None) -> str:
if not color_types_list:
client = presalytics.Client(**self.client_kwargs)
color_types_list = client.ooxml_automation.shared_colortypes_get()
color_id = color_map[color_map_name]
color_name = next(x.name for x in color_types_list if x.type_id == color_id)
key = color_name[0].lower() + color_name[1:]
color = theme_colors.get(key, None)
return color
def serialize(self):
plugin = presalytics.story.outline.Plugin(
kind='style',
name='ooxml-theme',
config=self.plugin_config
)
data = {
"ooxml_theme_id": self.ooxml_id,
"always_refresh": self.always_refresh,
}
theme = presalytics.story.outline.Theme(
kind=self.__component_kind__,
name=self.name,
data=data,
plugins=[plugin]
)
return theme
@classmethod
def deseriailize(cls, component, **kwargs):
plugin_config = component.plugins[0].config
return cls(
name=component.name,
ooxml_theme_id=component.data["ooxml_theme_id"],
plugin_config=plugin_config,
always_refresh=component.data["always_refresh"],
**kwargs
)
Classes
class OoxmlTheme (name, ooxml_theme_id, plugin_config=None, always_refresh=False, client_info={}, **kwargs)
-
TODO: Review whether this class is obsolete
Expand source code Browse git
class OoxmlTheme(presalytics.story.components.ThemeBase): """ TODO: Review whether this class is obsolete """ name: str ooxml_id: str plugin_config: typing.Dict always_refresh: bool __component_kind__ = 'ooxml-theme' def __init__(self, name, ooxml_theme_id, plugin_config=None, always_refresh=False, client_info={}, **kwargs): super(OoxmlTheme, self).__init__(**kwargs) self.name = name self.ooxml_id = ooxml_theme_id self.always_refresh = always_refresh self.client_kwargs = client_info if not plugin_config or self.always_refresh: if not plugin_config: self.plugin_config = {} self.get_configuration() def get_configuration(self): client = presalytics.Client(**self.client_kwargs) theme = client.ooxml_automation.theme_themes_details_get_id(self.ooxml_id) extra_params = ['dateCreated', 'dateModified', 'userCreated', 'userModified', 'id', 'themeId'] colors = {k: v for k, v in theme.colors.to_dict().items() if k not in extra_params} fonts = {k: v for k, v in theme.fonts.to_dict().items() if k not in extra_params} slide_details = client.ooxml_automation.slides_slides_details_get_id(theme.slide_id) color_map_dict = slide_details.slide_master.to_dict()["color_map"] color_types = client.ooxml_automation.shared_colortypes_get() mapped_colors = { "background1": self.map_color_type("background1", color_map_dict, colors, color_types), "background2": self.map_color_type("background2", color_map_dict, colors, color_types), "text1": self.map_color_type("text1", color_map_dict, colors, color_types), "text2": self.map_color_type("text2", color_map_dict, colors, color_types) } color_params = {k: v for k, v in colors.items() if k not in extra_params} color_params.update(mapped_colors) params = {k: v for k, v in color_params.items() if k not in extra_params} params.update(fonts) self.plugin_config = params def map_color_type( self, color_map_name: str, color_map: typing.Dict, theme_colors: typing.Dict, color_types_list=None) -> str: if not color_types_list: client = presalytics.Client(**self.client_kwargs) color_types_list = client.ooxml_automation.shared_colortypes_get() color_id = color_map[color_map_name] color_name = next(x.name for x in color_types_list if x.type_id == color_id) key = color_name[0].lower() + color_name[1:] color = theme_colors.get(key, None) return color def serialize(self): plugin = presalytics.story.outline.Plugin( kind='style', name='ooxml-theme', config=self.plugin_config ) data = { "ooxml_theme_id": self.ooxml_id, "always_refresh": self.always_refresh, } theme = presalytics.story.outline.Theme( kind=self.__component_kind__, name=self.name, data=data, plugins=[plugin] ) return theme @classmethod def deseriailize(cls, component, **kwargs): plugin_config = component.plugins[0].config return cls( name=component.name, ooxml_theme_id=component.data["ooxml_theme_id"], plugin_config=plugin_config, always_refresh=component.data["always_refresh"], **kwargs )
Ancestors
- ThemeBase
- ComponentBase
- abc.ABC
Static methods
def deseriailize(component, **kwargs)
-
Expand source code Browse git
@classmethod def deseriailize(cls, component, **kwargs): plugin_config = component.plugins[0].config return cls( name=component.name, ooxml_theme_id=component.data["ooxml_theme_id"], plugin_config=plugin_config, always_refresh=component.data["always_refresh"], **kwargs )
Methods
def get_configuration(self)
-
Expand source code Browse git
def get_configuration(self): client = presalytics.Client(**self.client_kwargs) theme = client.ooxml_automation.theme_themes_details_get_id(self.ooxml_id) extra_params = ['dateCreated', 'dateModified', 'userCreated', 'userModified', 'id', 'themeId'] colors = {k: v for k, v in theme.colors.to_dict().items() if k not in extra_params} fonts = {k: v for k, v in theme.fonts.to_dict().items() if k not in extra_params} slide_details = client.ooxml_automation.slides_slides_details_get_id(theme.slide_id) color_map_dict = slide_details.slide_master.to_dict()["color_map"] color_types = client.ooxml_automation.shared_colortypes_get() mapped_colors = { "background1": self.map_color_type("background1", color_map_dict, colors, color_types), "background2": self.map_color_type("background2", color_map_dict, colors, color_types), "text1": self.map_color_type("text1", color_map_dict, colors, color_types), "text2": self.map_color_type("text2", color_map_dict, colors, color_types) } color_params = {k: v for k, v in colors.items() if k not in extra_params} color_params.update(mapped_colors) params = {k: v for k, v in color_params.items() if k not in extra_params} params.update(fonts) self.plugin_config = params
def map_color_type(self, color_map_name, color_map, theme_colors, color_types_list=None)
-
Expand source code Browse git
def map_color_type( self, color_map_name: str, color_map: typing.Dict, theme_colors: typing.Dict, color_types_list=None) -> str: if not color_types_list: client = presalytics.Client(**self.client_kwargs) color_types_list = client.ooxml_automation.shared_colortypes_get() color_id = color_map[color_map_name] color_name = next(x.name for x in color_types_list if x.type_id == color_id) key = color_name[0].lower() + color_name[1:] color = theme_colors.get(key, None) return color
Inherited members