dm.zope.schema contiene extensiones para zope.schema.
Módulos
verificar
Un compañero de zope.interface.verify para la parte del esquema de interfaces.
Contiene la verify_schema función (del iface, obj, context = Ninguno, check_declaration = True) que verifica que satisface obj la parte del esquema de la interfaz del iface. Campos de esquema necesitan conseguir unido a un contexto antes de que puedan ser validados. contexto especifica este contexto y por defecto obj. cheques check_declaration que obj declara a privide del iface.
esquema
El contenido principal es la clase mixin SchemaConfigured. Es compatible con la configuración según la parte del esquema de las interfaces implementadas por la clase derivada SchemaConfigured. Si usted quiere controlar desde el que interactúa el esquema se deriva, puede utilizar el atributo de clase SC_SCHEMAS: su valor debe ser None (esquema derivar automáticamente de las interfaces implementadas), una única interfaz o una tupla de interfaces. Tomando el control explícito sobre las interfaces utilizadas para determinar el esquema es especialmente importante para Zope 2 de esquema clases de contenido configuradas (como su OFS.SimpleItem.SimpleItem clase base implementa un gran número de interfaces cuyos campos es probable que no desea en su esquema).
El SchemaConfiguredEvolution clase mixin proporciona soporte para la evolución del esquema de (ZODB) objetos persistentes. Su __setstate__ agrega atributos que falta para el objeto de tal manera que se puede añadir nuevos campos a su esquema y todavía encontrar todos los atributos correspondientes en los respectivos objetos, incluso cuando ellos han sido creados antes de la extensión. Nota: para que SchemaConfiguredEvolution para ser eficaz, debe llegar temprano en el orden de resolución de métodos (MRO) (antes persistent.Persistent). Es por eso que se trata de una clase separada y su función no incluye en sí mismo SchemaConfigured (puede haber buenas razones para haber SchemaConfigured tarde en el MRO). Como alternativa a la utilización de SchemaConfiguredEvolution, puede utilizar los valores predeterminados definidos en el nivel de clase para los nuevos campos.
De vez en cuando, funciones schemaitems y schemadict podrían ser útiles. Extraen la parte del esquema de una especificación de interfaz o la interfaz como una lista de id, pares de campo o un diccionario, respectivamente.
El objeto de campo es un reemplazo para zope.schema.Object. Este último tiene falta de información de campo en los errores de validación (https://bugs.launchpad.net/zope.schema/+bug/620324), que facilita la identificación de los campos afectados innecesariamente difíciles. Ocasionalmente, se quiere suprimir la comprobación de que un objeto validado declara explícitamente para proporcionar la interfaz. El objeto tiene el check_declaration propiedad adicional para controlar esto (por defecto es true).
PropertyManager
Este módulo implementa un esquema basado OFS.PropertyManager.PropertyManager subclase. Los _properties atributo que describe las propiedades no se mantiene en la clase o sus instancias, pero derivan de los (implementados respectivamente) esquemas previstos. Por el momento, las propiedades no pueden extenderse a nivel basada en instancia (que no sea proporcionando otro esquema).
zope.schema utiliza Unicode para representar texto. PropertyManager puede, en principio propiedades soporte Unicode. Sin embargo, debido a un bug / debilidad, la página de gestión de la propiedad los maneja correctamente sólo cuando management_page_charset no está definida o tiene valor UTF-8 (tenga en cuenta la ortografía mayúsculas!). Utilizamos propiedades unicode por defecto a menos management_page_charset.upper () obtiene un valor diferente de UTF-8. También proporcionamos una WorkaroundSpelling_management_page_charset clase mixin para evitar estúpida insistencia de Zope en ortografía mayúsculas para management_page_charset.
Por el momento, se admiten los siguientes tipos de campo: texto, TextLine, Bytes, BytesLine`, Bool, int, float y la lista con un tipo de valor de TextLine o BytesLine. Otros tipos subirán NotImplementedError.
El módulo ha sido implementado para aprovechar dm.zope.generate. Una alternativa habría sido la implementación de las instalaciones de generación a base de "zope.formlib" y el uso de las llamadas formas add. Dependiendo de la experiencia, puedo cambiar a esta alternativa.
forma
El módulo define pantalla (SchemaConfiguredDisplayForm) formularios para dm.zope.schema.schema.SchemaConfigured editar defecto (SchemaConfiguredEditForm) y.
Depende de zope.formlib.
Reproductor
Proporciona visualización y edición widgets para campos timedelta, un widget decente pantalla para campos de contraseña (los muestra por defecto las contraseñas en texto plano) y un widget de entrada de contraseña que no te obliga a proporcionar el valor de la contraseña cada vez que se edita el formulario.
Depende de zope.app.form en versiones anteriores de Zope y en zope.formlib en las más nuevas.
z2
Esta sub-paquete combina esquema relacionado y Zope 2 funcionalidad. En las nuevas versiones de Zope, depende de five.formlib.
forma
El módulo define pantalla (SchemaConfiguredDisplayForm) formas de edición predeterminada (SchemaConfiguredEditForm) y para dm.zope.schema.schema.SchemaConfigured para su uso en Zope 2.
Depende de zope.formlib.
constructor
Este módulo contiene una clase de formulario SchemaConfiguredAddForm complemento y un add_form_factory fábrica para la generación de una forma de complemento (llamado "constructor" de Zope 2) para las clases basadas dm.zope.schema.schema.SchemaConfigured. La forma add generada se utiliza generalmente como parte del parámetro constructores para registerClass.
add_form_factory tiene los parámetros:
& Nbsp; Descripción nombre predeterminado
& Nbsp; class_ la clase para generar la forma de
& Nbsp; título Crear instancia de class_ el título se muestra en la forma
& Nbsp; de clase Descripción _.__ doc__ la documentación se muestra en la forma
& Nbsp; form_class clase de formulario SchemaConfiguredAddForm a utilizar
add_form_factory genera una forma zope.formlib con campos definidos por los esquemas implementados de dm.zope.schema.schema.SchemaConfigured clase class_.
Este módulo es similar a dm.zope.generate.constructor. Sin embargo, funciona para las clases basadas SchemaConfigured mientras que el segundo apoya clases basadas PropertyManager.
plantilla
Proporciona la vista de página plantilla form_template capaz de ver y editar Zope 2 de esquema configurado los objetos de contenido dentro de la interfaz estándar ZMI.
Ejemplos
Configuración: Define dos esquemas S1 y S2, una interfaz I y clase C derivada de SchemaConfigured implementación de los esquemas y la interfaz.
>>> De interfaz de importación zope.interface, implementos, providedby
>>> From zope.schema Int importación
>>>
>>> From dm.zope.schema.schema importación SchemaConfigured
>>> From verify_schema importación dm.zope.schema.verify
>>>
>>> Clase S1 (Interfaz): i1 = Int (default = 0)
...
>>> Clase S2 (Interfaz): i2 = Int (por defecto = 1)
...
>>> Clase I (Interfaz):
... Def método (): pase
...
>>> Clase C (SchemaConfigured):
... implementos (S1, S2, I)
... Def método (self): pase
...
Instancias C tienen atributos correspondientes a los campos de esquema. Si no se dan argumentos para el constructor, que reciben el valor predeterminado del campo como valor. Proporcionados (palabra clave!) Argumentos anulan los valores predeterminados.
>>> C = C ()
>>> C.i1
0
>>> C.i2
1
>>> c = C (i1 = 5)
>>> C.i1
5
El constructor rechaza los argumentos de palabras clave que no están definidos en el esquema con el fin de detectar rápidamente los errores de ortografía. Sin embargo, esto dificulta el uso de súper en la jerarquía de clases para el método __init__. Tal vez, las versiones futuras proporcionarán un medio para controlar esta comprobación.
>>> C = C (x = 5)
Rastreo (llamadas recientes más última):
& Nbsp; ...
TypeError: argumento que no es la palabra clave de esquema: x
Si los valores de los campos son apropiadas, las instancias C proporcionan los esquemas (verificado por verify_schema). De lo contrario, verify_schema lanzará una excepción. Este ejemplo demuestra también el uso elemental de verify_schema.
>>> Verify_schema (S1, c)
>>> C.i1 = Ninguno
>>> Verify_schema (S1, c)
Rastreo (llamadas recientes más última):
& Nbsp; ...
zope.schema.interfaces.WrongContainedType: [('i1', RequiredMissing ())]
Podemos crear una edición (o la pantalla) Forma de nuestros objetos. Los campos del formulario se crean automáticamente para los campos de esquema. Las clases de formulario tienen un método customize_fields puede anular para proporcionar campos y / o widgets personalizados.
Una funcionalidad similar está disponible para Zope 2 en el sub-paquete z2.
>>> From zope.publisher.browser TestRequest importación
>>> From dm.zope.schema.form SchemaConfiguredEditForm importación
>>>
>>> Form = SchemaConfiguredEditForm (c, TestRequest ())
>>> Lista ([f .__ name__ para f en form.form_fields])
['I1', 'i2']
¿Qué hay de nuevo en esta versión:
- Soporte forma
- Zope 2 apoyo constructor
Requisitos :
- Python
Comentarios que no se encuentran