Skip to content
Snippets Groups Projects
forms.py 1.62 KiB
from django.utils.translation import gettext as _

from material import Layout, Row, Fieldset

from aleksis.core.forms import ActionForm
from aleksis.core.mixins import ExtensibleForm

from .models.base import Client
from .models.invoice import InvoiceGroup
from .tasks import email_invoice


def send_emails_action(modeladmin, request, queryset):
    """Send e-mails for selected invoices."""
    email_invoice.delay(list(queryset.values_list("token", flat=True)))


send_emails_action.short_description = _("Send e-mails")
send_emails_action.permission = "tezor.send_invoice_email"


class InvoicesActionForm(ActionForm):
    def get_actions(self):
        return [send_emails_action]


class EditClientForm(ExtensibleForm):
    """Form to create or edit clients."""

    layout = Layout(
        Row("name", "email"),
        Fieldset(
            _("Payment pledge"),
            Row("pledge_enabled"),
        ),
        Fieldset(
            _("Sofort / Klarna"),
            "sofort_enabled",
            Row("sofort_api_id", "sofort_api_key", "sofort_project_id"),
        ),
        Fieldset(
            _("PayPal"),
            "paypal_enabled",
            Row("paypal_client_id", "paypal_secret", "paypal_capture"),
        ),
        Fieldset(
            _("Debit"),
            "sdd_enabled",
            Row("sdd_creditor", "sdd_creditor_identifier"),
            Row("sdd_iban", "sdd_bic")
        ),
    )

    class Meta:
        model = Client
        exclude = []


class EditInvoiceGroupForm(ExtensibleForm):

    layout = Layout(Row("name", "template_name"))

    class Meta:
        model = InvoiceGroup
        exclude = ["client"]