def new_colorscheme(self, title='New Scheme', description='', data=None, user=None, url=''): """Create a new ColorScheme record based on KSF data""" ksf = KSFProcessor(ksf_data=data) #title = filename[0:len(filename)-4].replace('<','').replace('>','') # Drop .ksf from the end langs = [lang for lang,value in ksf.lang_styles.items()] # Build static property values cs = ColorScheme( author = user, title = title, raw = data, extra_langs = langs, colors = ksf.get_primary_colors(), background = ksf.get_background_color().get_html_hex(), background_tone = ksf.get_background_color().get_tonality(), description = description, url = url, ) # Save to generate ID cs.put() cs.general_css = ksf.build_css(css_prefix='#cs-%s' % cs.key().id(), skip_font_size=True) # Build dynamic property values for lang in langs: prop = helpers.property_safe_name(lang) value = ksf.build_css(language=lang, css_prefix='#cs-%s' % cs.key().id(), skip_font_size=True) setattr(cs, '%s_css' % prop, db.Text(value)) cs.put() return cs
def all_css(self): css = self.general_css for lang in self.extra_langs: safe_lang = helpers.property_safe_name(lang) lang_css = getattr(self, '%s_css' % safe_lang, '') # insert lang prefix lang_css = lang_css.replace('.ksf-', '.%s .ksf-' % safe_lang) css += lang_css return css
def slug(self): return helpers.property_safe_name(self.title)