Example #1
0
    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
Example #2
0
    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,
        )
Example #3
0
    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>")
Example #4
0
    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>")
Example #5
0
    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)
Example #8
0
    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))
Example #9
0
    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>')
Example #11
0
 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>")
Example #14
0
 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>')
Example #15
0
 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>')
Example #17
0
 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>')
Example #18
0
 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_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_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>")
Example #21
0
 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
Example #22
0
 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>")
Example #26
0
 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
     )
Example #30
0
 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>')
Example #33
0
    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)
Example #34
0
 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)
Example #39
0
    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']
Example #40
0
    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
Example #42
0
    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)
Example #44
0
    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'])
Example #45
0
    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.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
Example #47
0
    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
Example #48
0
    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')
Example #49
0
    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')
Example #50
0
    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')
Example #51
0
    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)
Example #52
0
    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)
Example #53
0
    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)
Example #54
0
    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)