Пример #1
0
    def test_registerJSFiles__both_slimmed(self):
        """ test the registerJSFiles() with slim_if_possible=True """
        if js_slimmer is None:
            return

        class MyProduct:
            pass

        # test setting a bunch of files
        files = ["large.js", "test.js"]
        files.append(tuple(files))
        registerJSFiles(
            MyProduct, files, rel_path="tests", set_expiry_header=True, slim_if_possible=True, gzip_if_possible=False
        )

        instance = MyProduct()
        for filename in files:
            if isinstance(filename, tuple):
                filename = ",".join(filename)
            static = getattr(instance, filename)
            self.assertTrue(isinstance(static, BetterImageFile))
            rendered = str(static)
            # expect this to be slimmed
            if len(filename.split(",")) > 1:
                content_parts = [open(right_here(x)).read() for x in filename.split(",")]
                expected_content = js_slimmer("\n".join(content_parts))
            else:
                expected_content = js_slimmer(open(right_here(filename)).read())
            self.assertEqual(rendered.strip(), expected_content.strip())
Пример #2
0
def initialize(context):
    """ Initialize product """
    try:
        context.registerClass(
             Homepage.SmurlHomepage,
             constructors = (
                 # This is called when
                 Homepage.manage_addSmurlHomepageForm,
                 # someone adds the product
                 Homepage.manage_addSmurlHomepage
                 ),
                 icon = "www/homepage_icon.gif"
            )

        product = OFS.misc_.misc_.SmurlHomepage

        registerImages(product, WWW_IMAGES, globals())
        registerJSFiles(product, JS_FILES, globals(),
                        gzip_if_possible=False,
                        max_age_production=3600*5)
        registerCSSFiles(product, CSS_FILES, globals(),
                         gzip_if_possible=False,
                         replace_images_with_aliases=True,
                         max_age_production=3600*5)

    except:
        import sys, traceback, string
        type, val, tb = sys.exc_info()
        sys.stderr.write(string.join(traceback.format_exception(type, val, tb), ''))
        del type, val, tb
Пример #3
0
    def test_registerJSFiles__one_slimmed(self):
        """ test the registerJSFiles() with slim_if_possible=True but one
        of the files shouldn't be slimmed because its filename indicates
        that it's already been slimmed/packed/minified. 

        In this test, the big challange is when two js files are combined 
        and one of them should be slimmed, the other one not slimmed.
        """

        class MyProduct:
            pass

        files = ["test.min.js", "test.js"]
        files.append(tuple(files))
        registerJSFiles(
            MyProduct, files, rel_path="tests", set_expiry_header=True, slim_if_possible=True, gzip_if_possible=False
        )

        instance = MyProduct()
        for filename in files:
            if isinstance(filename, tuple):
                filename = ",".join(filename)
            static = getattr(instance, filename)
            self.assertTrue(isinstance(static, BetterImageFile))
            rendered = str(static).strip()
            # expect this to be slimmed
            if len(filename.split(",")) > 1:

                content_parts = []
                for filename in filename.split(","):
                    content = open(right_here(filename)).read()
                    if filename.find("min") > -1 or js_slimmer is None:
                        content_parts.append(content)
                    else:
                        content_parts.append(js_slimmer(content))

                expected_content = "\n".join(content_parts)
                expected_content = expected_content.strip()

            else:
                content = open(right_here(filename)).read()
                if filename.find("min") > -1 or js_slimmer is None:
                    expected_content = content
                else:
                    expected_content = js_slimmer(content)
                expected_content = expected_content.strip()

            self.assertEqual(rendered, expected_content)
