Changeset 1466 in products for quintagroup.seoptimizer/trunk/quintagroup/seoptimizer/browser/views.py
- Timestamp:
- Dec 22, 2009 7:23:04 PM (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
quintagroup.seoptimizer/trunk/quintagroup/seoptimizer/browser/views.py
r1463 r1466 307 307 template = ViewPageTemplateFile('templates/seo_context_properties.pt') 308 308 309 310 309 def test( self, condition, first, second ): 311 310 """ 312 311 """ 313 312 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 315 329 def setProperty(self, property, value, type='string'): 316 330 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 321 338 322 339 def manageSEOProps(self, **kw): 323 340 context = aq_inner(self.context) 341 state = '' 324 342 delete_list, overrides, values = [], [], [] 325 343 seo_items = dict([(k[len(SEO_PREFIX):],v) for k,v in kw.items() if k.startswith(SEO_PREFIX)]) … … 329 347 else: 330 348 values.append(key) 331 332 349 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 335 354 elif context.hasProperty(PROP_PREFIX+val): 336 355 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 338 360 339 361 def setSEOCustomMetaTags(self, custommetatags): … … 342 364 self.setProperty('%s%s' % (PROP_CUSTOM_PREFIX, tag['meta_name']), tag['meta_content']) 343 365 344 def delAllSEOCustomMetaTags ByNames(self):345 context = self.context366 def delAllSEOCustomMetaTagsProperties(self): 367 context = aq_inner(self.context) 346 368 delete_list = [] 347 369 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: 349 371 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): 359 376 context = aq_inner(self.context) 360 377 site_properties = getToolByName(context, 'portal_properties') 361 378 globalCustomMetaTags = [] 362 363 379 if hasattr(site_properties, 'seo_properties'): 364 380 custom_meta_tags = getattr(site_properties.seo_properties, 'default_custom_metatags', []) … … 368 384 globalCustomMetaTags.append({'meta_name' : name_value[0], 369 385 'meta_content' : len(name_value) == 1 and '' or name_value[1]}) 370 metalist = []371 386 for tag in custommetatags: 372 387 meta_name, meta_content = tag['meta_name'], tag['meta_content'] 373 388 if meta_name: 374 389 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) 388 398 389 399 def __call__( self ): … … 395 405 submitted = form.get('form.submitted', False) 396 406 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()
Note: See TracChangeset
for help on using the changeset viewer.