Changeset 1958 in products for quintagroup.seoptimizer/branches/refactoring2.3.0/quintagroup
- Timestamp:
- Mar 19, 2010 2:59:57 PM (14 years ago)
- Location:
- quintagroup.seoptimizer/branches/refactoring2.3.0/quintagroup/seoptimizer
- Files:
-
- 20 edited
Legend:
- Unmodified
- Added
- Removed
-
quintagroup.seoptimizer/branches/refactoring2.3.0/quintagroup/seoptimizer/adapters.py
r1932 r1958 1 import re , commands1 import re 2 2 3 from zope.component import adapts4 3 from zope.interface import implements 5 4 from zope.component import queryAdapter 6 5 from zope.component import queryMultiAdapter 7 8 from Acquisition import aq_inner9 from OFS.interfaces import IPropertyManager10 from Products.CMFCore.utils import getToolByName11 6 12 7 from quintagroup.seoptimizer.util import SortedDict … … 67 62 metadata_name[mt] = METADATA_MAPS[mt] 68 63 return metadata_name 69 -
quintagroup.seoptimizer/branches/refactoring2.3.0/quintagroup/seoptimizer/browser/keywords.py
r1918 r1958 1 import urllib, re, os, commands2 from xml.dom import minidom,Node1 import re, commands 2 from xml.dom import Node 3 3 4 4 from zope.interface import implements … … 51 51 mapping={'result':'\n'.join(result)}), 52 52 context=self.context) 53 54 def walkTextNodes(self, parent, page_words=[]):55 for node in parent.childNodes:56 if node.nodeType == Node.ELEMENT_NODE:57 self.walkTextNodes(node, page_words)58 elif node.nodeType == Node.TEXT_NODE:59 value = node.nodeValue60 if value is not None:61 page_words.extend(map(lambda x: x.lower(), value.split()))62 63 def strip_tags(self, in_text):64 s_list = list(in_text)65 i,j = 0,066 67 while i < len(s_list):68 if s_list[i] == '<':69 while s_list[i] != '>':70 # pop everything from the the left-angle bracket until the right-angle bracket71 s_list.pop(i)72 73 # pops the right-angle bracket, too74 s_list.pop(i)75 else:76 i=i+177 78 # convert the list back into text79 join_char=''80 return join_char.join(s_list) -
quintagroup.seoptimizer/branches/refactoring2.3.0/quintagroup/seoptimizer/browser/seo_configlet.py
r1904 r1958 3 3 from zope.interface import implements 4 4 from zope.component import adapts 5 from zope.schema.vocabulary import SimpleTerm 6 from zope.schema.vocabulary import SimpleVocabulary 7 from zope.schema import Bool, Text, Choice, Tuple, List 5 from zope.schema import Bool, Choice, Tuple, List 8 6 from zope.schema import SourceText 9 from zope.app.form.browser import RadioWidget10 7 11 from zope.formlib.form import FormFields12 8 from zope.app.component.hooks import getSite 13 9 from zope.app.form.browser import TextAreaWidget -
quintagroup.seoptimizer/branches/refactoring2.3.0/quintagroup/seoptimizer/browser/viewlets.py
r1931 r1958 9 9 10 10 from Products.CMFPlone.utils import safe_unicode, getSiteEncoding 11 from Products.CMFCore.utils import getToolByName12 11 13 12 from quintagroup.seoptimizer.util import SortedDict -
quintagroup.seoptimizer/branches/refactoring2.3.0/quintagroup/seoptimizer/browser/views.py
r1935 r1958 1 from sets import Set2 1 from time import time 3 from DateTime import DateTime 2 from DateTime import DateTime 4 3 from Acquisition import aq_inner 5 4 from zope.component import queryAdapter … … 8 7 9 8 from plone.memoize import view, ram 10 from plone.app.controlpanel.form import ControlPanelView11 9 12 10 from Products.Five.browser import BrowserView 11 from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile 13 12 from Products.CMFPlone.utils import getSiteEncoding 14 from Products.CMFCore.utils import getToolByName15 from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile16 from Products.CMFPlone import PloneMessageFactory as pmf17 13 18 14 from quintagroup.canonicalpath.interfaces import ICanonicalLink 19 15 from quintagroup.canonicalpath.adapters import PROPERTY_LINK as CANONICAL_PROPERTY 20 16 21 from quintagroup.seoptimizer import interfaces22 17 from quintagroup.seoptimizer.browser.seo_configlet import ISEOConfigletSchema 23 18 from quintagroup.seoptimizer import SeoptimizerMessageFactory as _ … … 97 92 def seo_customMetaTags( self ): 98 93 """Returned seo custom metatags from default_custom_metatags property in seo_properties 99 (global seo custom metatags) with update from seo custom metatags properties in context (local seo custom metatags). 94 (global seo custom metatags) with update from seo custom metatags properties 95 in context (local seo custom metatags). 100 96 """ 101 97 glob, loc = self.seo_globalCustomMetaTags(), self.seo_localCustomMetaTags() … … 108 104 def seo_globalWithoutLocalCustomMetaTags( self ): 109 105 """Returned seo custom metatags from default_custom_metatags property in seo_properties 110 (global seo custom metatags) without seo custom metatags from properties in context (local seo custom metatags). 106 (global seo custom metatags) without seo custom metatags from properties 107 in context (local seo custom metatags). 111 108 """ 112 109 glob, loc = self.seo_globalCustomMetaTags(), self.seo_localCustomMetaTags() … … 156 153 """ 157 154 """ 158 return condition and first or second 155 return condition and first or second 159 156 160 157 def validateSEOProperty(self, property, value): … … 166 163 """ Add a new property. 167 164 168 Sets a new property with the given id, value and type or changes it.169 """ 170 context = aq_inner(self.context) 165 Sets a new property with the given id, value and type or changes it. 166 """ 167 context = aq_inner(self.context) 171 168 state = self.validateSEOProperty(property, value) 172 169 if not state: … … 254 251 """ Update seo custom metatags properties, if enabled checkbox override or delete properties. 255 252 256 Change object properties by passing either a mapping object257 of name:value pairs {'foo':6} or passing name=value parameters.253 Change object properties by passing either a mapping object 254 of name:value pairs {'foo':6} or passing name=value parameters. 258 255 """ 259 256 context = aq_inner(self.context) … … 282 279 283 280 def __call__( self ): 284 """ Perform the update seo properties and redirect if necessary, or render the page Call method. 281 """ Perform the update seo properties and redirect if necessary, 282 or render the page Call method. 285 283 """ 286 284 context = aq_inner(self.context) -
quintagroup.seoptimizer/branches/refactoring2.3.0/quintagroup/seoptimizer/config.py
r1924 r1958 1 1 PROJECT_NAME = 'quintagroup.seoptimizer' 2 3 GLOBALS = globals()4 5 PROPERTY_SHEET = 'seo_properties'6 SHEET_TITLE = 'SEO Properties'7 8 STOP_WORDS = ['a', 'an', 'amp', 'and', 'are', 'arial', 'as', 'at', 'be', 'but',9 'by', 'can', 'com', 'do', 'font', 'for', 'from', 'gif', 'had', 'has',10 'have', 'he', 'helvetica', 'her', 'his', 'how', 'href', 'i', 'if', 'in',11 'is', 'it', 'javascript', 'jpg', 'made', 'net', 'of', 'on', 'or', 'org',12 'our', 'sans', 'see', 'serif', 'she', 'that', 'the', 'this', 'to', 'us',13 'we', 'with', 'you', 'your']14 15 DEFAULT_CUSTOM_METATAGS = [] -
quintagroup.seoptimizer/branches/refactoring2.3.0/quintagroup/seoptimizer/interfaces.py
r1932 r1958 1 1 from zope.interface import Interface 2 from quintagroup.canonicalpath.interfaces import ICanonicalPath3 2 4 3 class IMetaKeywords(Interface): -
quintagroup.seoptimizer/branches/refactoring2.3.0/quintagroup/seoptimizer/listMetaTags.py
r1780 r1958 9 9 if not IPloneSEOLayer.providedBy(self.REQUEST): 10 10 return originalListMetaTags(self, context) 11 12 11 return {} 13 12 -
quintagroup.seoptimizer/branches/refactoring2.3.0/quintagroup/seoptimizer/setuphandlers.py
r1925 r1958 20 20 logger.log(logging.INFO, "Deleted \"SEO Properties\" action for %s type." % ptype.id) 21 21 22 def removeConfiglet(site , conf_id):22 def removeConfiglet(site): 23 23 """ Remove configlet. 24 24 """ 25 conf_id = 'quintagroup.seoptimizer' 25 26 controlpanel_tool = getToolByName(site, 'portal_controlpanel') 26 27 if controlpanel_tool: … … 29 30 30 31 def removeBrowserLayer(site): 31 """ Remove configlet.32 """ Remove browser layer. 32 33 """ 33 34 name="qSEOptimizer" … … 46 47 site = context.getSite() 47 48 removeActions(site) 48 removeConfiglet(site , 'quintagroup.seoptimizer')49 removeConfiglet(site) 49 50 removeBrowserLayer(site) -
quintagroup.seoptimizer/branches/refactoring2.3.0/quintagroup/seoptimizer/tests/base.py
r1938 r1958 19 19 from zope.app.cache.interfaces.ram import IRAMCache 20 20 21 from AccessControl.SecurityManagement import newSecurityManager22 23 21 from Products.Five import zcml 24 22 from Products.Five import fiveconfigure … … 28 26 from Products.CMFCore.utils import getToolByName 29 27 30 from Products.PloneTestCase.layer import onsetup,PloneSite28 from Products.PloneTestCase.layer import PloneSite 31 29 from Products.PloneTestCase import PloneTestCase as ptc 32 30 from Products.PloneTestCase import setup as ptc_setup 33 31 34 32 from Products.PloneTestCase.PloneTestCase import portal_owner 35 from Products.PloneTestCase.PloneTestCase import default_user36 33 from Products.PloneTestCase.PloneTestCase import default_password 37 34 38 from quintagroup.seoptimizer.config import *35 from quintagroup.seoptimizer.config import PROJECT_NAME 39 36 40 37 ptc.setupPloneSite() … … 49 46 import quintagroup.seoptimizer 50 47 zcml.load_config('configure.zcml', quintagroup.seoptimizer) 51 #zcml.load_config('overrides.zcml', quintagroup.seoptimizer)52 48 fiveconfigure.debug_mode = False 53 49 ztc.installPackage(PROJECT_NAME) -
quintagroup.seoptimizer/branches/refactoring2.3.0/quintagroup/seoptimizer/tests/testBugs.py
r1894 r1958 1 import urllib , re1 import urllib 2 2 from cStringIO import StringIO 3 3 from base import * -
quintagroup.seoptimizer/branches/refactoring2.3.0/quintagroup/seoptimizer/tests/testCanonicalURL.py
r1936 r1958 1 import re2 from zope.interface import alsoProvides3 from zope.component import queryAdapter4 from zope.component import provideAdapter5 from zope.component import queryMultiAdapter6 from plone.indexer.decorator import indexer7 8 from Products.CMFCore.interfaces import IContentish9 from Products.Archetypes.interfaces import IBaseContent10 11 1 from quintagroup.canonicalpath.interfaces import ICanonicalLink 12 from quintagroup.canonicalpath.adapters import PROPERTY_LINK as CANONICAL_PROPERTY13 from quintagroup.seoptimizer.browser.interfaces import IPloneSEOLayer14 # from quintagroup.seoptimizer.interfaces import ISEOCanonicalPath15 2 from base import * 16 3 … … 26 13 self.curl = re.compile('<link\srel\s*=\s*"canonical"\s+' \ 27 14 '[^>]*href\s*=\s*\"([^\"]*)\"[^>]*>', re.S|re.M) 28 29 15 30 16 def test_CanonicalURL(self): … … 90 76 self.assertTrue("wrong canonical url" in html, 91 77 "Canonical url not validated") 92 78 93 79 def test_delCanonical(self): 94 80 newcanonical = '/new_canonical' … … 104 90 mydoc_canonical = ICanonicalLink(self.mydoc).canonical_link 105 91 self.assertTrue(mydoc_canonical == self.mydoc.absolute_url(), 106 "Steel customized canonical url after remove customization") 107 92 "Steel customized canonical url after remove customization") 93 108 94 109 95 def test_suite(): -
quintagroup.seoptimizer/branches/refactoring2.3.0/quintagroup/seoptimizer/tests/testConfiglet.py
r1907 r1958 1 import re2 1 from base import * 3 2 -
quintagroup.seoptimizer/branches/refactoring2.3.0/quintagroup/seoptimizer/tests/testContextForm.py
r1908 r1958 1 import urllib , re1 import urllib 2 2 from cStringIO import StringIO 3 3 from base import * -
quintagroup.seoptimizer/branches/refactoring2.3.0/quintagroup/seoptimizer/tests/testExposeDCMetaTags.py
r1877 r1958 1 import re,string1 import string 2 2 from DateTime import DateTime 3 3 from base import * … … 35 35 m = re.match(METATAG % "description", self.html, re.S|re.M) 36 36 self.assert_(m, 'No "description" meta tag when expose DC meta tags is Off') 37 37 38 38 def test_descriptionInPropertyOn(self): 39 39 self.sp.manage_changeProperties(exposeDCMetaTags = True) … … 42 42 m = re.match(METATAG % "description", self.html, re.S|re.M) 43 43 self.assert_(m, 'No "description" meta tag when expose DC meta tags is On') 44 44 45 45 def test_dateValidRange(self): 46 46 self.sp.manage_changeProperties(exposeDCMetaTags = True) -
quintagroup.seoptimizer/branches/refactoring2.3.0/quintagroup/seoptimizer/tests/testInstallation.py
r1930 r1958 5 5 from zope.interface import alsoProvides 6 6 from zope.component import queryMultiAdapter 7 from zope.publisher.browser import TestRequest8 7 from zope.viewlet.interfaces import IViewletManager 9 8 … … 11 10 from quintagroup.seoptimizer.browser.interfaces import IPloneSEOLayer 12 11 from base import * 12 13 PROPERTY_SHEET = 'seo_properties' 14 STOP_WORDS = ['a', 'an', 'amp', 'and', 'are', 'arial', 'as', 'at', 'be', 'but', 15 'by', 'can', 'com', 'do', 'font', 'for', 'from', 'gif', 'had', 'has', 16 'have', 'he', 'helvetica', 'her', 'his', 'how', 'href', 'i', 'if', 'in', 17 'is', 'it', 'javascript', 'jpg', 'made', 'net', 'of', 'on', 'or', 'org', 18 'our', 'sans', 'see', 'serif', 'she', 'that', 'the', 'this', 'to', 'us', 19 'we', 'with', 'you', 'your'] 13 20 14 21 PROPS = {'stop_words': STOP_WORDS, … … 31 38 32 39 def afterSetUp(self): 33 #self.qi = self.portal.portal_quickinstaller34 #self.qi.uninstallProducts([PROJECT_NAME])35 40 self.basic_auth = 'mgr:mgrpw' 36 41 self.portal_path = '/%s' % self.portal.absolute_url(1) … … 77 82 for p in VIEWLETS: 78 83 self.assert_(manager.get(p) is not None, "Not registered '%s' viewlet" % p) 79 84 80 85 def test_browser_layer(self): 81 86 from plone.browserlayer import utils -
quintagroup.seoptimizer/branches/refactoring2.3.0/quintagroup/seoptimizer/tests/testMetaTagsDuplication.py
r1897 r1958 1 import re2 1 from base import * 3 2 -
quintagroup.seoptimizer/branches/refactoring2.3.0/quintagroup/seoptimizer/tests/testUsageKeywords.py
r1901 r1958 1 import urllib, re2 from Acquisition import aq_inner3 1 from base import * 4 2 … … 16 14 self.my_doc = self.portal['my_doc'] 17 15 18 19 16 def test_noDefaultKeywords(self): 20 17 """No keywords added for the content by default""" 21 18 metatags = self.pu.listMetaTags(self.my_doc) 22 19 self.assert_('keywords' not in metatags) 23 24 20 25 21 def testrender_SEOKeywords(self): … … 35 31 self.assert_(re.match(KWSTMPL % expect, html, re.S|re.M), 36 32 "No '%s' keyword found" % str(seokws)) 37 38 33 39 34 def testbehave_NoSEOKeywordsOnlySubject(self): -
quintagroup.seoptimizer/branches/refactoring2.3.0/quintagroup/seoptimizer/tests/test_doctest.py
r1895 r1958 1 1 import unittest 2 2 import doctest 3 4 from zope.testing import doctestunit5 from zope.component import testing, eventtesting6 3 7 4 from base import * -
quintagroup.seoptimizer/branches/refactoring2.3.0/quintagroup/seoptimizer/upgrades.py
r1930 r1958 1 1 import logging 2 2 from zope.component import queryMultiAdapter 3 from Products.CMFCore.utils import getToolByName4 3 5 4 from quintagroup.canonicalpath.interfaces import ICanonicalLink … … 14 13 def changeDomain(plone_tools): 15 14 """ Fix i18n_domain bug for some portal_types, 16 which present in earlier versions of the package.15 which present in earlier versions of the package. 17 16 """ 18 17 types_tool = plone_tools.types() … … 44 43 def migrationActions(plone_tools): 45 44 """ Migration actions from portal_types action to seoproperties tool 46 (for seoaction in portal_actions).45 (for seoaction in portal_actions). 47 46 """ 48 47 types_tool = plone_tools.types() … … 76 75 77 76 def removeSkin(plone_tools): 78 """ Remove layers.77 """ Remove skin layers. 79 78 """ 80 79 layer = 'quintagroup.seoptimizer'
Note: See TracChangeset
for help on using the changeset viewer.