Пример #4
0
def initialize(context):
    """ Initialize FriedDocument product """
    try:
        context.registerClass(
            Document.FriedDocument,
            constructors = (
                # Used in the ZMI drop-down
                Document.manage_addFriedDocumentForm,
                Document.manage_addFriedDocument,
                Document.manage_suggestIdFromTitle,
                Document.manage_findMetalPTs,
                Document.manage_findCSSUrlAlts,
                Document.manage_findBeLikeDocuments,
                ),
            icon = "www/frieddoc_icon.gif"

            )
	    
        context.registerClass(
            Pan.DocumentPan,
            constructors = (
                # Used in the ZMI drop-down
                Pan.manage_addFryingDocumentPanForm,
                Pan.manage_addFryingDocumentPan,
                ),
            icon = "www/fryingpan_icon.gif"
            )	    

            
        product = OFS.misc_.misc_.FriedDocument
        
        registerImages(product, IMAGES, globals())
        registerJSFiles(product, JS_FILES, globals())
        
    except:
        """If you can't register the product, tell someone. 
        
        Zope will sometimes provide you with access to "broken product" and
        a backtrace of what went wrong, but not always; I think that only 
        works for errors caught in your main product module. 
        
        This code provides traceback for anything that happened in 
        registerClass(), assuming you're running Zope in debug mode."""
        import sys, traceback, string
        type, val, tb = sys.exc_info()
        sys.stderr.write(string.join(traceback.format_exception(type, val, tb), ''))
        del type, val, tb
Пример #5
0
    def test_registerJSFiles(self):
        """ test the registerJSFiles() """

        class MyProduct:
            pass

        # test setting a bunch of files
        files = ["large.js", "test.js"]
        files.append(tuple(files))
        registerJSFiles(
            MyProduct, files, rel_path="tests", set_expiry_header=True, slim_if_possible=False, gzip_if_possible=False
        )

        instance = MyProduct()
        for filename in files:
            if isinstance(filename, tuple):
                filename = ",".join(filename)
            static = getattr(instance, filename)
            self.assertTrue(isinstance(static, BetterImageFile))
Пример #6
0
def initialize(context):
    """ Initialize product """
    try:

        context.registerClass(
            Homepage.Homepage,
            constructors=(Homepage.manage_addHomepageForm, Homepage.manage_addHomepage),
            icon="www/rememberyourfriends_icon.gif",
        )

        product = OFS.misc_.misc_.RememberYourFriends

        registerImages(product, WWW_IMAGES, globals(), set_expiry_header=True)
        registerJSFiles(
            product,
            JS_FILES,
            globals(),
            slim_if_possible=True,
            gzip_if_possible=True,
            max_age_production=3600 * 5,
            set_expiry_header=True,
        )
        registerCSSFiles(
            product,
            CSS_FILES,
            globals(),
            slim_if_possible=True,
            gzip_if_possible=True,
            max_age_production=3600 * 5,
            set_expiry_header=True,
            replace_images_with_aliases=True,
        )

        # icons = uniqify(ICON_ASSOCIATIONS.values())
        # for icon in icons:
        #    registerImage(product, icon, epath='icons', Globals=globals())

    except:
        import sys, traceback, string

        type, val, tb = sys.exc_info()
        sys.stderr.write(string.join(traceback.format_exception(type, val, tb), ""))
        del type, val, tb
Пример #7
0
    def test_registerJSFiles__both_slimmed_and_gzipped(self):
        """ test the registerJSFiles() with slim_if_possible=True """
        if js_slimmer is None:
            return

        class MyProduct:
            pass

        # test setting a bunch of files
        files = ["large.js", "test.js"]
        files.append(tuple(files))
        registerJSFiles(
            MyProduct, files, rel_path="tests", set_expiry_header=True, slim_if_possible=True, gzip_if_possible=True
        )

        instance = MyProduct()

        REQUEST = self.app.REQUEST
        RESPONSE = REQUEST.RESPONSE

        for filename in files:
            if isinstance(filename, tuple):
                filename = ",".join(filename)
            static = getattr(instance, filename)
            self.assertTrue(isinstance(static, BetterImageFile))

            # if you just call static.__str__() you're not calling it
            # with a REQUEST that accepts gzip encoding
            REQUEST.set("HTTP_ACCEPT_ENCODING", "gzip")
            bin_rendered = static.index_html(REQUEST, RESPONSE)
            # expect this to be slimmed
            if len(filename.split(",")) > 1:
                content_parts = [open(right_here(x)).read() for x in filename.split(",")]
                expected_content = js_slimmer("\n".join(content_parts))
            else:
                content = open(right_here(filename)).read()
                expected_content = js_slimmer(content)

            rendered = _gzip2ascii(bin_rendered)

            self.assertEqual(rendered.strip(), expected_content.strip())
