Пример #1
0
def get_all_enum_proxies():
    """Produce a collection of all the application Enums (subclasses of `Enum`) in proxy form.

    Note: Subclasses of `Enum` will only be found if they were previously imported.
    :return: A list of dicts of the form::
        {
            'name': <Enum.__name__>,
            'items: [
                {
                    'name': <EnumItem.name>,
                    'key': <EnumItem.key>,
                    'value': <EnumItem.value>,
                    'metadata': <EnumItem.metadata>,
                },
            ],
            'metadata': {...},
        }
    """
    enum_proxies = []
    for enum_cls in sorted(cu.subclasses(Enum), key=lambda obj: obj.__name__):
        if is_dynamic_enum(enum_cls):
            # Explicitly refresh the dynamic enums
            enum_cls.__refresh__()

        items = [create_enum_item_proxy(
            su.snake_to_spinal(enum_cls.lookup(x[0])), x[0], x[1], enum_cls.metadata(x[0])) for x in enum_cls.verbose()]

        enum_metadata = enum_cls.__metadata__ if hasattr(enum_cls, '__metadata__') else None

        enum_proxies.append(create_enum_proxy(enum_cls.__name__, items, enum_metadata))
    return enum_proxies
Пример #2
0
    def register_schema_models(self, exclusions=None):
        """Register all the Swagger schema models by locating classes that extend from `APISchema`.
        The schema fields are converted to Restplus fields in order to generate the Swagger-compliant schema models.
        If there are `SchemaView`s defined for the `APISchema` class,
        the view-specific schema models are also generated.
        """
        exclusions = exclusions or set()

        for schema_model_cls in filter(lambda x: x not in exclusions, cu.subclasses(schema.APISchema)):
            self.schema_model(schema_model_cls)
            if hasattr(schema_model_cls.Meta, 'views'):
                for schema_view in schema_model_cls.Meta.views:
                    self.schema_model(schema_model_cls, schema_view.name)