def setUp(self): # Enable debug mode always to ensure cache is disabled by default Globals.DevelopmentMode = True self.settings = getUtility(IRegistry).forInterface(IThemeSettings) self.settings.enabled = True createThemeFromTemplate(title="linked", description="Generated from test") test_theme_name = createThemeFromTemplate( title="rapidotest", description="Generated from test") theme = getTheme(test_theme_name) applyTheme(theme) import transaction transaction.commit() self.portal = self.layer['portal'] package_dir_path = os.path.join(test_dir_path, 'other') dir = FilesystemResourceDirectory(package_dir_path) provideUtility(dir, provides=IResourceDirectory, name=u'++theme++other') self.browser = Browser(self.layer['app']) self.browser.handleErrors = False
def base_test(self, cor): """Teste base dos temas.""" theme = getTheme(cor) applyTheme(theme) self.settings.enabled = True transaction.commit() self.browser.open(self.portal.absolute_url()) # Testa se a âncora para o conteúdo aparece. self.assertIn( '<a name="acontent" id="acontent" class="anchor">', self.browser.contents, ) # Testa se a âncora para o menu aparece. self.assertIn( '<a name="anavigation" id="anavigation" class="anchor">', self.browser.contents, ) # Testa se o input para a busca aparece. self.assertIn( 'name="SearchableText"', self.browser.contents, ) # Testa se a âncora para o rodapé aparece. self.assertIn( '<a name="afooter" id="afooter" class="anchor">', self.browser.contents, )
def test_getAvailableThemes(self): from plone.app.theming.utils import getAvailableThemes from plone.app.theming.utils import getTheme themes = getAvailableThemes() self.assertTrue(len(themes) >= 3) theme = getTheme('plone.app.theming.tests') self.assertTrue(theme is not None) self.assertEqual(theme.__name__, 'plone.app.theming.tests') self.assertEqual(theme.title, 'Test theme') self.assertEqual(theme.description, 'A theme for testing') self.assertEqual( theme.rules, '/++theme++plone.app.theming.tests/rules.xml' ) self.assertEqual( theme.absolutePrefix, '/++theme++plone.app.theming.tests' ) self.assertEqual( theme.parameterExpressions, {'foo': "python:request.get('bar')"} ) self.assertEqual(theme.doctype, "<!DOCTYPE html>")
def test_availableTheme(self): from plone.app.theming.utils import getTheme theme = getTheme('plonetheme.unam') self.assertTrue(theme is not None) self.assertEqual(theme.__name__, 'plonetheme.unam') self.assertEqual(theme.title, 'Theme UNAM')
def test_theme_enabled_resource_directory(self): app = self.layer['app'] portal = self.layer['portal'] self.settings.enabled = True theme = getTheme('plone.app.theming.tests') applyTheme(theme) self.assertEqual(self.settings.rules, u'/++theme++plone.app.theming.tests/rules.xml') self.assertEqual(self.settings.currentTheme, u"plone.app.theming.tests") self.assertEqual(self.settings.doctype, u"<!DOCTYPE html>") import transaction; transaction.commit() browser = Browser(app) browser.open(portal.absolute_url()) # Title - pulled in with rules.xml self.assertTrue(portal.title in browser.contents) # Elsewhere - not pulled in self.assertFalse("Accessibility" in browser.contents) # The theme self.assertTrue("This is the theme" in browser.contents) # Doctype self.assertTrue(re.match("<!DOCTYPE html>\s+<html", browser.contents))
def base_test(self, cor): """Teste base dos temas""" theme = getTheme(cor) applyTheme(theme) self.settings.enabled = True import transaction transaction.commit() # Testa se elementos do dashboard aparecem. self.browser.open('{0}/dashboard'.format(self.portal.absolute_url())) self.assertIn('id="kssPortalMessage"', self.browser.contents) self.assertIn('dashboard</h1>', self.browser.contents) # Testa se elementos da 'Informação Pessoal' aparecem. self.browser.open('{0}/@@user-information?userid=admin'.format( self.portal.absolute_url())) self.assertIn('id="kssPortalMessage"', self. browser.contents) self.assertIn('Change your personal information', self.browser.contents) # Testa se elementos da 'Preferências Pessoais' aparecem. self.browser.open('{0}/@@user-preferences?userid=admin'.format( self.portal.absolute_url())) self.assertIn('id="kssPortalMessage"', self.browser.contents) self.assertIn('Your personal settings', self.browser.contents)
def test_theme_enabled_resource_directory(self): app = self.layer['app'] portal = self.layer['portal'] self.settings.enabled = True theme = getTheme('plone.app.theming.tests') applyTheme(theme) self.assertEqual(self.settings.rules, u'/++theme++plone.app.theming.tests/rules.xml') self.assertEqual(self.settings.currentTheme, u"plone.app.theming.tests") self.assertEqual(self.settings.doctype, u"<!DOCTYPE html>") import transaction transaction.commit() browser = Browser(app) browser.open(portal.absolute_url()) # Title - pulled in with rules.xml self.assertTrue(portal.title in browser.contents) # Elsewhere - not pulled in self.assertFalse("Accessibility" in browser.contents) # The theme self.assertTrue("This is the theme" in browser.contents) # Doctype self.assertTrue(re.match("<!DOCTYPE html>\s+<html", browser.contents))
def base_test(self, cor): """Teste base dos temas""" theme = getTheme(cor) applyTheme(theme) self.settings.enabled = True import transaction transaction.commit() # Testa se elementos do dashboard aparecem. self.browser.open('{0}/dashboard'.format(self.portal.absolute_url())) self.assertIn('id="kssPortalMessage"', self.browser.contents) self.assertIn('dashboard</h1>', self.browser.contents) # Testa se elementos da 'Informação Pessoal' aparecem. self.browser.open('{0}/@@user-information?userid=admin'.format( self.portal.absolute_url())) self.assertIn('id="kssPortalMessage"', self.browser.contents) self.assertIn('Change your personal information', self.browser.contents) # Testa se elementos da 'Preferências Pessoais' aparecem. self.browser.open('{0}/@@user-preferences?userid=admin'.format( self.portal.absolute_url())) self.assertIn('id="kssPortalMessage"', self.browser.contents) self.assertIn('Your personal settings', self.browser.contents)
def test_tema_disponivel(self): theme = getTheme('TemaRROnline') self.assertTrue(theme is not None) self.assertEqual(theme.__name__, 'TemaRROnline') self.assertEqual(theme.title, 'Tema RROnline') self.assertEqual(theme.rules, '/++theme++TemaRROnline/rules.xml') self.assertEqual(theme.absolutePrefix, '/++theme++TemaRROnline') self.assertEqual(theme.doctype, '<!DOCTYPE html>')
def test_tema_capa(self): theme = getTheme('capa') applyTheme(theme) self.settings.enabled = True import transaction transaction.commit() browser = Browser(self.layer['app']) browser.open(self.portal.absolute_url())
def test_tema_original_disponivel(self): theme = getTheme('Original') self.assertTrue(theme is not None) self.assertEqual(theme.__name__, 'Original') self.assertEqual(theme.title, 'Tema Original') self.assertEqual(theme.description, 'Tema Original do Portal Modelo') self.assertEqual(theme.rules, '/++theme++Original/rules.xml') self.assertEqual(theme.absolutePrefix, '/++theme++Original') self.assertEqual(theme.doctype, "<!DOCTYPE html>")
def test_tema_Kiwi_disponivel(self): theme = getTheme('Kiwi') self.assertTrue(theme is not None) self.assertEqual(theme.__name__, 'Kiwi') self.assertEqual(theme.title, 'Tema Kiwi') self.assertEqual(theme.description, 'Tema Kiwi para o Portal Modelo') self.assertEqual(theme.rules, '/++theme++Kiwi/rules.xml') self.assertEqual(theme.absolutePrefix, '/++theme++Kiwi') self.assertEqual(theme.doctype, "<!DOCTYPE html>")
def test_tema_capa_disponivel(self): theme = getTheme('capa') self.assertTrue(theme is not None) self.assertEqual(theme.__name__, 'capa') self.assertEqual(theme.title, 'Tema Capa') self.assertEqual(theme.description, 'Tema para site Capa') self.assertEqual(theme.rules, '/++theme++capa/rules.xml') self.assertEqual(theme.absolutePrefix, '/++theme++capa') self.assertEqual(theme.doctype, '<!DOCTYPE html>')
def test_tema_azul_disponivel(self): theme = getTheme('azul') self.assertTrue(theme is not None) self.assertEqual(theme.__name__, 'azul') self.assertEqual(theme.title, 'Portal Padrão - Tema Azul') self.assertEqual(theme.description, 'Tema para Portal Padrão do Governo Federal') self.assertEqual(theme.rules, '/++theme++azul/rules.xml') self.assertEqual(theme.absolutePrefix, '/++theme++azul') self.assertEqual(theme.doctype, "<!DOCTYPE html>")
def test_tema_branco_disponivel(self): theme = getTheme('branco') self.assertIsNotNone(theme) self.assertEqual(theme.__name__, 'branco') self.assertEqual(theme.title, 'Portal Padrão - Tema Branco') self.assertEqual(theme.description, 'Tema para Portal Padrão do Governo Federal') self.assertEqual(theme.rules, '/++theme++branco/rules.xml') self.assertEqual(theme.absolutePrefix, '/++theme++branco') self.assertEqual(theme.doctype, '<!DOCTYPE html>')
def get_theme(self): """Managing the theme cache is a plone.app.theming policy decision. Moved out out Products.CMFPlone.""" cache = self.getCache() themeObj = cache.themeObj if not themeObj: theme = self.getCurrentTheme() themeObj = utils.getTheme(theme) self.set_theme(theme, themeObj) return themeObj
def test_tema_idg_rosa_disponivel(self): theme = getTheme('IDG-rosa') self.assertTrue(theme is not None) self.assertEqual(theme.__name__, 'IDG-rosa') self.assertEqual(theme.title, 'IDG - Tema Rosa') self.assertEqual(theme.description, 'Tema outubro rosa para o Portal Modelo, baseado na Identidade Digital do Governo') self.assertEqual(theme.rules, '/++theme++IDG-rosa/rules.xml') self.assertEqual(theme.absolutePrefix, '/++theme++IDG-rosa') self.assertEqual(theme.doctype, "<!DOCTYPE html>")
def test_diazo_theme_installed(self): theme = getTheme('destaques-cinza') self.assertTrue(theme is not None) self.assertEqual(theme.__name__, 'destaques-cinza') self.assertEqual(theme.title, 'Página de Destaque - Tema Cinza') self.assertEqual(theme.description, 'Tema para Página de Destaque do Portal Padrão') self.assertEqual(theme.rules, '/++theme++destaques-cinza/rules.xml') self.assertEqual(theme.absolutePrefix, '/++theme++destaques-cinza') self.assertEqual(theme.doctype, '<!DOCTYPE html>')
def test_tema_apucarana_disponivel(self): theme = getTheme('Apucarana') self.assertTrue(theme is not None) self.assertEqual(theme.__name__, 'Apucarana') self.assertEqual(theme.title, 'Tema Apucarana') self.assertEqual(theme.description, 'Tema Apucarana para o Portal Modelo, inspirado pela Câmara Municipal de Apucarana') self.assertEqual(theme.rules, '/++theme++Apucarana/rules.xml') self.assertEqual(theme.absolutePrefix, '/++theme++Apucarana') self.assertEqual(theme.doctype, "<!DOCTYPE html>")
def test_tema_idg_azul_11_disponivel(self): theme = getTheme('IDG-azul-11') self.assertTrue(theme is not None) self.assertEqual(theme.__name__, 'IDG-azul-11') self.assertEqual(theme.title, 'IDG - Tema Novembro Azul') self.assertEqual(theme.description, 'Tema novembro azul para o Portal Modelo, baseado na Identidade Digital do Governo') self.assertEqual(theme.rules, '/++theme++IDG-azul-11/rules.xml') self.assertEqual(theme.absolutePrefix, '/++theme++IDG-azul-11') self.assertEqual(theme.doctype, "<!DOCTYPE html>")
def test_tema_Gelo_disponivel(self): theme = getTheme('Gelo') self.assertTrue(theme is not None) self.assertEqual(theme.__name__, 'Gelo') self.assertEqual(theme.title, 'Tema Gelo') self.assertEqual(theme.description, 'Tema Gelo para o Portal Modelo') self.assertEqual(theme.rules, '/++theme++Gelo/rules.xml') self.assertEqual(theme.absolutePrefix, '/++theme++Gelo') self.assertEqual(theme.doctype, "<!DOCTYPE html>")
def test_tema_verde_disponivel(self): theme = getTheme('verde') self.assertTrue(theme is not None) self.assertEqual(theme.__name__, 'verde') self.assertEqual(theme.title, 'Portal Modelo - Tema Verde') self.assertEqual(theme.description, 'Tema para Portal Modelo do Governo Federal') self.assertEqual(theme.rules, '/++theme++verde/rules.xml') self.assertEqual(theme.absolutePrefix, '/++theme++verde') self.assertEqual(theme.doctype, "<!DOCTYPE html>")
def get_theme(self): # Volatile attribute to cache the current theme if hasattr(self.portal, '_v_currentTheme'): themeObj = self.portal._v_currentTheme else: theme = getCurrentTheme() themeObj = getTheme(theme) self.portal._v_currentTheme = themeObj cache = component.queryUtility(ram.IRAMCache) if isThemeEnabled(self.request): themeObj = cache.query('plone.currentTheme', key=dict(prefix='theme'), default=None) if themeObj is None: theme = getCurrentTheme() themeObj = getTheme(theme) cache.set(themeObj, 'plone.currentTheme', key=dict(prefix='theme')) return themeObj
def portal_logo_tema_test(self, cor): """Testa se o portal logo está presente em todos os temas.""" adapter = self.adapter adapter.site_title_1 = u'Portal' adapter.site_title_2 = u'Brasil' theme = getTheme(cor) applyTheme(theme) self.browser.open(self.portal.absolute_url()) self.assertIn('<div id="portal-title"', self.browser.contents)
def base_test(self, cor): """Teste base dos temas""" theme = getTheme(cor) applyTheme(theme) self.settings.enabled = True import transaction transaction.commit() self.browser.open(self.portal.absolute_url()) self.assertIn( '<div id="footer-brasil" class="footer-logos"></div>', self.browser.contents )
def get_cooked_bundles(self): """ Get the cooked bundles """ cache = component.queryUtility(ram.IRAMCache) bundles = self.get_bundles() # Check if its Diazo enabled if isThemeEnabled(self.request): theme = getCurrentTheme() themeObj = getTheme(theme) enabled_diazo_bundles = themeObj.enabled_bundles disabled_diazo_bundles = themeObj.disabled_bundles if hasattr(themeObj, 'production_css'): self.diazo_production_css = themeObj.production_css self.diazo_development_css = themeObj.development_css self.diazo_development_js = themeObj.development_js self.diazo_production_js = themeObj.production_js else: self.diazo_production_css = None self.diazo_development_css = None self.diazo_development_js = None self.diazo_production_js = None else: enabled_diazo_bundles = [] disabled_diazo_bundles = [] self.diazo_production_css = None self.diazo_development_css = None self.diazo_development_js = None self.diazo_production_js = None for key, bundle in bundles.items(): # The diazo manifest is more important than the disabled bundle on registry # We can access the site with diazo.off=1 without diazo bundles if (bundle.enabled or key in enabled_diazo_bundles) and (key not in disabled_diazo_bundles): # check expression if bundle.expression: cooked_expression = None if cache is not None: cooked_expression = cache.query( 'plone.bundles.cooked_expressions', key=dict(prefix=bundle.__prefix__), default=None) if ( cooked_expression is None or cooked_expression.text != bundle.expression): cooked_expression = Expression(bundle.expression) if cache is not None: cache.set( cooked_expression, 'plone.bundles.cooked_expressions', key=dict(prefix=bundle.__prefix__)) if not self.evaluateExpression( cooked_expression, self.context): continue yield key, bundle
def test_tema_idg_rosa_disponivel(self): theme = getTheme('IDG-rosa') self.assertTrue(theme is not None) self.assertEqual(theme.__name__, 'IDG-rosa') self.assertEqual(theme.title, 'IDG - Tema Rosa') self.assertEqual( theme.description, 'Tema outubro rosa para o Portal Modelo, baseado na Identidade Digital do Governo' ) self.assertEqual(theme.rules, '/++theme++IDG-rosa/rules.xml') self.assertEqual(theme.absolutePrefix, '/++theme++IDG-rosa') self.assertEqual(theme.doctype, "<!DOCTYPE html>")
def test_diazo_theme_installed(self): theme = getTheme('destaques-cinza') self.assertTrue(theme is not None) self.assertEqual(theme.__name__, 'destaques-cinza') self.assertEqual(theme.title, 'Página de Destaque - Tema Cinza') self.assertEqual( theme.description, 'Tema para Página de Destaque do Portal Padrão' ) self.assertEqual(theme.rules, '/++theme++destaques-cinza/rules.xml') self.assertEqual(theme.absolutePrefix, '/++theme++destaques-cinza') self.assertEqual(theme.doctype, '<!DOCTYPE html>')
def test_default_theme(self): from plone.app.theming.utils import getTheme theme = getTheme('Default') self.assertIsNotNone(theme) self.assertEqual(theme.title, 'Tema Padrão SMDU') self.assertEqual( theme.description, 'Tema Diazo padrão para uso no projeto SMDU Portal.', ) self.assertEqual(theme.absolutePrefix, '/++theme++Default') self.assertEqual(theme.rules, '/++theme++Default/rules.xml') self.assertEqual(theme.doctype, '<!DOCTYPE html>')
def base_test(self, cor): """Teste base dos temas""" theme = getTheme(cor) applyTheme(theme) self.settings.enabled = True import transaction transaction.commit() self.browser.open(self.portal.absolute_url()) self.assertIn( '<div id="footer-brasil" class="footer-logos"></div>', self.browser.contents, )
def test_tema_idg_azul_11_disponivel(self): theme = getTheme('IDG-azul-11') self.assertTrue(theme is not None) self.assertEqual(theme.__name__, 'IDG-azul-11') self.assertEqual(theme.title, 'IDG - Tema Novembro Azul') self.assertEqual( theme.description, 'Tema novembro azul para o Portal Modelo, baseado na Identidade Digital do Governo' ) self.assertEqual(theme.rules, '/++theme++IDG-azul-11/rules.xml') self.assertEqual(theme.absolutePrefix, '/++theme++IDG-azul-11') self.assertEqual(theme.doctype, "<!DOCTYPE html>")
def test_tema_apucarana_disponivel(self): theme = getTheme('Apucarana') self.assertTrue(theme is not None) self.assertEqual(theme.__name__, 'Apucarana') self.assertEqual(theme.title, 'Tema Apucarana') self.assertEqual( theme.description, 'Tema Apucarana para o Portal Modelo, inspirado pela Câmara Municipal de Apucarana' ) self.assertEqual(theme.rules, '/++theme++Apucarana/rules.xml') self.assertEqual(theme.absolutePrefix, '/++theme++Apucarana') self.assertEqual(theme.doctype, "<!DOCTYPE html>")
def test_reload_in_dev_mode_filesystem(self): app = self.layer['app'] portal = self.layer['portal'] Globals.DevelopmentMode = True self.settings.enabled = True theme = getTheme('plone.app.theming.tests') applyTheme(theme) self.assertEqual(self.settings.rules, u'/++theme++plone.app.theming.tests/rules.xml') self.assertEqual(self.settings.currentTheme, u"plone.app.theming.tests") self.assertEqual(self.settings.doctype, u"<!DOCTYPE html>") import transaction; transaction.commit() browser = Browser(app) browser.open(portal.absolute_url()) # Doctype self.assertTrue(re.match("<!DOCTYPE html>\s+<html", browser.contents)) # Now switch some setting: the doctype self.settings.doctype = "<!DOCTYPE xhtml>" transaction.commit() browser.open(portal.absolute_url()) # Doctype self.assertTrue(re.match("<!DOCTYPE xhtml>\s+<html", browser.contents)) # Now change a file on the filesystem: fname = portal.restrictedTraverse(str(self.settings.rules)).path from shutil import copyfile try: # Copy the 'otherrules.xml' file to the 'rules.xml' src = fname.replace('resources/', '/other') copyfile(fname, fname + '.bkp') copyfile(src, fname) browser.open(portal.absolute_url()) # The theme self.assertTrue("This is the other theme" in browser.contents) finally: copyfile(fname + '.bkp', fname) os.remove(fname + '.bkp') browser.open(portal.absolute_url()) # Test for the test: has the rules file been restored ? self.assertTrue("This is the theme" in browser.contents)
def setUp(self): # Enable debug mode always to ensure cache is disabled by default Globals.DevelopmentMode = True self.settings = getUtility(IRegistry).forInterface(IThemeSettings) self.settings.enabled = True theme = getTheme('rapido.plone.tests') applyTheme(theme) import transaction transaction.commit() self.portal = self.layer['portal']
def get_theme(self): # Volatile attribute to cache the current theme if hasattr(self.portal, '_v_currentTheme'): themeObj = self.portal._v_currentTheme else: theme = getCurrentTheme() themeObj = getTheme(theme) self.portal._v_currentTheme = themeObj cache = component.queryUtility(ram.IRAMCache) if isThemeEnabled(self.request): themeObj = cache.query( 'plone.currentTheme', key=dict(prefix='theme'), default=None) if themeObj is None: theme = getCurrentTheme() themeObj = getTheme(theme) cache.set( themeObj, 'plone.currentTheme', key=dict(prefix='theme')) return themeObj
def test_tema_azul(self): theme = getTheme('azul') applyTheme(theme) self.settings.enabled = True import transaction transaction.commit() browser = Browser(self.layer['app']) browser.open(self.portal.absolute_url()) # Acesso a Informacao deve estar disponivel self.assertIn("acesso-a-infornacao.png", browser.contents) # Removido logo do governo federal self.assertIn("brasil.png", browser.contents)
def base_test(self, cor): """Teste base dos temas""" theme = getTheme(cor) applyTheme(theme) self.settings.enabled = True import transaction transaction.commit() self.browser.open(self.portal.absolute_url()) # Acesso a Informacao deve estar disponivel self.assertIn("acesso-a-infornacao.png", self.browser.contents) # Removido logo do governo federal self.assertIn("brasil.png", self.browser.contents)
def setUp(self): # Enable debug mode always to ensure cache is disabled by default Globals.DevelopmentMode = True self.settings = getUtility(IRegistry).forInterface(IThemeSettings) self.settings.enabled = True theme = getTheme('rapido.extensions.tests') applyTheme(theme) import transaction transaction.commit() self.portal = self.layer['portal'] self.request = self.layer['request'] setRoles(self.portal, TEST_USER_ID, ['Manager'])
def setUp(self): # Enable debug mode always to ensure cache is disabled by default Globals.DevelopmentMode = True self.settings = getUtility(IRegistry).forInterface(IThemeSettings) self.settings.enabled = True theme = getTheme('rapido.plone.tests') applyTheme(theme) import transaction transaction.commit() self.portal = self.layer['portal'] setRoles(self.portal, TEST_USER_ID, ['Manager']) self.browser = Browser(self.layer['app']) self.browser.handleErrors = False
def getFrame(self): theme_name = self.context.__name__ theme = None if self.context.isFile(MANIFEST_FILENAME): manifest = self.context.openFile(MANIFEST_FILENAME) theme = getManifest(manifest, MANIFEST_FORMAT, None) theme['name'] = theme_name manifest.close() theme = getTheme(theme_name, theme) if theme.rules and theme.rules.endswith('.xml'): return super(ThemeMapper, self).getFrame() # we're assuming it is a castle type theme self.request.environ[theming.OVERRIDE_ENVIRON_KEY] = theme_name response = subrequest('/', root=api.portal.get()) result = response.getBody() return result
def setUp(self): # Enable debug mode always to ensure cache is disabled by default Globals.DevelopmentMode = True self.settings = getUtility(IRegistry).forInterface(IThemeSettings) self.settings.enabled = True theme = getTheme('rapido.plone.tests') applyTheme(theme) import transaction transaction.commit() self.portal = self.layer['portal'] package_dir_path = os.path.join(test_dir_path, 'other') dir = FilesystemResourceDirectory(package_dir_path) provideUtility( dir, provides=IResourceDirectory, name=u'++theme++other')
def setUp(self): # Enable debug mode always to ensure cache is disabled by default Globals.DevelopmentMode = True self.settings = getUtility(IRegistry).forInterface(IThemeSettings) self.settings.enabled = True theme = getTheme('rapido.extensions.tests') applyTheme(theme) import transaction transaction.commit() self.portal = self.layer['portal'] setRoles(self.portal, TEST_USER_ID, ['Manager']) self.browser = Browser(self.layer['app']) self.browser.handleErrors = False self.browser.raiseHttpErrors = False self.browser.addHeader('Accept', 'application/json')
def setUp(self): # Enable debug mode always to ensure cache is disabled by default Globals.DevelopmentMode = True self.settings = getUtility(IRegistry).forInterface(IThemeSettings) self.settings.enabled = True theme = getTheme('rapido.plone.tests') applyTheme(theme) import transaction transaction.commit() self.portal = self.layer['portal'] package_dir_path = os.path.join(test_dir_path, 'other') dir = FilesystemResourceDirectory(package_dir_path) provideUtility(dir, provides=IResourceDirectory, name=u'++theme++other')
def test_createThemeFromTemplate_custom_prefix(self): from plone.app.theming.utils import createThemeFromTemplate from plone.app.theming.utils import getAvailableThemes from plone.app.theming.utils import getTheme from plone.app.theming.interfaces import THEME_RESOURCE_NAME from plone.app.theming.interfaces import RULE_FILENAME title = "copy of test theme with custom prefix" description = "test theme creation" themeName = createThemeFromTemplate(title, description, baseOn="secondary-theme") titles = [theme.title for theme in getAvailableThemes()] self.assertTrue(title in titles) theme = getTheme(themeName) expected_prefix = u"/++%s++%s" % (THEME_RESOURCE_NAME, title.replace(" ", "-")) self.assertEqual(theme.absolutePrefix, expected_prefix) expected_rules = u"/++%s++%s/%s" % (THEME_RESOURCE_NAME, title.replace(" ", "-"), RULE_FILENAME) self.assertEqual(theme.rules, expected_rules) self.assertEqual(theme.enabled_bundles, ['plone']) self.assertEqual(theme.disabled_bundles, ['foobar']) expected_dev_css = u"/++%s++%s/less/barceloneta.plone.less" % ( THEME_RESOURCE_NAME, title.replace(" ", "-")) expected_prod_css = u"/++%s++%s/less/barceloneta-compiled.css" % ( THEME_RESOURCE_NAME, title.replace(" ", "-")) expected_tinymce = u"/++%s++%s/less/barceloneta-compiled.css" % ( THEME_RESOURCE_NAME, title.replace(" ", "-")) self.assertEqual(theme.development_css, expected_dev_css) self.assertEqual(theme.production_css, expected_prod_css) self.assertEqual(theme.tinymce_content_css, expected_tinymce) expected_dev_js = u"/++%s++%s/script.js" % ( THEME_RESOURCE_NAME, title.replace(" ", "-")) expected_prod_js = u"/++%s++%s/script.min.js" % ( THEME_RESOURCE_NAME, title.replace(" ", "-")) self.assertEqual(theme.development_js, expected_dev_js) self.assertEqual(theme.production_js, expected_prod_js)
def test_createThemeFromTemplate_rel_path(self): from plone.app.theming.utils import createThemeFromTemplate from plone.app.theming.utils import getAvailableThemes from plone.app.theming.utils import getTheme from plone.app.theming.interfaces import THEME_RESOURCE_NAME from plone.app.theming.interfaces import RULE_FILENAME title = "copy of test theme with custom prefix" description = "test theme creation" themeName = createThemeFromTemplate(title, description, baseOn="another-theme") titles = [theme.title for theme in getAvailableThemes()] self.assertTrue(title in titles) theme = getTheme(themeName) expected_prefix = u"/++%s++%s" % (THEME_RESOURCE_NAME, title.replace(" ", "-")) self.assertEqual(theme.absolutePrefix, expected_prefix) expected_rules = u"/++%s++%s/%s" % ( THEME_RESOURCE_NAME, title.replace(" ", "-"), RULE_FILENAME) self.assertEqual(theme.rules, expected_rules) self.assertEqual(theme.enabled_bundles, ['plone']) self.assertEqual(theme.disabled_bundles, ['foobar']) expected_dev_css = u"++%s++%s/less/barceloneta.plone.less" % ( THEME_RESOURCE_NAME, title.replace(" ", "-")) expected_prod_css = u"++%s++%s/less/barceloneta-compiled.css" % ( THEME_RESOURCE_NAME, title.replace(" ", "-")) expected_tinymce = u"++%s++%s/less/barceloneta-compiled.css" % ( THEME_RESOURCE_NAME, title.replace(" ", "-")) self.assertEqual(theme.development_css, expected_dev_css) self.assertEqual(theme.production_css, expected_prod_css) self.assertEqual(theme.tinymce_content_css, expected_tinymce) expected_dev_js = u"++%s++%s/script.js" % (THEME_RESOURCE_NAME, title.replace(" ", "-")) expected_prod_js = u"++%s++%s/script.min.js" % ( THEME_RESOURCE_NAME, title.replace(" ", "-")) self.assertEqual(theme.development_js, expected_dev_js) self.assertEqual(theme.production_js, expected_prod_js)
def test_createThemeFromTemplate(self): from plone.app.theming.utils import createThemeFromTemplate from plone.app.theming.utils import getAvailableThemes from plone.app.theming.utils import getTheme from plone.app.theming.interfaces import THEME_RESOURCE_NAME from plone.app.theming.interfaces import RULE_FILENAME title = "copy of test theme" description = "test theme creation" themeName = createThemeFromTemplate(title, description, baseOn="plone.app.theming.tests") titles = [theme.title for theme in getAvailableThemes()] self.assertTrue(title in titles) theme = getTheme(themeName) expected_prefix = u"/++%s++%s" % (THEME_RESOURCE_NAME, title.replace(" ", "-")) self.assertEqual(theme.absolutePrefix, expected_prefix) expected_rules = u"/++%s++%s/%s" % (THEME_RESOURCE_NAME, title.replace(" ", "-"), RULE_FILENAME) self.assertEqual(theme.rules, expected_rules)
def test_createThemeFromTemplate(self): from plone.app.theming.utils import createThemeFromTemplate from plone.app.theming.utils import getAvailableThemes from plone.app.theming.utils import getTheme from plone.app.theming.interfaces import THEME_RESOURCE_NAME from plone.app.theming.interfaces import RULE_FILENAME title = "copy of test theme" description = "test theme creation" themeName = createThemeFromTemplate(title, description, baseOn="plone.app.theming.tests") titles = [theme.title for theme in getAvailableThemes()] self.assertTrue(title in titles) theme = getTheme(themeName) expected_prefix = u"/++%s++%s" % (THEME_RESOURCE_NAME, title.replace(" ", "-")) self.assertEqual(theme.absolutePrefix, expected_prefix) expected_rules = u"/++%s++%s/%s" % ( THEME_RESOURCE_NAME, title.replace(" ", "-"), RULE_FILENAME) self.assertEqual(theme.rules, expected_rules)