Пример #8
0
def initialize(context):
    """ Initialize product """
    try:
        context.registerClass(
            Homesite.Homepage,
            constructors=(Homesite.manage_addHomepageForm, Homesite.manage_addHomepage),
            icon="www/homepage_icon.gif",
        )

        context.registerClass(
            News.NewsContainer,
            constructors=(News.manage_addNewsContainerForm, News.manage_addNewsContainer),
            icon="www/newscontainer_icon.gif",
        )

        context.registerClass(
            News.NewsItem,
            constructors=(News.manage_addNewsItemForm, News.manage_addNewsItem, News.manage_suggestNewsItemId),
            icon="www/newsitem_icon.gif",
        )

        context.registerClass(
            Files.FilesContainer,
            constructors=(Files.manage_addFilesContainerForm, Files.manage_addFilesContainer),
            icon="www/filescontainer_icon.gif",
        )

        context.registerClass(
            Files.File, constructors=(Files.manage_addFileForm, Files.manage_addFile), icon="www/file_icon.gif"
        )

        context.registerClass(
            Blogs.BlogContainer,
            constructors=(Blogs.manage_addBlogContainerForm, Blogs.manage_addBlogContainer),
            icon="www/blogcontainer_icon.gif",
        )

        context.registerClass(
            Blogs.BlogItem,
            constructors=(Blogs.manage_addBlogItemForm, Blogs.manage_addBlogItem, Blogs.manage_suggestBlogItemId),
            icon="www/blogitem_icon.png",
        )

        context.registerClass(
            Module.Module,
            constructors=(Module.manage_addModuleForm, Module.manage_addModule),
            icon="www/module_icon.gif",
        )

        context.registerClass(
            UserFolder.FriedCMSUserFolder,
            constructors=(UserFolder.manage_addUserFolder,),
            icon="www/userfolder_icon.gif",
        )

        context.registerClass(
            Page.Page, constructors=(Page.manage_addPageForm, Page.manage_addPage), icon="www/page_icon.gif"
        )

        context.registerClass(
            FAQ.FAQContainer,
            constructors=(FAQ.manage_addFAQContainerForm, FAQ.manage_addFAQContainer),
            icon="www/faqcontainer_icon.gif",
        )

        context.registerClass(FAQ.FAQ, constructors=(FAQ.manage_addFAQForm, FAQ.manage_addFAQ), icon="www/faq_icon.gif")

        product = OFS.misc_.misc_.FriedCMS

        registerImages(product, IMAGES, globals(), rel_path="images")
        registerJSFiles(product, JS_FILES, globals())
        registerCSSFiles(product, CSS_FILES, globals())

        icons = uniqify(ICON_ASSOCIATIONS.values())
        for icon in icons:
            registerImage(product, icon, epath="icons", Globals=globals())

    except:
        import sys, traceback, string

        type, val, tb = sys.exc_info()
        sys.stderr.write(string.join(traceback.format_exception(type, val, tb), ""))
        del type, val, tb
