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