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
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)
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())
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)
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))
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
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
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
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
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