Пример #9
0
    def test_registerJSFiles__one_slimmed_and_gzipped(self):
        """ test the registerJSFiles() with slim_if_possible=True but one
        of the files shouldn't be slimmed because its filename indicates
        that it's already been slimmed/packed/minified. 

        In this test, the big challange is when two js files are combined 
        and one of them should be slimmed, the other one not slimmed.
        """
        if js_slimmer is None:
            return

        class MyProduct:
            pass

        files = ["test.min.js", "test.js"]
        files.append(tuple(files))
        registerJSFiles(
            MyProduct, files, rel_path="tests", set_expiry_header=True, slim_if_possible=True, gzip_if_possible=True
        )

        REQUEST = self.app.REQUEST
        RESPONSE = REQUEST.RESPONSE

        instance = MyProduct()
        for filename in files:
            if isinstance(filename, tuple):
                filename = ",".join(filename)
            static = getattr(instance, filename)
            self.assertTrue(isinstance(static, BetterImageFile))

            # if you just call static.__str__() you're not calling it
            # with a REQUEST that accepts gzip encoding
            REQUEST.set("HTTP_ACCEPT_ENCODING", "gzip")
            bin_rendered = static.index_html(REQUEST, RESPONSE)

            # expect this to be slimmed
            if len(filename.split(",")) > 1:

                content_parts = []
                for filename in filename.split(","):
                    content = open(right_here(filename)).read()
                    if filename.find("min") > -1:
                        content_parts.append(content)
                    else:
                        if js_slimmer is None:
                            content_parts.append(content)
                        else:
                            content_parts.append(js_slimmer(content))

                expected_content = "\n".join(content_parts)
                expected_content = expected_content.strip()

            else:
                if filename.find("min") > -1:
                    expected_content = open(right_here(filename)).read()
                else:
                    content = open(right_here(filename)).read()
                    if js_slimmer is None:
                        expected_content = content
                    else:
                        expected_content = js_slimmer(content)
                expected_content = expected_content.strip()

            rendered = _gzip2ascii(bin_rendered)

            self.assertEqual(rendered.strip(), expected_content)
Пример #10
0
def initialize(context):
    """ Initialize product """
    try:

        context.registerClass(
            Homepage.Homepage,
            constructors=(
                # This is called when
                Homepage.manage_addHomepageForm,
                # someone adds the product
                Homepage.manage_addHomepage),
            icon="www/homepage_icon.gif")

        context.registerClass(
            Homepage.MenuItem,
            constructors=(
                # This is called when
                Homepage.manage_addMenuItemForm,
                # someone adds the product
                Homepage.manage_addMenuItem),
            icon="www/menuitem_icon.gif")

        context.registerClass(
            PageTemplate.PeterbePageTemplate,
            constructors=(
                # This is called when
                PageTemplate.manage_addPeterbePageTemplateForm,
                # someone adds the product
                PageTemplate.manage_addPeterbePageTemplate),
            icon="www/peterbezpt_icon.gif")

        context.registerClass(
            Photo.PeterbePhoto,
            constructors=(
                # This is called when
                Photo.manage_addPeterbePhotoForm,
                # someone adds the product
                Photo.manage_addPeterbePhoto),
            icon="www/peterbephoto_icon.gif")

        context.registerClass(
            BlogContainer.PeterbeBlogContainer,
            constructors=(
                # This is called when
                BlogContainer.manage_addPeterbeBlogContainerForm,
                # someone adds the product
                BlogContainer.manage_addBlogContainer),
            icon="www/blogcontainer_icon.gif")

        context.registerClass(
            BlogItem.PeterbeBlogItem,
            constructors=(
                # This is called when
                BlogItem.manage_addPeterbeBlogItemForm,
                # someone adds the product
                BlogItem.manage_addBlogItem),
            icon="www/blogitem_icon.gif")

        #context.registerClass(
        #    Mp3Record.Mp3Record,
        #    constructors = (
        #        # This is called when
        #        Mp3Record.manage_addPeterbeMp3RecordForm,
        #        # someone adds the product
        #        Mp3Record.manage_addPeterbeMp3Record
        #        ),
        #    icon = "www/mp3record_icon.gif"
        #    )

        #        context.registerClass(
        #            Mp3Records.Mp3RecordContainer,
        #            constructors = (
        #                # This is called when
        #                Mp3Records.manage_addMp3RecordContainerForm,
        #                # someone adds the product
        #                Mp3Records.manage_addMp3RecordContainer
        #                ),
        #            icon = "www/mp3record_icon.gif"
        #            )

        context.registerClass(
            MMS.MMSMessage,
            constructors=(
                # This is called when
                MMS.manage_addMMSMessageForm,
                # someone adds the product
                MMS.manage_addMMSMessage),
            icon="www/mmsmessage_icon.gif")

        context.registerClass(
            WAP.WAPFolder,
            constructors=(
                # This is called when
                WAP.manage_addWAPFolderForm,
                # someone adds the product
                WAP.manage_addWAPFolder),
            icon="www/wapfolder_icon.gif")

        context.registerClass(
            WAP.WAPPageTemplate,
            constructors=(
                # This is called when
                WAP.manage_addWAPPageTemplateForm,
                # someone adds the product
                WAP.manage_addWAPPageTemplate),
            icon="www/wapzpt_icon.gif")

        context.registerClass(
            OutandaboutContainer.PeterbeOutandaboutContainer,
            constructors=(
                OutandaboutContainer.manage_addPeterbeOutandaboutContainerForm,
                OutandaboutContainer.manage_addOutandaboutContainer),
            icon="www/outandaboutcontainer_icon.gif")

        context.registerClass(
            OutandaboutItem.PeterbeOutandaboutItem,
            constructors=(OutandaboutItem.manage_addPeterbeOutandaboutItemForm,
                          OutandaboutItem.manage_addOutandaboutItem),
            icon="www/outandaboutitem_icon.gif")

        #context.registerClass(
        #    GoogleResultIndex.GoogleResultIndex,
        #    constructors = (
        #        # This is called when
        #        GoogleResultIndex.manage_addGoogleResultIndexForm,
        #        # someone adds the product
        #        GoogleResultIndex.manage_addGoogleResultIndex
        #        ),
        #    icon = "www/google_icon.gif"
        #    )

        registerImages(OFS.misc_.misc_.Peterbecom,
                       IMAGES,
                       globals(),
                       set_expiry_header=True,
                       use_rel_path_in_alias=True)

        registerJSFiles(
            OFS.misc_.misc_.Peterbecom,
            JS_FILES,
            globals(),
            slim_if_possible=True,
            gzip_if_possible=False,
            max_age_development=5 * 60,
            set_expiry_header=True,
        )

        registerCSSFiles(
            OFS.misc_.misc_.Peterbecom,
            CSS_FILES,
            globals(),
            slim_if_possible=True,
            gzip_if_possible=False,
            max_age_development=5 * 60,
            max_age_production=24 * 60 * 12,
            set_expiry_header=True,
            replace_images_with_aliases=True,
        )

    except:
        """If you can't register the product, tell someone.

        Zope will sometimes provide you with access to "broken product" and
        a backtrace of what went wrong, but not always; I think that only
        works for errors caught in your main product module.

        This code provides traceback for anything that happened in
        registerClass(), assuming you're running Zope in debug mode."""
        import sys, traceback, string
        type, val, tb = sys.exc_info()
        sys.stderr.write(
            string.join(traceback.format_exception(type, val, tb), ''))
        from zLOG import LOG, ERROR
        LOG('Peterbecom.__init__', ERROR, val, error=sys.exc_info())
        del type, val, tb
