Changeset 3223 in products for quintagroup.seoptimizer/trunk/quintagroup/seoptimizer
- Timestamp:
- May 30, 2011 8:48:04 AM (13 years ago)
- Location:
- quintagroup.seoptimizer/trunk/quintagroup/seoptimizer
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
quintagroup.seoptimizer/trunk/quintagroup/seoptimizer/profiles.zcml
r2139 r3223 38 38 profile="quintagroup.seoptimizer:default" /> 39 39 40 <genericsetup:upgradeStep 41 title="Upgrade quintagroup.seoptimizer" 42 description="Unescape quintagroup.seoptimizer title and comment properties" 43 destination="4.0.5" 44 handler=".upgrades.unescapeOldTitle" 45 profile="quintagroup.seoptimizer:default" /> 46 40 47 </configure> -
quintagroup.seoptimizer/trunk/quintagroup/seoptimizer/profiles/default/metadata.xml
r2970 r3223 1 1 <?xml version="1.0"?> 2 2 <metadata> 3 <version>4.0. 3</version>3 <version>4.0.5</version> 4 4 </metadata> -
quintagroup.seoptimizer/trunk/quintagroup/seoptimizer/tests/testUtils.py
r3189 r3223 1 # -*- coding: utf8 -*- 1 2 from unittest import TestSuite, makeSuite, TestCase 2 3 from quintagroup.seoptimizer.util import unescape … … 6 7 7 8 def test_unicode_str_unescaping(self): 8 self.assertEqual(unescape( u"&&-/["), u"&&-/[")9 self.assertEqual(unescape("&&-/["), "&&-/[") 9 10 10 11 def test_str_unescaping(self): 11 self.assertEqual(unescape("&&-/["), u"&&-/[") 12 self.assertEqual(unescape("&&-/["), "&&-/[") 13 14 def test_entity_unicode_unescaping(self): 15 self.assertEqual(unescape(u"&&ї".encode('utf-8')), 16 u"&&ї".encode('utf-8')) 12 17 13 18 def test_hex_unescaping(self): 14 self.assertEqual(unescape('['), u'[')19 self.assertEqual(unescape('['), '[') 15 20 16 21 def test_simple_text_unescaping(self): 17 self.assertEqual(unescape("Simple text."), u"Simple text.")22 self.assertEqual(unescape("Simple text."), "Simple text.") 18 23 19 24 def test_entity_hex_unescaping(self): 20 self.assertEqual(unescape('&#x5B;'), u'[')25 self.assertEqual(unescape('&#x5B;'), '[') 21 26 22 27 def test_intity_dec_unescaping(self): 23 self.assertEqual(unescape('&#91;'), u'[')28 self.assertEqual(unescape('&#91;'), '[') 24 29 25 30 def test_entity_dec_hex_unescaping(self): 26 self.assertEqual(unescape('&#38;#x5B;'), u'&#x5B;')31 self.assertEqual(unescape('&#38;#x5B;'), '&#x5B;') 27 32 28 33 def test_fake_entity_unescaping(self): 29 self.assertEqual(unescape("&asd;"), u"&asd;") 34 self.assertEqual(unescape("&asd;"), "&asd;") 35 36 def test_aentity_unescaping(self): 37 self.assertEqual(unescape("—").encode('utf-8'), 38 u"—".encode('utf-8')) 30 39 31 40 -
quintagroup.seoptimizer/trunk/quintagroup/seoptimizer/upgrades.py
r3141 r3223 2 2 from zope.component import queryMultiAdapter 3 3 4 from Products.CMFCore.utils import getToolByName 5 from Products.CMFPlone.utils import getSiteEncoding, safe_unicode 6 7 from quintagroup.seoptimizer.browser.seo_configlet import ISEOConfigletSchema 8 from quintagroup.seoptimizer.util import unescape 4 9 from quintagroup.canonicalpath.interfaces import ICanonicalLink 5 10 from quintagroup.canonicalpath.adapters import PROPERTY_LINK … … 146 151 removeSkin(plone_tools) 147 152 migrateCanonical(plone_tools) 153 154 155 def unescapeOldTitle(setuptool): 156 """ Upgrade quintagroup.seoptimizer title and comments properties. 157 """ 158 portal = getToolByName(setuptool, "portal_url").getPortalObject() 159 types = ISEOConfigletSchema(portal).types_seo_enabled 160 161 catalog = getToolByName(portal, "portal_catalog") 162 brains = catalog(portal_type=types) 163 164 for b in brains: 165 obj = b.getObject() 166 obj_enc = getSiteEncoding(obj) 167 168 if obj.hasProperty("qSEO_title"): 169 uni_qSEO_title = safe_unicode(obj.qSEO_title, encoding=obj_enc) 170 fixed_title = unescape(uni_qSEO_title).encode(obj_enc) 171 obj._updateProperty("qSEO_title", fixed_title) 172 173 if obj.hasProperty("qSEO_html_comment"): 174 uni_qSEO_html_comment = safe_unicode(obj.qSEO_html_comment, 175 encoding=obj_enc) 176 fixed_comment = unescape(uni_qSEO_html_comment).encode(obj_enc) 177 obj._updateProperty("qSEO_html_comment", fixed_comment) -
quintagroup.seoptimizer/trunk/quintagroup/seoptimizer/util.py
r3189 r3223 52 52 if m.group("ent"): 53 53 try: 54 return entitydefs[m.group("ent")]54 return unescape(entitydefs[m.group("ent")]) 55 55 except KeyError: 56 56 return m.group(0) … … 66 66 67 67 def unescape(s): 68 result = expr.sub(_group_unescape, s) 69 70 if isinstance(s, unicode): 71 return result 72 else: 73 return unicode(result) 68 return expr.sub(_group_unescape, s)
Note: See TracChangeset
for help on using the changeset viewer.