Tôi đang làm việc trên package bao gồm bảng điều khiển được tạo bằng plone.app.registry. Tôi theo sau Timo's tutorial nhưng, khi cố gắng thêm một bản ghi bổ sung vào nó, tôi đang đối mặt với lỗi nổi tiếng KeyError: một trường không có bản ghi.Thực tiễn tốt nhất cho bảng điều khiển Plone
Vì vậy, tôi có một vài câu hỏi về thực hành tốt nhất:
câu hỏi đầu tiên của tôi là: một gói phải loại bỏ nó đăng ký tại uninstall thời gian?
tôi đã sử dụng này trong registry.xml của gói của tôi:
<registry>
<records interface="collective.nitf.controlpanel.INITFSettings" />
</registry>
và điều này trên metadata.xml:
<metadata>
<version>1</version>
<dependencies>
<dependency>profile-plone.app.registry:default</dependency>
</dependencies>
</metadata>
Nhưng thêm một delete = "true" trên hồ sơ cá nhân uninstall dường như không để làm việc. Tôi cũng đã thử bằng cách liệt kê tất cả các bản ghi theo tên không có may mắn, trừ khi tôi chạy bước thủ công tại ZMI.
Vì vậy, câu hỏi thứ hai của tôi là: làm thế nào để loại bỏ bản ghi bảng điều khiển tại thời điểm gỡ cài đặt một cách duyên dáng?
Để kiểm tra xem một kỷ lục là trên registry tôi làm điều gì đó như thế này:
def setUp(self):
self.portal = self.layer['portal']
setRoles(self.portal, TEST_USER_ID, ['Manager'])
# Set up the NITF settings registry
self.registry = Registry()
self.registry.registerInterface(INITFSettings)
def test_record_sections(self):
# Test that the sections record is in the control panel
record_sections = self.registry.records[
'collective.nitf.controlpanel.INITFSettings.sections']
self.failUnless('sections' in INITFSettings)
self.assertEquals(record_sections.value, set([]))
Một câu hỏi thứ ba có thể là làm thế nào để kiểm tra xem một kỷ lục đã được gỡ bỏ tại thời gian unisntall.
Bất kỳ đề xuất nào khác?
[Xóa hồ sơ] (http: // pypi .python.org/pypi/plone.app.registry # delete-records) trên plone.app.registry có một chút khác biệt và không hoạt động đối với tôi, bạn phải làm như sau: Tôi đã thử thêm thuộc tính tiền tố vào [tạo dựa trên giao diện] (http://pypi.python.org/pypi/plone.app.registry# tạo bản ghi dựa trên giao diện), nhưng nó không rõ ràng trong tài liệu. –
hvelarde