Пример #11
0
def initialize(context):
    """ Initialize product """
    try:

        context.registerClass(
          Homepage.Homepage,
            constructors = (
                # This is called when
                Homepage.manage_addHomepageForm,
                # someone adds the product
                Homepage.manage_addHomepage
                ),
            icon = "www/homepage_icon.gif"
            )


        context.registerClass(
            Homepage.MenuItem,
            constructors = (
                # This is called when
                Homepage.manage_addMenuItemForm,
                # someone adds the product
                Homepage.manage_addMenuItem
                ),
            icon = "www/menuitem_icon.gif"
            )

        context.registerClass(
            PageTemplate.PeterbePageTemplate,
            constructors = (
                # This is called when
                PageTemplate.manage_addPeterbePageTemplateForm,
                # someone adds the product
                PageTemplate.manage_addPeterbePageTemplate
                ),
            icon = "www/peterbezpt_icon.gif"
            )

        context.registerClass(
            Photo.PeterbePhoto,
            constructors = (
                # This is called when
                Photo.manage_addPeterbePhotoForm,
                # someone adds the product
                Photo.manage_addPeterbePhoto
                ),
            icon = "www/peterbephoto_icon.gif"
            )

        context.registerClass(
            BlogContainer.PeterbeBlogContainer,
            constructors = (
                # This is called when
                BlogContainer.manage_addPeterbeBlogContainerForm,
                # someone adds the product
                BlogContainer.manage_addBlogContainer
                ),
            icon = "www/blogcontainer_icon.gif"
            )

        context.registerClass(
            BlogItem.PeterbeBlogItem,
            constructors = (
                # This is called when
                BlogItem.manage_addPeterbeBlogItemForm,
                # someone adds the product
                BlogItem.manage_addBlogItem
                ),
            icon = "www/blogitem_icon.gif"
            )


        #context.registerClass(
        #    Mp3Record.Mp3Record,
        #    constructors = (
        #        # This is called when
        #        Mp3Record.manage_addPeterbeMp3RecordForm,
        #        # someone adds the product
        #        Mp3Record.manage_addPeterbeMp3Record
        #        ),
        #    icon = "www/mp3record_icon.gif"
        #    )

