Changeset 683
- Timestamp:
- 12/05/06 09:28:23
- Files:
-
- qPloneResolveUID/trunk/config.py (modified) (1 diff)
- qPloneResolveUID/trunk/transforms/ruid_to_url.py (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
qPloneResolveUID/trunk/config.py
r682 r683 1 1 DOCUMENT_DEFAULT_OUTPUT_TYPE = "text/x-html-safe" 2 2 REQUIRED_TRANSFORM = ["ruid_to_url"] 3 4 _ABSOLUTE_REL_URL=r'(?P<url>(?P<protocol>http|https|ftp|mailto|file|about[:/]+?)?[a-zA-Z0-9_\@\.\,\?\!\/\:\;\-\#\~\=\&\%%\+\\]+)' 5 6 TAG_PATTERN = r'(\<(img|a)[^>]*>)' 7 UID_PATTERN = r'[^"]*resolveuid/(?P<uid>[^/"#? ]*)' qPloneResolveUID/trunk/transforms/ruid_to_url.py
r682 r683 8 8 from Products.PortalTransforms.interfaces import itransform 9 9 10 import string 11 letters = string.letters 12 _ABSOLUTE_REL_URL=r'(?P<url>(?P<protocol>http|https|ftp|mailto|file|about[:/]+?)?[%s0-9_\@\.\,\?\!\/\:\;\-\#\~\=\&\%%\+\\]+)' % letters 13 10 from Products.qPloneResolveUID.config import * 14 11 15 12 class ruid_to_url: … … 25 22 if name: 26 23 self.__name__ = name 27 self. ruid_regexp = re.compile("(?P<tag>\<(?P<tag_name>a|img)[^>]*(?P<url_attr>href|src)\s*=\s*[\'|\"]?%s[\'|\"]?[\s|\>|\/])" \28 % _ABSOLUTE_REL_URL,re.I|re.S)24 self.tag_regexp = re.compile(TAG_PATTERN ,re.I|re.S) 25 self.ruid_regexp = re.compile(UID_PATTERN ,re.I|re.S) 29 26 30 27 def name(self): 31 28 return self.__name__ 32 29 33 30 def find_ruid(self, data): 34 tags_url = [{m.group('tag'):m.group('url').replace('\\','/')}\ 35 for m in self.ruid_regexp.finditer(data)] 36 tags_ruid = [tu for tu in tags_url if tu.values()[0].startswith('resolveuid')] 31 tags_ruid = [] 37 32 unique_ruid = [] 33 for m in self.tag_regexp.finditer(data): 34 ruid = re.search(self.ruid_regexp, m.group(0)) 35 if ruid: 36 tags_ruid.append({m.group(0):ruid.group('uid')}) 38 37 [unique_ruid.append(tu.values()[0]) for tu in tags_ruid if tu.values()[0] not in unique_ruid] 39 38 return tags_ruid, unique_ruid … … 43 42 rc = getToolByName(portal, 'reference_catalog') 44 43 pu = getToolByName(portal, 'portal_url') 45 for ruid in unique_ruid: 46 clean_uid, uid = ruid.split('/')[1], '/'.join(ruid.split('/')[1:]) 44 for uid in unique_ruid: 47 45 try: 48 obj = rc.lookupObject( clean_uid)49 ruid_url[ ruid] = uid.replace(clean_uid, pu.getRelativeUrl(obj))46 obj = rc.lookupObject(uid) 47 ruid_url[uid] = pu.getRelativeUrl(obj) 50 48 except: 51 ruid_url[ ruid] = ruid49 ruid_url[uid] = uid 52 50 return ruid_url 53 51 … … 58 56 ruid_url = self.mapRUID_URL(unique_ruid, kwargs['context']) 59 57 for tag_ruid in tags_ruid: 60 t ag, ruid = tag_ruid.items()[0]61 text = text.replace(t ag, tag.replace(ruid, ruid_url[ruid]))58 t, uid = tag_ruid.items()[0] 59 text = text.replace(t, t.replace('resolveuid/'+uid, ruid_url[uid])) 62 60 63 61 data.setData(text)
