2014-04-22 20 views
5

Dexterity tabanlı bir öğenin içinde yer alan Dexterity tabanlı bir kapsayıcım var. Anonim kullanıcıların bu türdeki nesneleri kapsayıcıya eklemelerine izin vermeliyim.Anonim kullanıcıların Dexterity nesnelerini eklemesine izin ver

<?xml version="1.0"?> 
<rolemap> 
    <permissions> 
    <permission name="my.package: Add My Type" acquire="True"> 
     <role name="Anonymous"/> 
    </permission> 
    </permissions> 
</rolemap> 

Ben configure.zcml izni ilan:

Zaten şu bir rolemap.xml dosyası oluşturduktan

<permission 
    id="my.package.AddMyType" 
    title="my.package: Add My Type" 
    /> 

ve sonunda bunun gibi görünüm eklemek Özel bir ekledi:

class MyAddView(dexterity.AddForm): 
    grok.name('MyType') 
    grok.require('my.package.AddMyType') 

form zaten bize anonim için gösteriliyor ers ancak kayıt düğmesine bastığımda giriş formuna yönlendirildim.

Ayrıca, giriş yapmış kullanıcılar da formu görebilir ve bunun gerçekleşmemesi gerekiyor.

Başka neler yapmalıyım?

class MyAddView(dexterity.AddForm): 
    grok.name('MyType') 
    grok.require('my.package.AddMyType') 

    def update(self): 
     # check here if the user is anonymous and raise exception if not 
     super(AddView, self).update() 

    def add(self, object): 
     container = aq_inner(self.context) 
     addContentToContainer(container, object, checkConstraints=False) 
     self.immediate_view = container.absolute_url() 

sen bakmak isteyebilirsiniz, daha iyi anlamak için: bana rehberlik David GIick'in için

cevap

5

teşekkürler, AddForm sınıfının add yöntemini içeren çok basit bir çözüm ile sona erdi original code in plone.dexterity.

Ayrıca dikkat etmeniz gereken önemli bir şey de, bazılarından bunlardan Sahibinin Sahibini kaldırmak için iş akışı izinlerinizi düzeltmeniz veya muhtemelen anonim kullanıcılar tarafından düzenlenebilir içeriğin sonlandırılmasıdır.

İlgili konular