#        context.registerClass(
#            Mp3Records.Mp3RecordContainer,
#            constructors = (
#                # This is called when
#                Mp3Records.manage_addMp3RecordContainerForm,
#                # someone adds the product
#                Mp3Records.manage_addMp3RecordContainer
#                ),
#            icon = "www/mp3record_icon.gif"
#            )

        context.registerClass(
            MMS.MMSMessage,
            constructors = (
                # This is called when
                MMS.manage_addMMSMessageForm,
                # someone adds the product
                MMS.manage_addMMSMessage
                ),
            icon = "www/mmsmessage_icon.gif"
            )

        context.registerClass(
            WAP.WAPFolder,
            constructors = (
                # This is called when
                WAP.manage_addWAPFolderForm,
                # someone adds the product
                WAP.manage_addWAPFolder
                ),
            icon = "www/wapfolder_icon.gif"
            )

        context.registerClass(
            WAP.WAPPageTemplate,
            constructors = (
                # This is called when
                WAP.manage_addWAPPageTemplateForm,
                # someone adds the product
                WAP.manage_addWAPPageTemplate
                ),
            icon = "www/wapzpt_icon.gif"
            )

        context.registerClass(
            OutandaboutContainer.PeterbeOutandaboutContainer,
            constructors = (
                OutandaboutContainer.manage_addPeterbeOutandaboutContainerForm,
                OutandaboutContainer.manage_addOutandaboutContainer
            ),
            icon = "www/outandaboutcontainer_icon.gif"
        )

        context.registerClass(
            OutandaboutItem.PeterbeOutandaboutItem,
            constructors = (
                OutandaboutItem.manage_addPeterbeOutandaboutItemForm,
                OutandaboutItem.manage_addOutandaboutItem
            ),
            icon = "www/outandaboutitem_icon.gif"
        )


        #context.registerClass(
        #    GoogleResultIndex.GoogleResultIndex,
        #    constructors = (
        #        # This is called when
        #        GoogleResultIndex.manage_addGoogleResultIndexForm,
        #        # someone adds the product
        #        GoogleResultIndex.manage_addGoogleResultIndex
        #        ),
        #    icon = "www/google_icon.gif"
        #    )


        registerImages(OFS.misc_.misc_.Peterbecom, IMAGES, globals(),
                       set_expiry_header=True,
                       use_rel_path_in_alias=True)

        registerJSFiles(OFS.misc_.misc_.Peterbecom, JS_FILES, globals(),
                        slim_if_possible=True,
                        gzip_if_possible=False,
                        max_age_development=5*60,
                        set_expiry_header=True,
                        )

        registerCSSFiles(OFS.misc_.misc_.Peterbecom, CSS_FILES, globals(),
                         slim_if_possible=True,
                         gzip_if_possible=False,
                         max_age_development=5*60,
                         max_age_production=24*60*12,
                         set_expiry_header=True,
                         replace_images_with_aliases=True,
                         )




    except:
        """If you can't register the product, tell someone.

        Zope will sometimes provide you with access to "broken product" and
        a backtrace of what went wrong, but not always; I think that only
        works for errors caught in your main product module.

        This code provides traceback for anything that happened in
        registerClass(), assuming you're running Zope in debug mode."""
        import sys, traceback, string
        type, val, tb = sys.exc_info()
        sys.stderr.write(string.join(traceback.format_exception(type, val, tb), ''))
        from zLOG import LOG, ERROR
        LOG('Peterbecom.__init__', ERROR, val, error=sys.exc_info())
        del type, val, tb