Il 27/07/2010 17:33, Massimiliano Magli ha scritto:
> Il 27-Jul-10 2:28 PM, Yuri ha scritto:
>    
>> Il 27/07/2010 14:14, Massimiliano Magli ha scritto:
>>
>>      
>>> Buongiorno a tutti.
>>> Sto provvedendo ad eliminare da un sito plone (3.3.3) una serie di
>>> rules. Sono riuscito a disabilitarle ma non riesco ad eliminarle. Mi
>>> rimangono nell'interfaccia delle 'regole di contenuto' e quando provo a
>>> eliminarle il sito mi da un errore:
>>>
>>> 2010-07-27 14:04:25 ERROR Zope.SiteErrorLog 1280232265.180.790934067692
>>> http://www.gustosalutequalita.it/en/@@manage-content-rules
>>> Traceback (innermost last):
>>>       Module ZPublisher.Publish, line 119, in publish
>>>       Module ZPublisher.mapply, line 88, in mapply
>>>       Module ZPublisher.Publish, line 42, in call_object
>>>       Module plone.app.contentrules.browser.assignments, line 59, in 
>>> __call__
>>> KeyError: '/en'
>>> 2010-07-27 14:04:50 ERROR Zope.SiteErrorLog
>>> 1280232290.010.00998793800007
>>> http://www.gustosalutequalita.it/en/@@manage-content-rules
>>> Traceback (innermost last):
>>>       Module ZPublisher.Publish, line 119, in publish
>>>       Module ZPublisher.mapply, line 88, in mapply
>>>       Module ZPublisher.Publish, line 42, in call_object
>>>       Module plone.app.contentrules.browser.assignments, line 59, in 
>>> __call__
>>> KeyError: '/en'
>>> 2010-07-27 14:05:30 ERROR Zope.SiteErrorLog 1280232330.050.361796515722
>>> http://www.gustosalutequalita.it/en/@@rules-controlpanel
>>> Traceback (innermost last):
>>>       Module ZPublisher.Publish, line 119, in publish
>>>       Module ZPublisher.mapply, line 88, in mapply
>>>       Module ZPublisher.Publish, line 42, in call_object
>>>       Module plone.app.contentrules.browser.controlpanel, line 35, in 
>>> __call__
>>>       Module zope.app.container.ordered, line 227, in __delitem__
>>>       Module zope.app.container.contained, line 695, in uncontained
>>>       Module zope.event, line 23, in notify
>>>       Module zope.component.event, line 26, in dispatch
>>>       Module zope.component._api, line 130, in subscribers
>>>       Module zope.component.registry, line 290, in subscribers
>>>       Module zope.interface.adapter, line 535, in subscribers
>>>       Module zope.component.event, line 33, in objectEventNotify
>>>       Module zope.component._api, line 130, in subscribers
>>>       Module zope.component.registry, line 290, in subscribers
>>>       Module zope.interface.adapter, line 535, in subscribers
>>>       Module plone.app.contentrules.rule, line 44, in rule_removed
>>>       Module OFS.Traversable, line 259, in unrestrictedTraverse
>>>        - __traceback_info__: (['folder-per-le-pubblicazioni'], 'rqpa')
>>> AttributeError: REQUEST
>>>
>>> Ho notato il riferimento ad un oggetto (['folder-per-le-pubblicazioni'],
>>> 'rqpa') che pero' non esiste piu' sul sito.
>>> Potete aiutarmi?
>>>
>>>
>>>        
>> ricrea il folder, poi cancelli le regole e poi ricancelli il folder.
>> Penso che l'errore derivi dal fatto che le rules prendono la request
>> come self.REQUEST, e per qualche motivo non va.
>>
>>
>>
>>      
>
> Ho ricreato il folder 'folder-per-le-pubblicazioni' e seguito le tue 
> indicazioni ma niente .. mi da sempre lo stesso errore. Inoltre non capisco a 
> cosa si riferisca il secondo termine 'rqpa'. Se non ricordo male era un 
> oggetto 'plone site' che avevo creato per fare delle prove ma che poi ho 
> definitivamente cancellato.
> Qualche suggerimento?
>    

Che versione di Plone è?

Praticamente, dovrebbe esser successo che hai fatto o una copia del 
vecchio sito e poi rinominata, o un .zexp.

  Le rule vengono assegnate sul container, ma usano il path:

     portal = getUtility(ISiteRoot)
     for path in get_assignments(rule):
         container = portal.unrestrictedTraverse(path)

Il modo più semplice è creare un plone site con il vecchio nome 'rpqa', 
creare il folder incriminato e rifare. Se non va, nel folder incriminato 
del plone site creato, aggiungere una rule uguale a quella presente 
nell'attuale.

Oppure prendere le seguenti righe di codice:

def get_assignments(rule):
     annotations = IAnnotations(rule)
     return annotations.setdefault(ANNOTATION_KEY, OOSet())

# Events that keep track of rule-to-assignment mappings

def rule_removed(rule, event):

     storage = queryUtility(IRuleStorage)
     rule_name = rule.__name__

     if storage is None:
         return

     portal = getUtility(ISiteRoot)
     for path in get_assignments(rule):
         container = portal.unrestrictedTraverse(path)
         if container is not None:
             assignable = IRuleAssignmentManager(container, None)
             if assignable is not None and rule_name in assignable:
                 del assignable[rule_name]

ad ispirazione per capire come fare a prendere le annotazioni della rule 
e cancellare a mano quell'assegnazione.

  Oppure qui:

     for path in get_assignments(rule):
      if path == '/rpqa/folder-per-le-pubblicazioni':
        annotations = IAnnotations(rule)
        annotations[ANNOTATION_KEY].<cancella il path inesistente>

io segnalerei il bug ( con i dettagli di tutto ) nel bug tracker di plone.
_______________________________________________
Plone-IT mailing list
[email protected]
http://lists.plone.org/mailman/listinfo/plone-it
http://www.nabble.com/Plone---Italy-f21728.html

Rispondere a