def testEditWithContentTypeCharset(self):
     manage_addPageTemplate(self.app, 'test', xml_utf8, encoding='utf-8')
     zpt = self.app['test']
     xml_unicode = unicode(xml_utf8, 'utf-8').strip()
     zpt.pt_edit(xml_unicode, 'text/xml')
     zpt.pt_edit(xml_unicode, 'text/xml; charset=utf-8')
     self.assertEqual(zpt.read(), xml_unicode)
 def testWriteAcceptsUnicode(self):
     manage_addPageTemplate(self.app, 'test', '', encoding='utf-8')
     zpt = self.app['test']
     s = u'this is unicode'
     zpt.write(s)
     self.assertEqual(zpt.read(), s)
     self.assertEqual(isinstance(zpt.read(), unicode), True)
 def _createZPT(self):
     manage_addPageTemplate(self.app,
                            'test',
                            text=utf8_text,
                            encoding='utf-8')
     zpt = self.app['test']
     return zpt
 def testWriteAcceptsUnicode(self):
     manage_addPageTemplate(self.app, 'test', '', encoding='utf-8')
     zpt = self.app['test']
     s = 'this is unicode'
     zpt.write(s)
     self.assertEqual(zpt.read(), s)
     self.assertEqual(isinstance(zpt.read(), str), True)
Example #5
0
 def loadSkelton(self, REQUEST, skelton='zch'):
     "Add Page Template PythonScript, DTMLMethod and Image read from skelton directory."
     for entry in os.listdir(os.path.join(package_home(globals()), 'skelton', skelton)):
         if entry[-3:] == '.pt' or entry[-4:]=='.pys' or entry[-5:]=='.dtml' or entry[-4:]=='.gif':
             f=open(os.path.join(package_home(globals()), 'skelton', skelton, entry), 'rb') 
             file=f.read()     
             f.close()     
             try:
                 if entry[-3:] == '.pt':
                     id = entry[:-3]
                     manage_addPageTemplate(self, id, '', file, encoding='utf-8')
                 elif entry[-4:] == '.pys':
                     id = entry[:-4]
                     manage_addPythonScript(self,id)
                     self._getOb(id).write(file)
                 elif entry[-5:] == '.dtml':
                     id = entry[:-5]
                     self.manage_addDTMLMethod(id,'',file)     
                 elif entry[-4:] == '.gif':
                     id = entry[:-4]
                     self.manage_addImage(id,file,content_type='image/gif')
             except:
                 pass
     if REQUEST is not None:
         return REQUEST.RESPONSE.redirect(REQUEST['HTTP_REFERER'])
Example #6
0
 def manage_afterAdd(self, item, container):
     """ Setup tasks upon instantiation """
     manage_addPageTemplate( self
                           , 'login_form'
                           , title='Login Form'
                           , text=BASIC_LOGIN_FORM
                           )
def _create_eionet_survey(container):
    portal_map = container.getGeoMapTool()
    meeting_type = portal_map.getSymbolTitle(container.geo_type)
    survey_details = EIONET_SURVEYS[meeting_type]
    manage_addMegaSurvey(container, survey_details['id'],
                         survey_details['title'])
    eionet_survey = container._getOb(survey_details['id'])
    eionet_survey.meeting_eionet_survey = True
    eionet_survey.allow_anonymous = 1
    eionet_survey._p_changed = True
    for question in survey_details['questions']:
        eionet_survey.addWidget(**question)
    for widget in eionet_survey.objectValues():
        widget.locked = True
        widget._p_changed = True
    if meeting_type == 'NRC meeting':
        # Create validation_html and validation_onsubmit for custom validation
        validation_onsubmit = os.path.join(
            os.path.dirname(__file__), 'eionet_survey',
            'validation_onsubmit_NRC_meeting.txt')
        manage_addPythonScript(eionet_survey, 'validation_onsubmit')
        script_content = open(validation_onsubmit, 'rb').read()
        params = 'datamodel, errors'
        script_title = 'Custom validation logic'
        eionet_survey._getOb('validation_onsubmit').ZPythonScript_edit(
            params, script_content)
        eionet_survey._getOb('validation_onsubmit').ZPythonScript_setTitle(
            script_title)
        validation_html = os.path.join(os.path.dirname(__file__),
                                       'eionet_survey',
                                       'validation_html_NRC_meeting.txt')
        validation_title = "Custom questionnaire HTML"
        manage_addPageTemplate(eionet_survey, 'validation_html',
                               validation_title,
                               open(validation_html).read())
Example #8
0
 def testEditWithContentTypeCharset(self):
     manage_addPageTemplate(self.app, 'test', xml_utf8, encoding='utf-8')
     zpt = self.app['test']
     xml_unicode = unicode(xml_utf8, 'utf-8').strip()
     zpt.pt_edit(xml_unicode, 'text/xml')
     zpt.pt_edit(xml_unicode, 'text/xml; charset=utf-8')
     self.assertEqual(zpt.read(), xml_unicode)
