Source code for banjo.forms

from django import forms

type_fields = {
    str: lambda: forms.CharField(),
    bool: lambda: forms.BooleanField(required=False),
    int: lambda: forms.IntegerField(),
    float: lambda: forms.FloatField(),
}

[docs] class ApiRouteForm(forms.Form): """Dynamically instantiates a form matching a route's args dict. ApiRouteForm is used in automatically constructing the API page for each route. Args should be a dict of {param_name: type}, where type is in [str, bool, int, float]. """
[docs] @classmethod def for_args(cls, args, class_name=None): "Dynamically define a form class for the given route args." class_name = class_name or "ApiRouteFormWithArgs" fields = {name: type_fields[t]() for name, t in args.items()} return type(class_name, (ApiRouteForm,), fields)