dm.zope.schema chứa phần mở rộng cho zope.schema.
Modules
xác nhận
Một đồng để zope.interface.verify cho phần schema của giao diện.
Nó chứa các chức năng verify_schema (iface, obj, context = None, check_declaration = True) mà xác minh rằng đáp ứng obj phần của giao diện đồ iface. Lĩnh vực Schema cần để ràng buộc vào một bối cảnh trước khi chúng có thể được xác nhận. bối cảnh chỉ rõ bối cảnh này và mặc định để obj. check_declaration kiểm tra mà obj tuyên bố privide iface.
schema
Các nội dung chính là lớp mixin SchemaConfigured. Nó hỗ trợ cấu hình theo phần giản đồ của các giao diện được thực hiện bởi các lớp dẫn xuất SchemaConfigured. Nếu bạn muốn điều khiển từ mà giao diện giản đồ có nguồn gốc, bạn có thể sử dụng các thuộc tính lớp SC_SCHEMAS: giá trị của nó nên là None (lấy đồ tự động từ các giao diện thực hiện), một giao diện duy nhất hoặc một bộ các giao diện. Việc kiểm soát rõ ràng qua các giao diện sử dụng để xác định các schema là đặc biệt quan trọng đối với Zope 2 schema lớp nội dung cấu hình (như OFS.SimpleItem.SimpleItem lớp cơ sở của họ thực hiện một số lượng lớn các giao diện mà các lĩnh vực có thể bạn không muốn trong sơ đồ của bạn).
Các lớp mixin SchemaConfiguredEvolution cung cấp hỗ trợ cho sự phát triển schema cho (ZODB) đối tượng liên tục. __setstate__ Của nó cho biết thêm thiếu thuộc tính cho các đối tượng như vậy mà bạn có thể thêm các trường mới vào lược đồ của bạn và vẫn còn tìm thấy tất cả các thuộc tính tương ứng trên các đối tượng tương ứng, ngay cả khi những người đã được tạo ra trước khi mở rộng. Lưu ý: để SchemaConfiguredEvolution có hiệu quả, nó phải đi đầu trong các phương pháp để giải quyết (MRO) (trước persistent.Persistent). Đó là lý do tại sao là là một lớp học riêng biệt và tính năng của nó không được bao gồm trong SchemaConfigured bản thân (có thể có lý do tốt để có SchemaConfigured trễ trong MRO). Là một thay thế cho việc sử dụng các SchemaConfiguredEvolution, bạn có thể sử dụng các giá trị mặc định được xác định trên mức lớp cho các lĩnh vực mới.
Thỉnh thoảng, các chức năng và schemaitems schemadict có thể có ích. Họ trích một phần sơ đồ của một giao diện hoặc giao diện đặc điểm kỹ thuật như là một danh sách các id, cặp trường hoặc một từ điển, tương ứng.
Các lĩnh vực Object là một sự thay thế cho zope.schema.Object. Sau này thiếu thông tin trường trong các lỗi xác nhận (https://bugs.launchpad.net/zope.schema/+bug/620324) mà làm cho việc xác định các lĩnh vực bị ảnh hưởng không cần thiết khó khăn. Thỉnh thoảng, người ta muốn ngăn chặn sự kiểm tra rằng một đối tượng xác nhận một cách rõ ràng tuyên bố để cung cấp giao diện. Đối tượng có check_declaration hữu thêm để điều khiển này (mặc định là True).
propertymanager
Module này thực hiện một lược đồ dựa OFS.PropertyManager.PropertyManager subclass. Các thuộc tính _properties mô tả thuộc tính không được duy trì trên lớp hoặc trường hợp của mình nhưng có nguồn gốc từ cung cấp (thực hiện tương ứng) schemas. Đối với thời điểm này, tính chất không thể được mở rộng trên một căn cứ cấp độ thể hiện (khác hơn bằng cách cung cấp schema khác).
zope.schema sử dụng unicode để đại diện cho văn bản. PropertyManager có thể trong các thuộc tính hỗ trợ unicode nguyên tắc. Tuy nhiên, do một lỗi / điểm yếu, các trang quản lý tài sản duy nhất, khi management_page_charset không được định nghĩa xử lý chúng một cách chính xác hoặc có giá trị UTF-8 (lưu ý các trường hợp chính tả trên!). Chúng tôi sử dụng tài sản unicode theo mặc định trừ management_page_charset.upper () cho giá trị khác nhau từ UTF-8. Chúng tôi cũng cung cấp một lớp WorkaroundSpelling_management_page_charset mixin để làm việc xung quanh khăng khăng ngu ngốc Zope về chữ hoa chính tả cho management_page_charset.
Đối với thời điểm này, các loại lĩnh vực sau đây được hỗ trợ: Text, TextLine, Bytes, BytesLine`, Bool, Int, Float và List với một loại giá trị của TextLine hoặc BytesLine. Các loại khác sẽ tăng NotImplementedError.
Các mô-đun đã được thực hiện để thúc đẩy dm.zope.generate. Một sự thay thế đã được thực hiện của các phương tiện thế hệ dựa trên "zope.formlib" và việc sử dụng cái gọi là hình thức add. Tùy thuộc vào kinh nghiệm, tôi có thể chuyển đổi để thay thế này.
hình thức
Các mô-đun định nghĩa chỉnh sửa mặc định (SchemaConfiguredEditForm) và hiển thị (SchemaConfiguredDisplayForm) hình thức cho dm.zope.schema.schema.SchemaConfigured.
Nó phụ thuộc vào zope.formlib.
phụ tùng
Cung cấp màn hình hiển thị và chỉnh sửa các vật dụng cho các lĩnh vực Timedelta, một widget khá hiển thị cho các lĩnh vực Password (mật khẩu mặc định hiển thị ở dạng cleartext) và một widget đầu vào cho mật khẩu mà không buộc bạn phải cung cấp các giá trị mật khẩu mỗi khi bạn chỉnh sửa các hình thức.
Nó phụ thuộc vào zope.app.form trong phiên bản cũ Zope và trên zope.formlib trong những cái mới hơn.
z2
Subpackage này kết hợp đồ liên quan và Zope 2 chức năng. Trong các phiên bản mới hơn Zope, nó phụ thuộc vào five.formlib.
hình thức
Các mô-đun định nghĩa chỉnh sửa mặc định (SchemaConfiguredEditForm) và hiển thị (SchemaConfiguredDisplayForm) hình thức cho dm.zope.schema.schema.SchemaConfigured để sử dụng trong Zope 2.
Nó phụ thuộc vào zope.formlib.
constructor
Module này chứa một dạng add class SchemaConfiguredAddForm và một add_form_factory nhà máy cho các thế hệ của một hình thức add (gọi là "xây dựng" của Zope 2) cho các lớp học dm.zope.schema.schema.SchemaConfigured dựa. Các hình thức add tạo thường được sử dụng như là một phần của tham số nhà xây dựng để registerClass.
add_form_factory có các thông số:
& Nbsp; mô tả tên mặc định
& Nbsp; class_ các lớp học để tạo ra các hình thức cho
& Nbsp; tiêu đề Tạo thể hiện của class_ tiêu đề thể hiện trong các hình thức
& Nbsp; lớp mô tả _.__ doc__ các tài liệu thể hiện trong các hình thức
& Nbsp; form_class dạng SchemaConfiguredAddForm lớp được dùng
add_form_factory tạo ra một hình thức zope.formlib với các lĩnh vực được xác định bởi các lược đồ thực hiện của dm.zope.schema.schema.SchemaConfigured lớp class_.
Module này cũng tương tự như dm.zope.generate.constructor. Tuy nhiên, nó hoạt động cho SchemaConfigured lớp dựa trong khi sau này hỗ trợ các lớp học PropertyManager dựa.
template
Cung cấp các trang xem mẫu form_template thể xem và chỉnh sửa Zope 2 giản đồ cấu hình đối tượng nội dung bên trong giao diện ZMI chuẩn.
Ví dụ
Setup: Nó định nghĩa hai lược đồ S1 và S2, một giao diện tôi và một lớp C xuất phát từ SchemaConfigured thực hiện các lược đồ và giao diện.
>>> Từ zope.interface Giao diện nhập khẩu, thực hiện, providedBy
>>> Từ zope.schema nhập Int
>>>
>>> Từ nhập khẩu dm.zope.schema.schema SchemaConfigured
>>> Từ dm.zope.schema.verify verify_schema nhập khẩu
>>>
>>> Lớp S1 (Interface): i1 = Int (mặc định = 0)
...
>>> Lớp S2 (Interface): i2 = Int (mặc định = 1)
...
>>> Lớp I (Interface):
... Def phương pháp (): pass
...
>>> Lớp C (SchemaConfigured):
... Dụng cụ (S1, S2, I)
... Def phương pháp (tự): pass
...
Trường hợp C có các thuộc tính tương ứng với các lĩnh vực schema. Nếu không có đối số được đưa ra cho các nhà xây dựng, họ nhận được mặc định lĩnh vực như giá trị. Cung cấp (từ khóa) đối số ghi đè lên giá trị mặc định.
>>> C = C ()
>>> C.i1
0
>>> C.i2
1
>>> C = C (i1 = 5)
>>> C.i1
5
Các nhà xây dựng từ chối đối số từ khóa không được định nghĩa trong lược đồ để nhanh chóng phát hiện lỗi chính tả. Tuy nhiên, điều này đã hạn chế việc sử dụng các siêu trong hệ thống phân cấp lớp học cho các phương pháp __init__. Có lẽ, các phiên bản tương lai sẽ cung cấp một phương tiện để kiểm soát việc kiểm tra này.
>>> C = C (x = 5)
Traceback (hầu hết cuộc gọi gần đây nhất):
& Nbsp; ...
Lỗi Loại: phi tham số từ khóa schema: x
Nếu các giá trị trường là phù hợp, trường hợp C cung cấp các lược đồ (như xác nhận của verify_schema). Nếu không, verify_schema sẽ nâng cao một ngoại lệ. Ví dụ này cũng cho thấy việc sử dụng cơ bản của verify_schema.
>>> Verify_schema (S1, c)
>>> C.i1 = None
>>> Verify_schema (S1, c)
Traceback (hầu hết cuộc gọi gần đây nhất):
& Nbsp; ...
zope.schema.interfaces.WrongContainedType: [('i1', RequiredMissing ())]
Chúng ta có thể tạo ra một chỉnh sửa (hoặc hiển thị) dưới hình thức cho các đối tượng của chúng tôi. Các trường mẫu sẽ được tự động tạo ra cho lĩnh vực đồ của chúng tôi. Các lớp biểu mẫu có một phương pháp customize_fields bạn có thể ghi đè để cung cấp các lĩnh vực tùy chỉnh và / hoặc các vật dụng.
Chức năng tương tự có sẵn cho Zope 2 trong subpackage z2.
>>> Từ zope.publisher.browser nhập TestRequest
>>> Từ dm.zope.schema.form nhập SchemaConfiguredEditForm
>>>
>>> = Thành SchemaConfiguredEditForm (c, TestRequest ())
>>> List ([f .__ name__ cho f trong form.form_fields])
['I1', 'i2']
là gì mới trong phiên bản này:
- hỗ trợ hình thức
- 2 hỗ trợ constructor Zope
Yêu cầu :
- Python
Bình luận không