2014-04-22 14 views
5

Tôi có vùng chứa dựa trên Thủ Thuật chứa bên trong một mục dựa trên Thủ Thuật. Tôi cần để người dùng Ẩn danh thêm đối tượng thuộc loại này vào trong vùng chứa.Cho phép người dùng Chưa xác định thêm đối tượng Thủ Thuật

Tôi đã tạo một tập tin rolemap.xml như sau:

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

Tôi tuyên bố cho phép trên configure.zcml:

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

và cuối cùng tôi đã thêm một tùy chỉnh thêm cái nhìn như thế này:

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

biểu mẫu đã hiển thị cho chúng tôi ẩn danh ers nhưng, khi tôi nhấn nút lưu, tôi được chuyển hướng đến biểu mẫu đăng nhập.

cũng có, người dùng đã đăng nhập cũng có thể xem biểu mẫu và điều này được cho là không xảy ra.

tôi còn phải làm gì nữa?

Trả lời

5

nhờ David Glick, người đã dẫn dắt tôi, tôi đã kết thúc với một giải pháp rất đơn giản liên quan đến phương pháp add của lớp AddForm:

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() 

để hiểu nó tốt hơn, bạn có thể muốn xem xét số original code in plone.dexterity.

một điều quan trọng bạn cũng có thể lưu ý là bạn có thể cần phải sửa chữa cho phép công việc của bạn để loại bỏ Chủ vai trò từ một số trong số họ, hoặc bạn có thể kết thúc với nội dung có thể chỉnh sửa bởi người dùng ẩn danh cũng có.

Các vấn đề liên quan