Example #9
0
 def installUi(self):
     '''Installs the user interface'''
     # Some useful imports
     from OFS.Folder import manage_addFolder
     from OFS.Image import manage_addImage, manage_addFile
     # Delete the existing folder if it existed
     zopeContent = self.app.objectIds()
     for name in ('ui', self.favIcon):
         if name in zopeContent: self.app.manage_delObjects([name])
     manage_addFolder(self.app, 'ui')
     # Browse the physical ui folders (the Appy one and an app-specific, if
     # the app defines one) and create the corresponding objects in the Zope
     # folder. In the case of files having the same name in both folders,
     # the one from the app-specific folder is chosen.
     j = os.path.join
     uiFolders = [j(j(appy.getPath(), 'gen'), 'ui')]
     for uiFolder in self.config.appConfig.uiFolders:
         if uiFolder.startswith('..'):
             folder = j(os.path.dirname(self.config.diskFolder),uiFolder[3:])
         else:
             folder = j(self.config.diskFolder, uiFolder)
         if os.path.exists(folder):
             uiFolders.insert(0, folder)
     for ui in uiFolders:
         for root, dirs, files in os.walk(ui):
             folderName = root[len(ui):]
             # Get the Zope folder that corresponds to this name
             zopeFolder = self.app.ui
             if folderName:
                 for name in folderName.strip(os.sep).split(os.sep):
                     zopeFolder = zopeFolder._getOb(name)
             # Create sub-folders at this level
             for name in dirs:
                 if not hasattr(zopeFolder.aq_base, name):
                     manage_addFolder(zopeFolder, name)
             # Create files at this level
             for name in files:
                 ext = os.path.splitext(name)[1]
                 if hasattr(zopeFolder.aq_base, name): continue
                 f = file(j(root, name))
                 if name == self.favIcon:
                     if not hasattr(self.app, name):
                         # Copy it at the root. Else, IE won't notice it.
                         manage_addImage(self.app, name, f)
                 elif ext in gen.File.imageExts:
                     manage_addImage(zopeFolder, name, f)
                 else:
                     manage_addFile(zopeFolder, name, f)
                 f.close()
     # Update home and error pages
     from Products.PageTemplates.ZopePageTemplate import \
          manage_addPageTemplate
     if 'index_html' in zopeContent:
         self.app.manage_delObjects(['index_html'])
     manage_addPageTemplate(self.app, 'index_html', '', homePage)
     if 'standard_error_message' in zopeContent:
         self.app.manage_delObjects(['standard_error_message'])
     manage_addPageTemplate(self.app, 'standard_error_message', '',
                            errorPage)
Example #10
0
 def testPT_RenderWithISO885915(self):
     manage_addPageTemplate(self.app, 'test',
                            text=iso885915_binary, encoding='iso-8859-15')
     zpt = self.app['test']
     result = zpt.pt_render()
     # use startswith() because the renderer appends a trailing \n
     self.assertTrue(result.encode('iso-8859-15').startswith(iso885915_binary))
     self.assertEqual(zpt.output_encoding, 'utf-8')
Example #11
0
 def manage_customize_index(self, REQUEST):
     """ create a custom map_index """
     if "map_index" in self.objectIds():
         raise ValueError("map_index already customized")
     else:
         text = get_template_source(self._index_template())
         manage_addPageTemplate(self, id="map_index", title="", text=text)
         REQUEST.RESPONSE.redirect("%s/manage_workspace" % self.map_index.absolute_url())
 def testPT_RenderWithUTF8(self):
     manage_addPageTemplate(self.app, 'test',
                            text=utf8_str, encoding='utf-8')
     zpt = self.app['test']
     result = zpt.pt_render()
     # use startswith() because the renderer appends a trailing \n
     self.assertEqual(result.encode('utf-8').startswith(utf8_str), True)
     self.assertEqual(zpt.output_encoding, 'utf-8')
Example #13
0
 def manage_afterAdd(self, item, container):
     """ Setup tasks upon instantiation """
     manage_addPageTemplate( self
                           , 'login_form'
                           , title='Login Form'
                           , text=BASIC_LOGIN_FORM
                           )
     self.login_form.__roles__ = []
Example #14
0
 def testPT_RenderWithUTF8(self):
     manage_addPageTemplate(self.app, 'test',
                            text=utf8_str, encoding='utf-8')
     zpt = self.app['test']
     result = zpt.pt_render()
     # use startswith() because the renderer appends a trailing \n
     self.assertEqual(result.encode('utf-8').startswith(utf8_str), True)
     self.assertEqual(zpt.output_encoding, 'iso-8859-15')
Example #15
0
 def testPT_RenderWithAscii(self):
     manage_addPageTemplate(self.app, 'test',
                            text=ascii_binary, encoding='ascii')
     zpt = self.app['test']
     result = zpt.pt_render()
     # use startswith() because the renderer appends a trailing \n
     self.assertEqual(result.encode('ascii').startswith(ascii_binary), True)
     self.assertEqual(zpt.output_encoding, 'utf-8')
 def testPT_RenderWithAscii(self):
     manage_addPageTemplate(self.app, 'test',
                            text=ascii_str, encoding='ascii')
     zpt = self.app['test']
     result = zpt.pt_render()
     # use startswith() because the renderer appends a trailing \n
     self.assertEqual(result.encode('ascii').startswith(ascii_str), True)
     self.assertEqual(zpt.output_encoding, 'iso-8859-15')
