geonature.core.gn_permissions.schemas¶
Classes¶
SQLAlchemyAutoSchema that automatically generates marshmallow fields |
|
SQLAlchemyAutoSchema that automatically generates marshmallow fields |
|
Marchmallow-sqlalchemy behavior is to search object in database, |
|
This mixin automatically exclude from serialization: |
Module Contents¶
- class geonature.core.gn_permissions.schemas.PermActionSchema(*args, **kwargs)[source]¶
Bases:
geonature.utils.env.ma.SQLAlchemyAutoSchemaSQLAlchemyAutoSchema that automatically generates marshmallow fields from a SQLAlchemy model’s or table’s column. Uses the scoped session from Flask-SQLAlchemy by default.
See marshmallow_sqlalchemy.SQLAlchemyAutoSchema for more details on the SQLAlchemyAutoSchema API.
- class Meta[source]¶
Options object for a Schema.
Example usage:
from marshmallow import Schema class MySchema(Schema): class Meta: fields = ("id", "email", "date_created") exclude = ("password", "secret_attribute")
A note on type checking
Type checkers will only check the attributes of the Meta <marshmallow.Schema.Meta> class if you explicitly subclass marshmallow.Schema.Meta.
from marshmallow import Schema class MySchema(Schema): # Not checked by type checkers class Meta: additional = True class MySchema2(Schema): # Type checkers will check attributes class Meta(Schema.Meta): additional = True # Incompatible types in assignment
Supprimé dans la version 3.0.0b7: Remove
strict.Ajouté dans la version 3.0.0b12: Add unknown.
Modifié dans la version 3.0.0b17: Rename
dateformatto datetimeformat.Ajouté dans la version 3.9.0: Add timeformat.
Modifié dans la version 3.26.0: Deprecate
ordered. Field order is preserved by default.Supprimé dans la version 4.0.0: Remove
ordered.
- class geonature.core.gn_permissions.schemas.PermObjectSchema(*args, **kwargs)[source]¶
Bases:
geonature.utils.env.ma.SQLAlchemyAutoSchemaSQLAlchemyAutoSchema that automatically generates marshmallow fields from a SQLAlchemy model’s or table’s column. Uses the scoped session from Flask-SQLAlchemy by default.
See marshmallow_sqlalchemy.SQLAlchemyAutoSchema for more details on the SQLAlchemyAutoSchema API.
- class Meta[source]¶
Options object for a Schema.
Example usage:
from marshmallow import Schema class MySchema(Schema): class Meta: fields = ("id", "email", "date_created") exclude = ("password", "secret_attribute")
A note on type checking
Type checkers will only check the attributes of the Meta <marshmallow.Schema.Meta> class if you explicitly subclass marshmallow.Schema.Meta.
from marshmallow import Schema class MySchema(Schema): # Not checked by type checkers class Meta: additional = True class MySchema2(Schema): # Type checkers will check attributes class Meta(Schema.Meta): additional = True # Incompatible types in assignment
Supprimé dans la version 3.0.0b7: Remove
strict.Ajouté dans la version 3.0.0b12: Add unknown.
Modifié dans la version 3.0.0b17: Rename
dateformatto datetimeformat.Ajouté dans la version 3.9.0: Add timeformat.
Modifié dans la version 3.26.0: Deprecate
ordered. Field order is preserved by default.Supprimé dans la version 4.0.0: Remove
ordered.
- class geonature.core.gn_permissions.schemas.PermissionSchema(*args, **kwargs)[source]¶
Bases:
utils_flask_sqla.schema.SmartRelationshipsMixin,geonature.utils.env.ma.SQLAlchemyAutoSchemaMarchmallow-sqlalchemy behavior is to search object in database, and if not found, to create a new one. As this schema is not means to create any related object, nested fields are dump only (use the FK to set the value). For m2m fields, as it is not possible to load the FK which is in another table, we let the user provide m2m models PK, but we have validation hooks which verify that related models exists and have not been created by marchmallow-sqlalchemy.
- class Meta[source]¶
Options object for a Schema.
Example usage:
from marshmallow import Schema class MySchema(Schema): class Meta: fields = ("id", "email", "date_created") exclude = ("password", "secret_attribute")
A note on type checking
Type checkers will only check the attributes of the Meta <marshmallow.Schema.Meta> class if you explicitly subclass marshmallow.Schema.Meta.
from marshmallow import Schema class MySchema(Schema): # Not checked by type checkers class Meta: additional = True class MySchema2(Schema): # Type checkers will check attributes class Meta(Schema.Meta): additional = True # Incompatible types in assignment
Supprimé dans la version 3.0.0b7: Remove
strict.Ajouté dans la version 3.0.0b12: Add unknown.
Modifié dans la version 3.0.0b17: Rename
dateformatto datetimeformat.Ajouté dans la version 3.9.0: Add timeformat.
Modifié dans la version 3.26.0: Deprecate
ordered. Field order is preserved by default.Supprimé dans la version 4.0.0: Remove
ordered.
- class geonature.core.gn_permissions.schemas.PermissionAvailableSchema(*args, **kwargs)[source]¶
Bases:
utils_flask_sqla.schema.SmartRelationshipsMixin,geonature.utils.env.ma.SQLAlchemyAutoSchemaThis mixin automatically exclude from serialization:
Nested, RelatedList and Related fields
all fields with exclude=True in their metadata (e.g.
fields.String(metadata={'exclude': True}))For SQLAlchemyAutoSchema, all deffered columns
Default marshmallow behaviour is to serialize only fields specified in
only. This mixin add these:If they are only Nested fields in
only, they are added to serialized fields along with default serialized fields.To serialize Nested fields only and not default serialized fields, add
"-"special value toonly.To add excluded fields (through metadata or deffered fields) to the serialization in addition to default serialized fields, use “+field_name” syntax.
Examples :
class FooSchema(SmartRelationshipsMixin): id = fields.Int() name = field.Str() default_excluded_field = fields.Str(metadata={"exclude": True}) relationship = fields.Nested(OtherSchema) # or field.RelatedList() / field.Related() FooSchema().dump() -> {"id": 1, "name": "toto" } FooSchema(only=["id"]).dump() -> {"id": 1} FooSchema(only=["default_excluded_field"]).dump() -> {"default_excluded_field": "test"} FooSchema(only=["+default_excluded_field"]).dump() -> {"id": 1, "name": "toto", "default_excluded_field": "test"} FooSchema(only=["relationship"]).dump() -> {"id": 1, "name": "toto", "relationship": {OtherSchema...} } FooSchema(only=["id", "relationship"]).dump() -> {"id": 1, "relationship": {OtherSchema...}} FooSchema(only=["-", "relationship"]).dump() -> {"relationship": {OtherSchema...}}
- class Meta[source]¶
Options object for a Schema.
Example usage:
from marshmallow import Schema class MySchema(Schema): class Meta: fields = ("id", "email", "date_created") exclude = ("password", "secret_attribute")
A note on type checking
Type checkers will only check the attributes of the Meta <marshmallow.Schema.Meta> class if you explicitly subclass marshmallow.Schema.Meta.
from marshmallow import Schema class MySchema(Schema): # Not checked by type checkers class Meta: additional = True class MySchema2(Schema): # Type checkers will check attributes class Meta(Schema.Meta): additional = True # Incompatible types in assignment
Supprimé dans la version 3.0.0b7: Remove
strict.Ajouté dans la version 3.0.0b12: Add unknown.
Modifié dans la version 3.0.0b17: Rename
dateformatto datetimeformat.Ajouté dans la version 3.9.0: Add timeformat.
Modifié dans la version 3.26.0: Deprecate
ordered. Field order is preserved by default.Supprimé dans la version 4.0.0: Remove
ordered.