Exemple #1
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
Exemple #2
0
    def test_registerCSSFiles__one_slimmed_and_gzipped(self):
        """ test the registerCSSFiles() 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 css_slimmer is None:
            return

        class MyProduct:
            pass

        files = ["test-min.css", "test.css"]
        files.append(tuple(files))
        registerCSSFiles(
            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:
                        content_parts.append(css_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:
                    expected_content = css_slimmer(open(right_here(filename)).read())
                expected_content = expected_content.strip()

            rendered = _gzip2ascii(bin_rendered)

            self.assertEqual(rendered.strip(), expected_content)
Exemple #3
0
    def test_registerCSSFiles__both_slimmed_and_gzipped(self):
        """ test the registerCSSFiles() with slim_if_possible=True """
        if css_slimmer is None:
            return

        class MyProduct:
            pass

        # test setting a bunch of files
        files = ["large.css", "test.css"]
        files.append(tuple(files))
        registerCSSFiles(
            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)
            rendered = _gzip2ascii(bin_rendered).strip()

            # expect this to be slimmed
            if len(filename.split(",")) > 1:
                content_parts = [open(right_here(x)).read() for x in filename.split(",")]

                if css_slimmer is None:
                    expected_content = "\n".join(content_parts)
                else:
                    expected_content = "\n".join([css_slimmer(x) for x in content_parts])
            else:
                content = open(right_here(filename)).read()
                if css_slimmer is None:
                    expected_content = content
                else:
                    expected_content = css_slimmer(content)

            self.assertEqual(rendered.strip(), expected_content.strip())
Exemple #4
0
    def test_registerCSSFiles__one_slimmed(self):
        """ test the registerCSSFiles() 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 css_slimmer is None:
            return

        class MyProduct:
            pass

        files = ["test-min.css", "test.css"]
        files.append(tuple(files))
        registerCSSFiles(
            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 partially
            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:
                        content_parts.append(css_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:
                    expected_content = css_slimmer(open(right_here(filename)).read())
                expected_content = expected_content.strip()

            self.assertEqual(rendered.strip(), expected_content)
Exemple #5
0
    def test_registerCSSFiles_basic(self):
        """ test the registerCSSFiles() """

        class MyProduct:
            pass

        # test setting a bunch of files
        files = ["large.css", "test.css"]
        files.append(tuple(files))
        registerCSSFiles(
            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))
Exemple #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
Exemple #7
0
    def test_registerCSSFiles__both_slimmed(self):
        """ test the registerCSSFiles() with slim_if_possible=True """
        if css_slimmer is None:
            return
        try:

            class MyProduct:
                pass

            # test setting a bunch of files
            files = ["large.css", "test.css"]
            files.append(tuple(files))
            registerCSSFiles(
                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 = "\n".join([css_slimmer(x) for x in content_parts])
                else:
                    expected_content = css_slimmer(open(right_here(filename)).read())
                self.assertEqual(rendered.strip(), expected_content.strip())
        except ImportError:
            pass
Exemple #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
Exemple #9
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
Exemple #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