Example #17
0
 def installUi(self):
     '''Installs the user interface.'''
     # Some useful imports.
     from OFS.Folder import manage_addFolder
     from OFS.Image import manage_addImage, manage_addFile
     # Delete the existing folder if it existed.
     zopeContent = self.app.objectIds()
     if 'ui' in zopeContent: self.app.manage_delObjects(['ui'])
     manage_addFolder(self.app, 'ui')
     # Browse the physical ui folders (the Appy one and an app-specific, if
     # the app defines one) and create the corresponding objects in the Zope
     # folder. In the case of files having the same name in both folders,
     # the one from the app-specific folder is chosen.
     j = os.path.join
     uiFolders = [j(j(appy.getPath(), 'gen'), 'ui')]
     for uiFolder in self.config.appConfig.uiFolders:
         if uiFolder.startswith('..'):
             folder = j(os.path.dirname(self.config.diskFolder),
                        uiFolder[3:])
         else:
             folder = j(self.config.diskFolder, uiFolder)
         if os.path.exists(folder):
             uiFolders.insert(0, folder)
     for ui in uiFolders:
         for root, dirs, files in os.walk(ui):
             folderName = root[len(ui):]
             # Get the Zope folder that corresponds to this name
             zopeFolder = self.app.ui
             if folderName:
                 for name in folderName.strip(os.sep).split(os.sep):
                     zopeFolder = zopeFolder._getOb(name)
             # Create sub-folders at this level
             for name in dirs:
                 if not hasattr(zopeFolder.aq_base, name):
                     manage_addFolder(zopeFolder, name)
             # Create files at this level
             for name in files:
                 ext = os.path.splitext(name)[1]
                 if hasattr(zopeFolder.aq_base, name): continue
                 f = file(j(root, name))
                 if name == 'favicon.ico':
                     if not hasattr(self.app, name):
                         # Copy it at the root. Else, IE won't notice it.
                         manage_addImage(self.app, name, f)
                 elif ext in gen.File.imageExts:
                     manage_addImage(zopeFolder, name, f)
                 else:
                     manage_addFile(zopeFolder, name, f)
                 f.close()
     # Update the home page
     if 'index_html' in zopeContent:
         self.app.manage_delObjects(['index_html'])
     from Products.PageTemplates.ZopePageTemplate import \
          manage_addPageTemplate
     manage_addPageTemplate(self.app, 'index_html', '', homePage)
     # Remove the error page.
     if 'standard_error_message' in zopeContent:
         self.app.manage_delObjects(['standard_error_message'])
 def manage_create_validation_html(self, REQUEST=None):
     """ create a blank validation_html template in this survey """
     datafile = path.join(path.dirname(__file__), "www", "initial_validation_html.txt")
     id = "validation_html"
     title = "Custom questionnaire HTML"
     manage_addPageTemplate(self, id, title, open(datafile).read())
     if REQUEST is not None:
         url = self[id].absolute_url() + "/manage_workspace"
         REQUEST.RESPONSE.redirect(url)
Example #19
0
 def manage_customize_index(self, REQUEST):
     """ create a custom map_index """
     if 'map_index' in self.objectIds():
         raise ValueError('map_index already customized')
     else:
         manage_addPageTemplate(self, id='map_index', title='',
                                text=self._index_template()._text)
         REQUEST.RESPONSE.redirect('%s/manage_workspace' %
                                   self.map_index.absolute_url())
Example #20
0
 def testPT_RenderWithISO885915(self):
     manage_addPageTemplate(self.app, 'test',
                            text=iso885915_str, encoding='iso-8859-15')
     zpt = self.app['test']
     result = zpt.pt_render()
     # use startswith() because the renderer appends a trailing \n
     self.assertTrue(result.encode('iso-8859-15'
                                  ).startswith(iso885915_str))
     self.assertEqual(zpt.output_encoding, 'iso-8859-15')
 def testPT_RenderUnicodeExpr(self):
     # Check workaround for unicode incompatibility of ZRPythonExpr.
     # See http://mail.zope.org/pipermail/zope/2007-February/170537.html
     manage_addPageTemplate(self.app, 'test', 
                            text=('<span tal:content="python: '
                                  'unicode(\'\xfe\', \'iso-8859-15\')" />'),
                            encoding='iso-8859-15')
     zpt = self.app['test']
     zpt.pt_render() # should not raise a UnicodeDecodeError
Example #22
0
 def testPT_RenderUnicodeExpr(self):
     # Check workaround for unicode incompatibility of ZRPythonExpr.
     # See http://mail.zope.org/pipermail/zope/2007-February/170537.html
     manage_addPageTemplate(self.app, 'test', 
                            text=('<span tal:content="python: '
                                  'unicode(\'\xfe\', \'iso-8859-15\')" />'),
                            encoding='iso-8859-15')
     zpt = self.app['test']
     result = zpt.pt_render() # should not raise a UnicodeDecodeError
Example #23
0
 def testStructureWithAccentedChars(self):
     raw = u'<div tal:content="structure python: \'üöä\'" />'
     manage_addPageTemplate(self.app, 'test',
                            text=raw.encode('iso-8859-15'),
                            encoding='iso-8859-15')
     zpt = self.app['test']
     self.app.REQUEST.set('HTTP_ACCEPT_CHARSET', 'iso-8859-15,utf-8')
     result = zpt.pt_render()
     self.assertTrue(result.startswith(u'<div>üöä</div>'))
Example #24
0
 def manage_create_validation_html(self, REQUEST=None):
     """ create a blank validation_html template in this survey """
     datafile = os.path.join(os.path.dirname(__file__), 'www',
                             'initial_validation_html.txt')
     id = 'validation_html'
     title = "Custom questionnaire HTML"
     manage_addPageTemplate(self, id, title, open(datafile).read())
     if REQUEST is not None:
         url = self[id].absolute_url() + '/manage_workspace'
         REQUEST.RESPONSE.redirect(url)
Example #25
0
 def testBug151020(self):
     manage_addPageTemplate(self.app, 'test',
                            text=((u'<div tal:content="structure '
                                  u'python: \'üöä\'" />').encode('iso-8859-15')),
                            encoding='iso-8859-15')
     zpt = self.app['test']
     self.app.REQUEST.set('HTTP_ACCEPT_CHARSET',
                          'x-user-defined, iso-8859-15,utf-8')
     result = zpt.pt_render()
     self.assertTrue(result.startswith(u'<div>üöä</div>'))
