def backlink_handler(field, event): try: wicked = utils.getWicked(field, event.instance, event) except ComponentLookupError: # no adapter registered for this type currently # @@ This might be handle better by redispatch return if not event.value: return value = event.value value_str = value try: # this block handle conversions for file uploads and # atapi.BaseUnit or any other not quite plain text "value objects" value_str = getMultiAdapter((value, field), IValueToString) except ComponentLookupError: pass found = wicked.findall(value_str) if not len(found): return new_links = [wicked.removeParens(link) for link in found] wicked.manageLinks(new_links)
def do_wicked(self, newcontent, title, section): try: wicked = getWicked(self.context.getField('text'), self.context) wicked.section=section wicked.manageLink(newcontent, normalize(title)) except ComponentLookupError: pass
def handle_at_newcontent(context, event): field = context.Schema()[event.section] wicked = getWicked(field, context, event) wicked.manageLink(event.newcontent, event.title) portal_status_message = quote('"%s" has been created' % event.title) url = event.newcontent.absolute_url() restr = "%s/edit?title=%s&portal_status_message=%s" % ( url, quote(event.title), portal_status_message) event.request.RESPONSE.redirect(restr)
def handle_at_newcontent(context, event): field = context.Schema()[event.section] wicked = getWicked(field, context, event) wicked.manageLink(event.newcontent, event.title) portal_status_message=quote('"%s" has been created' % event.title) url = event.newcontent.absolute_url() restr = "%s/edit?title=%s&portal_status_message=%s" %(url, quote(event.title), portal_status_message) event.request.RESPONSE.redirect(restr)
def at_handle_target_deletion(ref, event): """ Invalidate any pointer before object deletion """ target = ref.getTargetObject() for field in ISchema(target).fields(): if IAmWickedField.providedBy(field): wicked = utils.getWicked(field, target) wicked.unlink(ref.sourceUID) break
def afterSetUp(self): """ sets the body of page1 to be a wicked link of the id of page2 """ super(TestLinkCache, self).afterSetUp() field = self.page1.getField(self.wicked_field) field.set(self.page1, "((%s))" % self.page2.Title()) self.field = field self.filter = utils.getWicked(field, self.page1) self.wicked_ccm = self.filter.cache self.wicked_ccm.name=field.getName()
def at_handle_target_moved(obj, event): """ when a target of a link is moved, or renamed we need to notify any objects that may be caching pointers """ #@@ add more tests if IObjectRemovedEvent.providedBy(event): return refs = obj.getRefs(relationship=config.BACKLINK_RELATIONSHIP) path = '/'.join(obj.getPhysicalPath()) for target in refs: for field in ISchema(target).fields(): if IAmWickedField.providedBy(field): wicked = utils.getWicked(field, target) uid = IUID(obj) data = dict(path=path, icon=obj.getIcon(), uid=uid) wicked.cache.reset(uid, [data])
def at_handle_target_moved(obj, event): """ when a target of a link is moved, or renamed we need to notify any objects that may be caching pointers """ #@@ add more tests if IObjectRemovedEvent.providedBy(event): return refs=obj.getRefs(relationship=config.BACKLINK_RELATIONSHIP) path = '/'.join(obj.getPhysicalPath()) for target in refs: for field in ISchema(target).fields(): if IAmWickedField.providedBy(field): wicked = utils.getWicked(field, target) uid = IUID(obj) data = dict(path=path, icon=obj.getIcon(), uid=uid) wicked.cache.reset(uid, [data])