Guest User

Untitled

a guest
Jul 23rd, 2018
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.27 KB | None | 0 0
  1. from Products.CMFCore.utils import getToolByName
  2.  
  3. from openc.objectsfromlinks.html_to_embed import html_with_embeds
  4.  
  5. from StringIO import StringIO
  6. from types import InstanceType
  7.  
  8. def registerTransform(self, out, name, module):
  9. transforms = getToolByName(self, 'portal_transforms')
  10. transforms.manage_addTransform(name, module)
  11. print >> out, "Registered transform", name
  12.  
  13. def unregisterTransform(self, out, name):
  14. transforms = getToolByName(self, 'portal_transforms')
  15. try:
  16. transforms.unregisterTransform(name)
  17. print >> out, "Removed transform", name
  18. except AttributeError:
  19. print >> out, "Could not remove transform", name, "(not found)"
  20.  
  21. def registerMimeType(self, out, mimetype):
  22. if type(mimetype) != InstanceType:
  23. mimetype = mimetype()
  24. mimetypes_registry = getToolByName(self, 'mimetypes_registry')
  25. mimetypes_registry.register(mimetype)
  26. print >> out, "Registered mimetype", mimetype
  27.  
  28. def unregisterMimeType(self, out, mimetype):
  29. if type(mimetype) != InstanceType:
  30. mimetype = mimetype()
  31. mimetypes_registry = getToolByName(self, 'mimetypes_registry')
  32. mimetypes_registry.unregister(mimetype)
  33. print >> out, "Unregistered mimetype", mimetype
  34.  
  35. def _safe_transform_params(transform, **kwargs):
  36. params = dict([(a, transform.get_parameter_value(a)) for a in transform.get_parameters()])
  37. for k,v in kwargs.items():
  38. params[k] = v
  39. for k in list(params):
  40. if isinstance(params[k], dict):
  41. v = params[k]
  42. params[k+'_key'] = v.keys()
  43. params[k+'_value'] = [str(s) for s in v.values()]
  44. del params[k]
  45. transform.set_parameters(**params)
  46. transform._p_changed = True
  47.  
  48. new_params = dict([(a, transform.get_parameter_value(a)) for a in transform.get_parameters()])
  49. for k in list(new_params):
  50. if isinstance(new_params[k], dict):
  51. v = new_params[k]
  52. new_params[k+'_key'] = v.keys()
  53. new_params[k+'_value'] = [str(s) for s in v.values()]
  54. del new_params[k]
  55.  
  56. for k in params.keys():
  57. things_royally_screwed_up = False
  58. try:
  59. if not len(params[k]) == len(new_params[k]):
  60. things_royally_screwed_up = True
  61. except TypeError:
  62. if not params[k] == new_params[k]:
  63. things_royally_screwed_up = True
  64. if things_royally_screwed_up:
  65. raise "Manipulaton of a portal transform would result in loss of configuration data, aborting"
  66.  
  67. def install(self):
  68.  
  69. out = StringIO()
  70.  
  71. print >> out, "Installing text/web-intelligent mimetype and transform"
  72.  
  73. registerMimeType(self, out, html_with_embeds)
  74. registerTransform(self, out, 'html_to_embed', 'openc.objectsfromlinks.html_to_embed')
  75. shtml = self.portal_transforms.safe_html
  76. _safe_transform_params(shtml, inputs=list(html_with_embeds.mimetypes))
  77. self.portal_transforms.safe_html._p_changed = True
  78. return out.getvalue()
  79.  
  80. def uninstall(self):
  81.  
  82. out = StringIO()
  83. _safe_transform_params(self.portal_transforms.safe_html, inputs=['text/html'])
  84. unregisterTransform(self, out, 'html_to_embed')
  85. unregisterMimeType(self, out, html_with_embeds)
  86.  
  87. return out.getvalue()
Add Comment
Please, Sign In to add comment