Example #26
0
 def testUTF8WrongPreferredCharset(self):
     manage_addPageTemplate(self.app, 'test',
                            text=(b'<div tal:content="python: '
                                  b'request.get(\'data\')" />'),
                            encoding='ascii')
     zpt = self.app['test']
     self.app.REQUEST.set('HTTP_ACCEPT_CHARSET', 'iso-8859-15')
     self.app.REQUEST.set('data', u'üöä'.encode('utf-8'))
     result = zpt.pt_render()
     self.assertFalse(result.startswith(u'<div>üöä</div>'))
 def testUTF8(self):
     manage_addPageTemplate(self.app,
                            'test',
                            text=(b'<div tal:content="python: '
                                  b'request.get(\'data\')" />'),
                            encoding='ascii')
     zpt = self.app['test']
     self.app.REQUEST.set('HTTP_ACCEPT_CHARSET', 'utf-8,ISO-8859-15')
     self.app.REQUEST.set('data', 'üöä'.encode())
     result = zpt.pt_render()
     self.assertIn('<div>üöä</div>', result)
 def test_profiled(self):
     app = self.layer['app']
     manage_addPageTemplate(app, 'pttemplate')
     pttemplate = app['pttemplate']
     pttemplate.pt_edit('<p tal:content="string:test" />', 'text/html')
     self.assertTrue('test' in pttemplate())
     self.assertFalse(self.ptviewer.enabled())
     self.assertFalse(self.ptviewer.full_result())
     self.ptviewer.enable()
     pttemplate()
     self.assertTrue(self.ptviewer.full_result())
Example #29
0
 def testISO_8859_15(self):
     manage_addPageTemplate(self.app, 'test', 
                            text=('<div tal:content="python: '
                                  'request.get(\'data\')" />'), 
                            encoding='ascii')
     zpt = self.app['test']
     self.app.REQUEST.set('HTTP_ACCEPT_CHARSET', 'ISO-8859-15,utf-8')
     self.app.REQUEST.set('data', '�צה')
     result = zpt.pt_render()
     self.assertTrue(result.startswith(unicode('<div>�צה</div>',
                                               'iso-8859-15')))
 def testISO_8859_15(self):
     manage_addPageTemplate(self.app, 'test', 
                            text=('<div tal:content="python: '
                                  'request.get(\'data\')" />'), 
                            encoding='ascii')
     zpt = self.app['test']
     self.app.REQUEST.set('HTTP_ACCEPT_CHARSET', 'ISO-8859-15,utf-8')
     self.app.REQUEST.set('data', '�צה')
     result = zpt.pt_render()
     self.assertTrue(result.startswith(unicode('<div>�צה</div>',
                                               'iso-8859-15')))
Example #31
0
 def testInstallMonkeyPatch(self):
     from Products.PageTemplates.ZopePageTemplate import ZopePageTemplate, manage_addPageTemplate
     manage_addPageTemplate(self.app, 'test', 
                            text='<div tal:content="string:foo">bar</div>', 
                            encoding='ascii')
     zpt = self.app['test']
     from zope.publisher.base import DebugFlags
     self.app.REQUEST.debug = DebugFlags()
     self.assertEqual(zpt.pt_render(), u'<div>foo</div>\n')
     self.app.REQUEST.debug.showTAL = True
     self.assertEqual(zpt.pt_render(), u'<div tal:content="string:foo">foo</div>\n')
 def test_profiled(self):
     app = self.layer['app']
     manage_addPageTemplate(app, 'pttemplate')
     pttemplate = app['pttemplate']
     pttemplate.pt_edit('<p tal:content="string:test" />', 'text/html')
     self.assertTrue('test' in pttemplate())
     self.assertFalse(self.ptviewer.enabled())
     self.assertFalse(self.ptviewer.full_result())
     self.ptviewer.enable()
     pttemplate()
     self.assertTrue(self.ptviewer.full_result())
 def testBug151020(self):
     raw = '<div tal:content="structure python: \'üöä\'" />'
     manage_addPageTemplate(self.app,
                            'test',
                            text=raw.encode('iso-8859-15'),
                            encoding='iso-8859-15')
     zpt = self.app['test']
     self.app.REQUEST.set('HTTP_ACCEPT_CHARSET',
                          'x-user-defined, iso-8859-15,utf-8')
     result = zpt.pt_render()
     self.assertIn('<div>üöä</div>', result)
Example #34
0
    def loadDefaultData(self):
        """ """
        #set default 'Naaya' configuration
        NySite.__dict__['createPortalTools'](self)
        NySite.__dict__['loadDefaultData'](self)

        #load site skeleton - configuration
        self.loadSkeleton(join(CHM2_PRODUCT_PATH, 'skel'))

        #remove Naaya default content
        self.getLayoutTool().manage_delObjects('skin')

        #set default PhotoFolder
        manage_addNyPhotoFolder(self, ID_PHOTOARCHIVE, TITLE_PHOTOARCHIVE)
        self._getOb(ID_PHOTOARCHIVE).approveThis()

        #create and configure LinkChecker instance
        manage_addLinkChecker(self, ID_LINKCHECKER, TITLE_LINKCHECKER)
        linkchecker_ob = self._getOb(ID_LINKCHECKER)
        linkchecker_ob.manage_edit(proxy='', batch_size=10, catalog_name=ID_CATALOGTOOL)
        linkchecker_ob.manage_addMetaType(METATYPE_NYURL)
        linkchecker_ob.manage_addProperty(METATYPE_NYURL, 'locator')
        for k,v in self.get_content_urls().items():
            linkchecker_ob.manage_addMetaType(k)
            for p in v:
                linkchecker_ob.manage_addProperty(k, p)

        #create helpdesk instance
        manage_addHelpDesk(self, ID_HELPDESKAGENT, TITLE_HELPDESKAGENT, self.getAuthenticationToolPath(1))
        #create NaayaCalendar instance
        manage_addEventCalendar(self, id="portal_calendar", title='Calendar of Events', description='',
                            day_len='2', cal_meta_types='Naaya Event', start_day='Monday', catalog=self.getCatalogTool().id, REQUEST=None)
        #create index for Naaya Calendar
        extra=Extra_for_DateRangeIndex(since_field='start_date', until_field='end_date')
        self.getCatalogTool().manage_addIndex("resource_interval", 'DateRangeIndex', extra=extra)
        #create and fill glossaries
        manage_addGlossaryCentre(self, ID_GLOSSARY_KEYWORDS, TITLE_GLOSSARY_KEYWORDS)
        self._getOb(ID_GLOSSARY_KEYWORDS).xliff_import(self.futRead(join(CHM2_PRODUCT_PATH, 'skel', 'others', 'glossary_keywords.xml')))
        self.add_glossary_coverage()

        #portal_map custom index
        custom_map_index = self.futRead(join(CHM2_PRODUCT_PATH, 'skel', 'others', 'map_index.zpt'))
        portal_map = self.getGeoMapTool()
        manage_addPageTemplate(portal_map, id='map_index', title='', text='')
        map_index = portal_map._getOb(id='map_index')
        map_index.pt_edit(text=custom_map_index, content_type='')
        
        #set glossary for pick lists
        self.keywords_glossary = ID_GLOSSARY_KEYWORDS
        self.coverage_glossary = ID_GLOSSARY_COVERAGE
        self._p_changed = 1
        #add Forum instance
        manage_addNyForum(self, id='portal_forum', title='CHM Forum', description='', categories=['CHM', 'Biodiversity', 'Other'], file_max_size=0, REQUEST=None)
