Changeset 1466 in products


Ignore:
Timestamp:
Dec 22, 2009 7:23:04 PM (14 years ago)
Author:
liebster
Message:

Cleaned code and added translation

Location:
quintagroup.seoptimizer/trunk/quintagroup/seoptimizer
Files:
5 added
5 deleted
3 edited

Legend:

Unmodified
Added
Removed
  • quintagroup.seoptimizer/trunk/quintagroup/seoptimizer/browser/keywords.py

    r1463 r1466  
    1616    def validateKeywords(self, text): 
    1717        """ see interface """ 
     18        ts = getToolByName(self.context, 'translation_service') 
    1819        # extract keywords from text 
    19         if not text.strip(): 
    20             return _(u'Keywords list is empty!') 
    21  
    22         keywords = map(lambda x: x.strip(), text.lower().split('\n')) 
    23         if not keywords: 
    24             return _(u'Keywords list is empty!') 
    25  
     20        if text.lower().strip(): 
     21            keywords = map(lambda x: x.strip(), text.lower().strip().split('\n')) 
     22        else: 
     23            return ts.utranslate(None, _(u'Keywords list is empty!'), context=self.context) 
    2624        # request html page of context object 
    2725        url = '%s?qseo_without_additional_keywords=1' % self.context.absolute_url() 
     
    6967        # check every keyword on appearing in body of html page 
    7068        missing = [] 
     69        finding = [] 
    7170        added = {} 
     71        finded = {} 
    7272        for keyword in keywords: 
    73             if keyword not in added.keys() and not re.compile(r'\b%s\b' % keyword, re.I).search(page_text): 
    74                 missing.append(keyword) 
    75                 added[keyword] = 1 
    76  
     73            if keyword: 
     74                keyword_on_page =  len(re.compile(r'\s%s\s' % keyword, re.I).findall(page_text)) 
     75                if keyword not in added.keys() and not keyword_on_page: 
     76                    missing.append(keyword.decode('utf8')) 
     77                    added[keyword] = 1 
     78                if keyword not in finded.keys() and keyword_on_page: 
     79                    finding.append(keyword.decode('utf8')+' - '+repr(keyword_on_page)) 
     80                    finded[keyword] = 1 
    7781        # return list of missing keywords 
    7882        if missing: 
    79             msg = u"""Next keywords did not appear on the page:\n%s""" % '\n'.join(missing) 
     83            msg = ts.utranslate(None, _('missing_keywords', default=u'Next keywords did not appear on the page:\n${missing}', mapping={'missing':'\n'.join(missing)}), context=self.context) 
    8084        else: 
    81             msg = u"""All keywords found on the page!""" 
    82         return _(msg) 
     85            msg = ts.utranslate(None, _('finded_keywords', default=u'All keywords found on the page!\nMore detailed:\n${found}', mapping={'found': '\n'.join(finding)}), context=self.context) 
     86        return msg 
    8387 
    8488    def walkTextNodes(self, parent, page_words=[]): 
     
    100104                    # pop everything from the the left-angle bracket until the right-angle bracket 
    101105                    s_list.pop(i) 
    102                      
     106 
    103107                # pops the right-angle bracket, too 
    104108                s_list.pop(i) 
    105109            else: 
    106110                i=i+1 
    107                  
     111 
    108112        # convert the list back into text 
    109113        join_char='' 
  • quintagroup.seoptimizer/trunk/quintagroup/seoptimizer/browser/views.py

    r1463 r1466  
    307307    template = ViewPageTemplateFile('templates/seo_context_properties.pt') 
    308308 
    309  
    310309    def test( self, condition, first, second ): 
    311310        """ 
    312311        """ 
    313312        return condition and first or second  
    314        
     313 
     314    def getMainDomain(self, url): 
     315        url = url.split('//')[-1] 
     316        dompath = url.split(':')[0] 
     317        dom = dompath.split('/')[0] 
     318        return '.'.join(dom.split('.')[-2:]) 
     319 
     320    def validateSEOProperty(self, property, value): 
     321        purl = getToolByName(self.context, 'portal_url')() 
     322        state = '' 
     323        if property == PROP_PREFIX+'canonical': 
     324            pdomain = self.getMainDomain(purl) 
     325            if not pdomain == self.getMainDomain(value): 
     326                state = _('canonical_msg', default=u'Canonical URL mast be in ${pdomain} domain.', mapping={'pdomain': pdomain}) 
     327        return state 
     328 
    315329    def setProperty(self, property, value, type='string'): 
    316330        context = aq_inner(self.context) 
    317         if context.hasProperty(property): 
    318             context.manage_changeProperties({property: value}) 
    319         else: 
    320             context.manage_addProperty(property, value, type) 
     331        state = self.validateSEOProperty(property, value) 
     332        if not state: 
     333            if context.hasProperty(property): 
     334                context.manage_changeProperties({property: value}) 
     335            else: 
     336                context.manage_addProperty(property, value, type) 
     337        return state 
    321338 
    322339    def manageSEOProps(self, **kw): 
    323340        context = aq_inner(self.context) 
     341        state = '' 
    324342        delete_list, overrides, values = [], [], [] 
    325343        seo_items = dict([(k[len(SEO_PREFIX):],v) for k,v in kw.items() if k.startswith(SEO_PREFIX)]) 
     
    329347            else: 
    330348                values.append(key) 
    331  
    332349        for val in values: 
    333             if val in overrides and seo_items[val+SUFFIX]: 
    334                 self.setProperty(PROP_PREFIX+val, seo_items[val]) 
     350            if val in overrides and seo_items.get(val+SUFFIX): 
     351                state = self.setProperty(PROP_PREFIX+val, seo_items[val]) 
     352                if state: 
     353                    return state 
    335354            elif context.hasProperty(PROP_PREFIX+val): 
    336355                delete_list.append(PROP_PREFIX+val) 
    337         if delete_list: context.manage_delProperties(delete_list) 
     356        if delete_list: 
     357            context.manage_delProperties(delete_list) 
     358        self.manageSEOCustomMetaTagsProperties(**kw) 
     359        return state 
    338360 
    339361    def setSEOCustomMetaTags(self, custommetatags): 
     
    342364            self.setProperty('%s%s' % (PROP_CUSTOM_PREFIX, tag['meta_name']), tag['meta_content']) 
    343365 
    344     def delAllSEOCustomMetaTagsByNames(self): 
    345         context = self.context 
     366    def delAllSEOCustomMetaTagsProperties(self): 
     367        context = aq_inner(self.context) 
    346368        delete_list = [] 
    347369        for property, value in context.propertyItems(): 
    348             if property.find(PROP_CUSTOM_PREFIX) == 0 and len(property) > len(PROP_CUSTOM_PREFIX): 
     370            if property.startswith(PROP_CUSTOM_PREFIX)  and not property == PROP_CUSTOM_PREFIX: 
    349371                delete_list.append(property) 
    350         if delete_list: context.manage_delProperties(delete_list)         
    351  
    352     def delSEOCustomMetaTagByName(self, custommetatagname): 
    353         context = self.context 
    354         seo_custom_prop = PROP_CUSTOM_PREFIX + custommetatagname 
    355         if context.hasProperty(seo_custom_prop): 
    356             context.manage_delProperties([seo_custom__prop]) 
    357  
    358     def updateSEOCustomMetaTags(self, custommetatags): 
     372        if delete_list: 
     373            context.manage_delProperties(delete_list) 
     374 
     375    def updateSEOCustomMetaTagsProperties(self, custommetatags): 
    359376        context = aq_inner(self.context) 
    360377        site_properties = getToolByName(context, 'portal_properties') 
    361378        globalCustomMetaTags = [] 
    362  
    363379        if hasattr(site_properties, 'seo_properties'): 
    364380            custom_meta_tags = getattr(site_properties.seo_properties, 'default_custom_metatags', []) 
     
    368384                    globalCustomMetaTags.append({'meta_name'    : name_value[0], 
    369385                                                 'meta_content' : len(name_value) == 1 and '' or name_value[1]}) 
    370         metalist = [] 
    371386        for tag in custommetatags: 
    372387            meta_name, meta_content = tag['meta_name'], tag['meta_content'] 
    373388            if meta_name: 
    374389                if not [gmt for gmt in globalCustomMetaTags if (gmt['meta_name']==meta_name and gmt['meta_content']==meta_content)]: 
    375                     metalist.append(tag) 
    376         if metalist: self.setSEOCustomMetaTags(metalist) 
    377        
    378     def manageSEOCustomMetaTags(self, **kw): 
    379         context = aq_inner(self.context) 
    380         if kw.has_key('seo_custommetatags_override'): 
    381             if kw.get('seo_custommetatags_override'): 
    382                 custommetatags = kw.get('seo_custommetatags', {}) 
    383                 self.updateSEOCustomMetaTags(custommetatags) 
    384             else: 
    385                 self.delAllSEOCustomMetaTagsByNames() 
    386         elif kw.get('seo_custommetatags'): 
    387             self.delAllSEOCustomMetaTagsByNames() 
     390                    self.setProperty('%s%s' % (PROP_CUSTOM_PREFIX, meta_name), meta_content) 
     391 
     392    def manageSEOCustomMetaTagsProperties(self, **kw): 
     393        context = aq_inner(self.context) 
     394        self.delAllSEOCustomMetaTagsProperties() 
     395        if kw.get('seo_custommetatags_override'): 
     396            custommetatags = kw.get('seo_custommetatags', {}) 
     397            self.updateSEOCustomMetaTagsProperties(custommetatags) 
    388398 
    389399    def __call__( self ): 
     
    395405        submitted = form.get('form.submitted', False) 
    396406        if submitted: 
    397             self.manageSEOProps(**form) 
    398             self.manageSEOCustomMetaTags(**form) 
    399             context.plone_utils.addPortalMessage( _(u'Content SEO properties have been saved.')) 
    400             return request.response.redirect(self.context.absolute_url()) 
    401         else: 
    402             return self.template() 
     407            state = self.manageSEOProps(**form) 
     408            if not state: 
     409                state = _('seoproperties_saved', default=u'Content SEO properties have been saved.') 
     410                context.plone_utils.addPortalMessage(state) 
     411                return request.response.redirect(self.context.absolute_url()) 
     412            context.plone_utils.addPortalMessage(state, 'error') 
     413        return self.template() 
  • quintagroup.seoptimizer/trunk/quintagroup/seoptimizer/configure.zcml

    r1463 r1466  
    1010 
    1111  <five:registerPackage package="." /> 
     12  <i18n:registerTranslations directory="locales" /> 
    1213 
    1314  <genericsetup:registerProfile 
Note: See TracChangeset for help on using the changeset viewer.