Files @ 479bdd36a3a2
Branch filter:

Location: symposion_app/registrasion/reporting/forms.py

Christopher Neugebauer
s/InvoiceNagForm/InvoiceEmailForm/
from registrasion.models import conditions
from registrasion.models import inventory

from symposion.proposals import models as proposals_models

from django import forms

# Reporting forms.


def mix_form(*a):
    ''' Creates a new form class out of all the supplied forms '''

    bases = tuple(a)
    return type("MixForm", bases, {})


class DiscountForm(forms.Form):
    discount = forms.ModelMultipleChoiceField(
        queryset=conditions.DiscountBase.objects.all(),
        required=False,
    )


class ProductAndCategoryForm(forms.Form):
    product = forms.ModelMultipleChoiceField(
        queryset=inventory.Product.objects.select_related("category"),
        required=False,
    )
    category = forms.ModelMultipleChoiceField(
        queryset=inventory.Category.objects.all(),
        required=False,
    )


class UserIdForm(forms.Form):
    user = forms.IntegerField(
        label="User ID",
        required=False,
    )


class ProposalKindForm(forms.Form):
    kind = forms.ModelMultipleChoiceField(
        queryset=proposals_models.ProposalKind.objects.all(),
        required=False,
    )


class GroupByForm(forms.Form):
    GROUP_BY_CATEGORY = "category"
    GROUP_BY_PRODUCT = "product"

    choices = (
        (GROUP_BY_CATEGORY, "Category"),
        (GROUP_BY_PRODUCT, "Product"),
    )

    group_by = forms.ChoiceField(
        label="Group by",
        choices=choices,
        required=False,
    )



def model_fields_form_factory(model):
    ''' Creates a form for specifying fields from a model to display. '''

    fields = model._meta.get_fields()

    choices = []
    for field in fields:
        if hasattr(field, "verbose_name"):
            choices.append((field.name, field.verbose_name))

    class ModelFieldsForm(forms.Form):
        fields = forms.MultipleChoiceField(
            choices=choices,
            required=False,
        )

    return ModelFieldsForm