Example #35
0
    def setUp(self):
        super(SiteIndexInLayoutTest, self).setUp()

        layout_tool = self.portal.getLayoutTool()
        current_skin = layout_tool.get_current_skin()

        if hasattr(current_skin, 'site_index'):
            current_skin.site_index.write(self.TEXT)
        else:
            manage_addPageTemplate(current_skin, 'site_index', text=self.TEXT)

        transaction.commit()
 def testStructureWithAccentedChars(self):
     manage_addPageTemplate(self.app, 'test', 
                            text=('<div tal:content="structure '
                                  'python: %s" />' % "'�צה'"),
                            encoding='iso-8859-15')
     zpt = self.app['test']
     self.app.REQUEST.set('HTTP_ACCEPT_CHARSET', 'iso-8859-15,utf-8')
     self.app.REQUEST.set('data', unicode('�צה',
                                          'iso-8859-15').encode('utf-8'))
     result = zpt.pt_render()
     self.assertTrue(result.startswith(unicode('<div>�צה</div>',
                                               'iso-8859-15')))
Example #37
0
 def testStructureWithAccentedChars(self):
     manage_addPageTemplate(self.app, 'test', 
                            text=('<div tal:content="structure '
                                  'python: %s" />' % "'�צה'"),
                            encoding='iso-8859-15')
     zpt = self.app['test']
     self.app.REQUEST.set('HTTP_ACCEPT_CHARSET', 'iso-8859-15,utf-8')
     self.app.REQUEST.set('data', unicode('�צה',
                                          'iso-8859-15').encode('utf-8'))
     result = zpt.pt_render()
     self.assertTrue(result.startswith(unicode('<div>�צה</div>',
                                               'iso-8859-15')))
Example #38
0
    def loadDefaultData(self):
        """ """
        #set default 'Naaya' configuration
        NySite.__dict__['createPortalTools'](self)
        NySite.__dict__['loadDefaultData'](self)

        #load site skeleton - configuration
        self.loadSkeleton(join(SMAP_PRODUCT_PATH, 'skel'))

        #custom indexes
        try:    self.getCatalogTool().manage_addIndex('resource_area', 'TextIndexNG2', extra={'default_encoding': 'utf-8', 'splitter_single_chars': 1})
        except: pass
        try:    self.getCatalogTool().manage_addIndex('resource_focus', 'TextIndexNG2', extra={'default_encoding': 'utf-8', 'splitter_single_chars': 1})
        except: pass
        try:    self.getCatalogTool().manage_addIndex('resource_area_exp', 'TextIndexNG2', extra={'default_encoding': 'utf-8', 'splitter_single_chars': 1})
        except: pass
        try:    self.getCatalogTool().manage_addIndex('resource_focus_exp', 'TextIndexNG2', extra={'default_encoding': 'utf-8', 'splitter_single_chars': 1})
        except: pass
        try:    self.getCatalogTool().manage_addIndex('resource_country', 'TextIndexNG2', extra={'default_encoding': 'utf-8', 'splitter_single_chars': 1})
        except: pass

        #remove Naaya default content
        self.getLayoutTool().manage_delObjects('skin')
        self.manage_delObjects('info')
        self.getPortletsTool().manage_delObjects('topnav_links')

        #set default 'Main topics'
        try:    self.getPropertiesTool().manageMainTopics(['fol120392', 'fol657555', 'fol112686', 'fol034934', 'test1'])
        except: pass

        #set portal index's right portlets
        self.getPortletsTool().set_right_portlets_locations('', ['portlet_rdfcalendar'])

        #default Forum instance
        manage_addNyForum(self, id=ID_FORUM, title=TITLE_FORUM)

        #default RDF Calendar settings
        manage_addRDFCalendar(self, id=ID_RDFCALENDAR, title=TITLE_RDFCALENDAR, week_day_len=1)
        #to be done after add
        #rdfcalendar_ob = self._getOb(ID_RDFCALENDAR)
        #manage_addRDFSummary(rdfcalendar_ob, 'events', 'Events',
        #                     'http://smap.ewindows.eu.org/events/index_rdf', '', 'no')
        #rdfcal_ob = self._getOb(ID_RDFCALENDAR)
        #rdfcal_ob._getOb('events').update()
        country_folder = self._getOb('fol112686')
        country_folder.manage_role('Authenticated', ['Naaya - Add Naaya Contact objects', 'Naaya - Add Naaya Event objects', 'Naaya - Add Naaya Document objects', 'Naaya - Add Naaya Extended File objects', 'Naaya - Add Naaya File objects', 'Naaya - Access administrative area', 'Naaya - Add Naaya Folder objects', 'Naaya - Add Naaya GeoPoint objects', 'Naaya - Add Naaya Media File objects', 'Naaya - Add Naaya News objects', 'Naaya - Add Naaya Pointer objects', 'Naaya - Add Naaya SMAP Expert objects', 'Naaya - Add Naaya SMAP Project objects'])

        #portal_map custom index
        custom_map_index = self.futRead(join(SMAP_PRODUCT_PATH, 'skel', 'others', 'map_index.zpt'))
        portal_map = self.getGeoMapTool()
        manage_addPageTemplate(portal_map, id='map_index', title='', text='')
        map_index = portal_map._getOb(id='map_index')
        map_index.pt_edit(text=custom_map_index, content_type='')
