Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from Products.CMFCore.utils import getToolByName
- from openc.objectsfromlinks.html_to_embed import html_with_embeds
- from StringIO import StringIO
- from types import InstanceType
- def registerTransform(self, out, name, module):
- transforms = getToolByName(self, 'portal_transforms')
- transforms.manage_addTransform(name, module)
- print >> out, "Registered transform", name
- def unregisterTransform(self, out, name):
- transforms = getToolByName(self, 'portal_transforms')
- try:
- transforms.unregisterTransform(name)
- print >> out, "Removed transform", name
- except AttributeError:
- print >> out, "Could not remove transform", name, "(not found)"
- def registerMimeType(self, out, mimetype):
- if type(mimetype) != InstanceType:
- mimetype = mimetype()
- mimetypes_registry = getToolByName(self, 'mimetypes_registry')
- mimetypes_registry.register(mimetype)
- print >> out, "Registered mimetype", mimetype
- def unregisterMimeType(self, out, mimetype):
- if type(mimetype) != InstanceType:
- mimetype = mimetype()
- mimetypes_registry = getToolByName(self, 'mimetypes_registry')
- mimetypes_registry.unregister(mimetype)
- print >> out, "Unregistered mimetype", mimetype
- def _safe_transform_params(transform, **kwargs):
- params = dict([(a, transform.get_parameter_value(a)) for a in transform.get_parameters()])
- for k,v in kwargs.items():
- params[k] = v
- for k in list(params):
- if isinstance(params[k], dict):
- v = params[k]
- params[k+'_key'] = v.keys()
- params[k+'_value'] = [str(s) for s in v.values()]
- del params[k]
- transform.set_parameters(**params)
- transform._p_changed = True
- new_params = dict([(a, transform.get_parameter_value(a)) for a in transform.get_parameters()])
- for k in list(new_params):
- if isinstance(new_params[k], dict):
- v = new_params[k]
- new_params[k+'_key'] = v.keys()
- new_params[k+'_value'] = [str(s) for s in v.values()]
- del new_params[k]
- for k in params.keys():
- things_royally_screwed_up = False
- try:
- if not len(params[k]) == len(new_params[k]):
- things_royally_screwed_up = True
- except TypeError:
- if not params[k] == new_params[k]:
- things_royally_screwed_up = True
- if things_royally_screwed_up:
- raise "Manipulaton of a portal transform would result in loss of configuration data, aborting"
- def install(self):
- out = StringIO()
- print >> out, "Installing text/web-intelligent mimetype and transform"
- registerMimeType(self, out, html_with_embeds)
- registerTransform(self, out, 'html_to_embed', 'openc.objectsfromlinks.html_to_embed')
- shtml = self.portal_transforms.safe_html
- _safe_transform_params(shtml, inputs=list(html_with_embeds.mimetypes))
- self.portal_transforms.safe_html._p_changed = True
- return out.getvalue()
- def uninstall(self):
- out = StringIO()
- _safe_transform_params(self.portal_transforms.safe_html, inputs=['text/html'])
- unregisterTransform(self, out, 'html_to_embed')
- unregisterMimeType(self, out, html_with_embeds)
- return out.getvalue()
Add Comment
Please, Sign In to add comment