mirror of
https://github.com/pretix/pretix.git
synced 2026-05-14 16:44:06 +00:00
76 lines
2.5 KiB
Python
76 lines
2.5 KiB
Python
from django import forms
|
|
from django.forms import formset_factory
|
|
from django.utils.translation import gettext_lazy as _
|
|
|
|
from pretix.base.datasync.datasync import (
|
|
MODE_APPEND_LIST, MODE_OVERWRITE, MODE_SET_IF_EMPTY, MODE_SET_IF_NEW,
|
|
)
|
|
from pretix.base.datasync.sourcefields import QUESTION_TYPE_IDENTIFIERS
|
|
|
|
|
|
class PropertyMappingForm(forms.Form):
|
|
pretix_field = forms.CharField()
|
|
external_field = forms.CharField()
|
|
value_map = forms.CharField(required=False)
|
|
overwrite = forms.ChoiceField(
|
|
choices=[
|
|
(MODE_OVERWRITE, _("Overwrite")),
|
|
(MODE_SET_IF_NEW, _("Fill if new contact")),
|
|
(MODE_SET_IF_EMPTY, _("Fill if empty")),
|
|
(MODE_APPEND_LIST, _("Add to list")),
|
|
]
|
|
)
|
|
|
|
def __init__(self, pretix_fields, external_fields_id, *args, **kwargs):
|
|
super().__init__(*args, **kwargs)
|
|
self.fields["pretix_field"] = forms.ChoiceField(
|
|
label=_("pretix Field"),
|
|
choices=pretix_fields_choices(pretix_fields),
|
|
required=False,
|
|
)
|
|
if external_fields_id:
|
|
self.fields["external_field"] = forms.ChoiceField(
|
|
widget=forms.Select(
|
|
attrs={
|
|
"data-model-select2": "json_script",
|
|
"data-select2-src": "#" + external_fields_id,
|
|
},
|
|
),
|
|
)
|
|
self.fields["external_field"].choices = [
|
|
(self["external_field"].value(), self["external_field"].value()),
|
|
]
|
|
print(self.fields)
|
|
|
|
|
|
class PropertyMappingFormSet(formset_factory(
|
|
PropertyMappingForm,
|
|
can_order=True,
|
|
can_delete=True,
|
|
extra=0,
|
|
)):
|
|
template_name = "pretixcontrol/datasync/property_mapping_formset.html"
|
|
|
|
def __init__(self, pretix_fields, external_fields, prefix, *args, **kwargs):
|
|
super().__init__(
|
|
form_kwargs={
|
|
"pretix_fields": pretix_fields,
|
|
"external_fields_id": prefix + "external-fields" if external_fields else None,
|
|
},
|
|
prefix=prefix,
|
|
*args, **kwargs)
|
|
self.external_fields = external_fields
|
|
|
|
def get_context(self):
|
|
ctx = super().get_context()
|
|
ctx["external_fields"] = self.external_fields
|
|
ctx["external_fields_id"] = self.prefix + "external-fields"
|
|
return ctx
|
|
|
|
|
|
def pretix_fields_choices(pretix_fields):
|
|
return [
|
|
(key, label + " [" + QUESTION_TYPE_IDENTIFIERS[ptype] + "]")
|
|
for (required_input, key, label, ptype, enum_opts, getter) in pretix_fields
|
|
]
|