Example #39
0
 def testBug151020(self):
     manage_addPageTemplate(
         self.app,
         'test',
         text=((u'<div tal:content="structure '
                u'python: \'üöä\'" />').encode('iso-8859-15')),
         encoding='iso-8859-15')
     zpt = self.app['test']
     self.app.REQUEST.set('HTTP_ACCEPT_CHARSET',
                          'x-user-defined, iso-8859-15,utf-8')
     result = zpt.pt_render()
     self.assertTrue(result.startswith(u'<div>üöä</div>'))
 def testDebugFlags(self):
     # Test for bug 229549
     manage_addPageTemplate(self.app, 'test', 
                            text='<div tal:content="string:foo">bar</div>', 
                            encoding='ascii')
     zpt = self.app['test']
     from zope.publisher.base import DebugFlags
     self.app.REQUEST.debug = DebugFlags()
     self.assertEqual(zpt.pt_render(), unicode('<div>foo</div>'))
     self.app.REQUEST.debug.showTAL = True
     self.assertEqual(zpt.pt_render(), unicode('<div tal:content="string:foo">foo</div>'))
     self.app.REQUEST.debug.sourceAnnotations = True
     self.assertEqual(zpt.pt_render().startswith(unicode('<!--')), True)
    def setUp(self):
        from Products.PageTemplates.ZopePageTemplate import \
            manage_addPageTemplate
        super(ZPTBrowserTests, self).setUp()

        Zope2.App.zcml.load_site(force=True)

        uf = self.app.acl_users
        uf.userFolderAddUser('manager', 'manager_pass', ['Manager'], [])
        manage_addPageTemplate(self.app, 'page_template')

        self.browser = Browser()
        self.browser.login('manager', 'manager_pass')
        self.browser.open('http://localhost/page_template/manage_main')
Example #42
0
 def testUTF8(self):
     manage_addPageTemplate(
         self.app,
         'test',
         text='<div tal:content="python: request.get(\'data\')" />',
         encoding='ascii')
     zpt = self.app['test']
     self.app.REQUEST.set('HTTP_ACCEPT_CHARSET', 'utf-8,ISO-8859-15')
     self.app.REQUEST.set('data',
                          unicode('�צה', 'iso-8859-15').encode('utf-8'))
     result = zpt.pt_render()
     self.assertEqual(
         result.startswith(unicode('<div>�צה</div>', 'iso-8859-15')),
         True)
Example #43
0
 def testDebugFlags(self):
     # Test for bug 229549
     manage_addPageTemplate(self.app, 'test', 
                            text='<div tal:content="string:foo">bar</div>', 
                            encoding='ascii')
     zpt = self.app['test']
     from zope.publisher.base import DebugFlags
     self.app.REQUEST.debug = DebugFlags()
     self.assertEqual(zpt.pt_render(), unicode('<div>foo</div>'))
     self.app.REQUEST.debug.showTAL = True
     self.assertEqual(zpt.pt_render(),
                      unicode('<div tal:content="string:foo">foo</div>'))
     self.app.REQUEST.debug.sourceAnnotations = True
     self.assertEqual(zpt.pt_render().startswith(unicode('<!--')), True)
    def setUp(self):
        from Products.PageTemplates.ZopePageTemplate import \
            manage_addPageTemplate
        super().setUp()

        Zope2.App.zcml.load_site(force=True)

        uf = self.app.acl_users
        uf.userFolderAddUser('manager', 'manager_pass', ['Manager'], [])
        manage_addPageTemplate(self.app, 'page_template')

        self.browser = Browser()
        self.browser.login('manager', 'manager_pass')
        self.browser.open('http://localhost/page_template/manage_main')
Example #45
0
    def importResourceFromJSON(self, container, id, element):
        """
        """
        id = id.encode('utf-8')
        resource_type = element['type']
        if id in container.objectIds():
            container.manage_delObjects([id])

        if resource_type == "Page Template":
            obj = manage_addPageTemplate(container, id)
            obj.title = element['title']
            obj.write(element['data'])
        elif resource_type == "Script (Python)":
            manage_addPythonScript(container, id)
            obj = container._getOb(id)
            obj.ZPythonScript_setTitle(element['title'])
            obj.write(element['data'])
        elif resource_type == "Image":
            id = manage_addImage(container, id,
                element['data'].decode('base64'),
                content_type=element['contenttype'])
        else:
            container.manage_addFile(id)
            obj = getattr(container, id)
            obj.meta_type = resource_type
            obj.title = element['title']
            data = element['data'].decode('base64')
            obj.update_data(data, content_type=element['contenttype'])
