Ho un comportamento davvero strano, se voglio tradurre un tipo di contenuto Archetype (ad esempio Folder
) con plone.app.multilingual.Privilegi insufficienti: plone.app.multilingual [1.x] - Traduci un contenuto di Archetype
errore msg:
Insufficient Privileges
You do not have sufficient privileges to view this page. If you believe you are
receiving this message in error, contact the site administration.
Il mio ambiente:
- Plone = 4.3.2
- plone.app.multilingual = 1.2.1
- plone.multilingual = 1.2.1
- plone.multilingualbehavior = 1.2
- archetipo s.multilingual = 1.2
- e circa 40 Plone Addon di (che rende questo molto complesso)
mio caso d'uso:
- Due lingue sono configurati EN e DE
- simple_publication_workflow di Plone è configurato.
- Tutti gli elementi sono nello stato privato. (Anche le cartelle LanguageRoot sono in stato privato)
Posso riprodurre questo problema creando innanzitutto un contenuto (Cartella) nella parte inglese del sito. Il contenuto è privato, poiché questo è lo stato predefinito per i nuovi contenuti.
Quindi provo a tradurre il contenuto in tedesco facendo clic sul menu Traduci ->create German
. Fatto ... viene visualizzato l'errore Insufficient Privileges
.
Se installo un Plone 4.3.2 di vaniglia e plone.app.multilingial senza il mio enorme gruppo di addon, tutto funziona correttamente. Sono abbastanza sicuro che ci sia un problema con uno dei componenti aggiuntivi, ma ho bisogno di capire cosa porta a questo problema. Non importa, quale addon interrompe il sito.
Ulteriori ...
Dal momento che è un problema di permessi prima ho provato a pubblicare tutto e poi tradurre il contenuto in tedesco. Questo ha funzionato bene!
Bene, il passo successivo è stato il debug in plone.app.multilingual. Sono finito nel add.py AddTraverser
Il problema appare sul redirect on line 37 Se una parte dell'url non è accessibile al pubblico (Anonimo ??) si verifica l'errore.
imho è strano che l'implementazione della parte DX e della parte AT sia diversa.
ho cambiato l'attuazione dell'articolo AT a:
self.context.REQUEST.set('type', name)
view = queryMultiAdapter((self.context, self.context.REQUEST),
name="add_at_translation")
return view.__of__(self.context)
invece di:
baseUrl = self.context.absolute_url()
url = '%s/@@add_at_translation?type=%s' % (baseUrl, name)
return self.request.response.redirect(url)
Questo totalmente fisso il mio caso. E tutti i test plone.app.multilingual funzionano ancora.
Ma non so spiegare perché? E perché non funziona senza la personalizzazione?
Qualsiasi suggerimento è davvero apprezzato!
Grazie per la tua risposta, ho già rimosso 'Non autorizzato 'da' error_log' e il messaggio di errore ('Nome utente o password errato' e quasi nessun tracback) è stato confuso, fino a quando ho visto il codice snippato che ho postato nella domanda. Devo riavviare il mio ambiente e provare a riprodurre il "bug". Controllerò la risposta a breve, sono sicuro che questo risolve il problema. – Mathias
Ok. Speravo che il traceback di Unauthorized potesse rivelare il vero problema. Ti ricordi, il reindirizzamento a '' @@ add_at_translation'' è realmente accaduto prima dell'errore? Un possibile problema è che response.redirect() non esegue il reindirizzamento immediato e restituisce solo una stringa, che potrebbe in qualche modo interrompere la traversata con il set di componenti aggiuntivi. –