Example #46
0
    def importResourceFromJSON(self, container, id, element):
        """
        """
        id = id.encode('utf-8')
        resource_type = element['type']
        if id in container.objectIds():
            container.manage_delObjects([id])

        if resource_type == "Page Template":
            obj = manage_addPageTemplate(container, id)
            obj.title = element['title']
            obj.write(element['data'])
        elif resource_type == "Script (Python)":
            manage_addPythonScript(container, id)
            obj = container._getOb(id)
            obj.ZPythonScript_setTitle(element['title'])
            obj.write(element['data'])
        elif resource_type == "Image":
            id = manage_addImage(container,
                                 id,
                                 element['data'].decode('base64'),
                                 content_type=element['contenttype'])
        else:
            container.manage_addFile(id)
            obj = getattr(container, id)
            obj.meta_type = resource_type
            obj.title = element['title']
            data = element['data'].decode('base64')
            obj.update_data(data, content_type=element['contenttype'])
Example #47
0
    def importResourceFromXML(self, container, node):
        """
        """
        id = str(node.getAttribute('id'))
        resource_type = node.getAttribute('type')
        if id in container.objectIds():
            container.manage_delObjects([id])

        if resource_type == "Page Template":
            obj = manage_addPageTemplate(container, id)
            obj.title = node.getAttribute('title')
            obj.write(node.firstChild.data)
        elif resource_type == "Script (Python)":
            manage_addPythonScript(container, id)
            obj = container._getOb(id)
            obj.ZPythonScript_setTitle(node.getAttribute('title'))
            obj.write(node.firstChild.data)
        elif resource_type == "Image":
            id = manage_addImage(container,
                                 id,
                                 node.firstChild.data.decode('base64'),
                                 content_type=node.getAttribute('contenttype'))
        else:
            container.manage_addFile(id)
            obj = getattr(container, id)
            obj.meta_type = resource_type
            obj.title = node.getAttribute('title')
            obj.update_data(node.firstChild.data.decode('base64'),
                            content_type=node.getAttribute('contenttype'))
Example #48
0
 def _loadRegistrationForms(self):
     """ load registration forms """
     registration_form = file(join(constants.PRODUCT_PATH, 'zpt', 'registration', 'registration.zpt')).read()
     manage_addPageTemplate(self, 'registration_form', title='', text=registration_form)
     view_participant = file(join(constants.PRODUCT_PATH, 'zpt', 'participant', 'view_participant.zpt')).read()
     edit_participant = file(join(constants.PRODUCT_PATH, 'zpt', 'participant', 'edit_participant.zpt')).read()
     menu_buttons = file(join(constants.PRODUCT_PATH, 'zpt', 'menu_buttons.zpt')).read()
     manage_addPageTemplate(self, 'menu_buttons', title='', text=menu_buttons)
     manage_addPageTemplate(self, 'view_participant', title='', text=view_participant)
     manage_addPageTemplate(self, 'edit_participant', title='', text=edit_participant)
Example #49
0
def manage_addMessageBoard(self, id, title='',description='',
        filesize=500000, mailhost='', integrated=0, REQUEST=None):
    """ Add a new Meeting object """
    ob=MessageBoard(id, title, description, filesize, mailhost, integrated)
    self._setObject(id, ob)
    object=self._getOb(id)

    indexfile = open(join(package_home(globals()),'zpt','MessageBoardIndex.zpt'))
    content = indexfile.read()
    indexfile.close()
    manage_addPageTemplate(object, id='index_html', title='Default View', text=content)

    indexfile = open(join(package_home(globals()),'zpt','MessageTreeIndex.zpt'))
    content = indexfile.read()
    indexfile.close()
    manage_addPageTemplate(object, id='tree_html', title='Default View', text=content)

    if REQUEST is not None:
        return self.manage_main(self, REQUEST, update_menu=1)
Example #50
0
    def test_zopepagetemplate_processing_instruction_skipped(self):
        from Products.PageTemplates.ZopePageTemplate import manage_addPageTemplate
        template = manage_addPageTemplate(self.folder, 'test')

        # aq-wrap before we proceed
        template = template.__of__(self.folder)

        # test rendering engine
        template.write(open(os.path.join(path, "pi.pt")).read())
        self.assertIn('world', template())
 def testBug246983(self):
     # See https://bugs.launchpad.net/bugs/246983
     self.app.REQUEST.set('HTTP_ACCEPT_CHARSET', 'utf-8')
     self.app.REQUEST.set('data', 'üöä'.encode())
     # Direct inclusion of encoded strings is hadled normally by the unicode
     # conflict resolver
     textDirect = b"""
     <tal:block content="request/data" />
     """.strip()
     manage_addPageTemplate(self.app, 'test', text=textDirect)
     zpt = self.app['test']
     self.assertEqual(zpt.pt_render(), 'üöä')
     # Indirect inclusion of encoded strings through String Expressions
     # should be resolved as well.
     textIndirect = b"""
     <tal:block content="string:x ${request/data}" />
     """.strip()
     zpt.pt_edit(textIndirect, zpt.content_type)
     self.assertEqual(zpt.pt_render(), 'x üöä')
 def testBug246983(self):
     # See https://bugs.launchpad.net/bugs/246983
     self.app.REQUEST.set('HTTP_ACCEPT_CHARSET', 'utf-8')
     self.app.REQUEST.set('data', u'�צה'.encode('utf-8'))
     # Direct inclusion of encoded strings is hadled normally by the unicode
     # conflict resolver
     textDirect = """
     <tal:block content="request/data" />
     """.strip()
     manage_addPageTemplate(self.app, 'test', text=textDirect)
     zpt = self.app['test']
     self.assertEquals(zpt.pt_render(), u'�צה')
     # Indirect inclusion of encoded strings through String Expressions
     # should be resolved as well.
     textIndirect = """
     <tal:block content="string:x ${request/data}" />
     """.strip()
     zpt.pt_edit(textIndirect, zpt.content_type)
     self.assertEquals(zpt.pt_render(), u'x �צה')
Example #53
0
def manage_addRDFCalendar(self, id, title='', first_day_week='Monday',
        week_day_len=3, REQUEST=None):
    """Add a new RDFCalendar object with id=title."""

    ob=RDFCalendar(id, title, first_day_week, week_day_len)
    ob.id = id
    self._setObject(id, ob)

    #create index_html page template
    indexfile = PageTemplateFile('zpt/RDFCalendarIndex', globals())
    content = indexfile.read()
    manage_addPageTemplate(ob, id='index_html', title='Calendar Events', text=content)
    
    #create show_day_events page template
    show_events_file = PageTemplateFile('zpt/RDFCalendar_dayevents', globals())
    content = show_events_file.read()
    manage_addPageTemplate(ob, id='show_day_events', title='Show events for one day', text=content)
    
    
    if REQUEST is not None:
        return self.manage_main(self, REQUEST, update_menu=1)
Example #54
0
 def installUi(self):
     '''Installs the user interface.'''
     # Some useful imports
     from OFS.Folder import manage_addFolder
     from OFS.Image import manage_addImage, manage_addFile
     from Products.PythonScripts.PythonScript import PythonScript
     from Products.PageTemplates.ZopePageTemplate import \
          manage_addPageTemplate
     # Delete the existing folder if it existed.
     zopeContent = self.app.objectIds()
     if 'ui' in zopeContent: self.app.manage_delObjects(['ui'])
     manage_addFolder(self.app, 'ui')
     # Browse the physical ui folders (the Appy one and an app-specific, if
     # the app defines one) and create the corresponding objects in the Zope
     # folder. In the case of files having the same name in both folders,
     # the one from the app-specific folder is chosen.
     j = os.path.join
     uiFolders = [j(j(appy.getPath(), 'gen'), 'ui')]
     appUi = j(self.config.diskFolder, 'ui')
     if os.path.exists(appUi): uiFolders.insert(0, appUi)
     for ui in uiFolders:
         for root, dirs, files in os.walk(ui):
             folderName = root[len(ui):]
             # Get the Zope folder that corresponds to this name
             zopeFolder = self.app.ui
             if folderName:
                 for name in folderName.strip(os.sep).split(os.sep):
                     zopeFolder = zopeFolder._getOb(name)
             # Create sub-folders at this level
             for name in dirs:
                 if not hasattr(zopeFolder.aq_base, name):
                     manage_addFolder(zopeFolder, name)
             # Create files at this level
             for name in files:
                 zopeName, ext = os.path.splitext(name)
                 if ext not in ('.pt', '.py'):
                     # In the ZODB, pages and scripts have their name without
                     # their extension.
                     zopeName = name
                 if hasattr(zopeFolder.aq_base, zopeName): continue
                 f = file(j(root, name))
                 if ext in gen.File.imageExts:
                     manage_addImage(zopeFolder, zopeName, f)
                 elif ext == '.pt':
                     manage_addPageTemplate(zopeFolder,zopeName,'',f.read())
                 elif ext == '.py':
                     obj = PythonScript(zopeName)
                     zopeFolder._setObject(zopeName, obj)
                     zopeFolder._getOb(zopeName).write(f.read())
                 else:
                     manage_addFile(zopeFolder, zopeName, f)
                 f.close()
     # Update the home page
     if 'index_html' in zopeContent:
         self.app.manage_delObjects(['index_html'])
     manage_addPageTemplate(self.app, 'index_html', '', homePage)
     # Update the error page
     if 'standard_error_message' in zopeContent:
         self.app.manage_delObjects(['standard_error_message'])
     manage_addPageTemplate(self.app, 'standard_error_message', '',errorPage)
Example #55
0
    def test_lookup_custom_index(self):
        folder = self.folder

        # initially, nothing is set
        assert folder.get_custom_index_template() is None
        assert folder.compute_custom_index_value() == ''

        # test old-style `publicinterface` property
        folder.publicinterface = 1
        assert folder.compute_custom_index_value() == 'local:index'
        assert folder.get_custom_index_template() is None
        manage_addPageTemplate(folder, id='index', title='', text="hello1")
        transaction.commit()
        assert folder.get_custom_index_template() == folder.index
        self.browser.go('http://localhost/portal/info/testfolder')
        assert self.browser.get_html().strip() == "hello1"

        # new-style custom_index, locally in folder
        manage_addPageTemplate(folder, id='something', title='', text="hello2")
        folder.custom_index = 'local:something'
        assert folder.compute_custom_index_value() == 'local:something'
        transaction.commit()
        assert folder.get_custom_index_template() == folder.something
        self.browser.go('http://localhost/portal/info/testfolder')
        assert self.browser.get_html().strip() == "hello2"

        # new-style custom_index, in portal_forms
        portal_forms = self.portal.portal_forms
        portal_forms._setObject('something-else',
                        Template(id='something-else', title="",
                                 text="hello3", content_type='text/html'))
        folder.custom_index = 'site:portal_forms/something-else'
        assert (folder.compute_custom_index_value() ==
                'site:portal_forms/something-else')
        transaction.commit()
        assert (folder.get_custom_index_template() ==
                portal_forms['something-else'])
        self.browser.go('http://localhost/portal/info/testfolder')
        assert self.browser.get_html().strip() == "hello3"
Example #56
0
    def test_zopepagetemplate(self):
        from Products.PageTemplates.ZopePageTemplate import manage_addPageTemplate
        template = manage_addPageTemplate(self.folder, 'test')

        # aq-wrap before we proceed
        template = template.__of__(self.folder)

        # test rendering engine
        template.write(open(os.path.join(path, "simple.pt")).read())
        self.assertTrue('world' in template())

        # test arguments
        template.write(open(os.path.join(path, "options.pt")).read())
        self.assertTrue('Hello world' in template(greeting='Hello world'))

        # test commit
        import transaction
        transaction.commit()