forked from CGM_Public/pretix_original
WIP
This commit is contained in:
@@ -37,7 +37,7 @@ class WalletLayout(LoggedModel):
|
||||
)
|
||||
platform = models.CharField(max_length=10)
|
||||
style = models.CharField(max_length=255)
|
||||
layout = models.TextField()
|
||||
layout = models.JSONField()
|
||||
|
||||
class Meta:
|
||||
ordering = ("name",)
|
||||
|
||||
@@ -10,15 +10,12 @@ class WalletPlatform:
|
||||
identifier: str
|
||||
name: str
|
||||
|
||||
def get_layout_qs(self):
|
||||
return WalletLayout.objects.filter(platform=self.identifier)
|
||||
|
||||
class ApplePlatform(WalletPlatform):
|
||||
identifier = "apple"
|
||||
name = _("Apple")
|
||||
|
||||
class GooglePlatform(WalletPlatform):
|
||||
identifier = "apple"
|
||||
identifier = "google"
|
||||
name = _("Google")
|
||||
|
||||
class PlaceholderFieldType(enum.Enum):
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
{% extends "pretixcontrol/event/base.html" %}
|
||||
{% load i18n %}
|
||||
{% load money %}
|
||||
{% load wallet %}
|
||||
{% block title %}{% trans "Wallet layouts" %}{% endblock %}
|
||||
{% block content %}
|
||||
<h1>{% trans "Wallet layouts" %}</h1>
|
||||
@@ -8,7 +9,8 @@
|
||||
{% for platform in platforms.values %}
|
||||
<fieldset>
|
||||
<legend>{{platform.name}}</legend>
|
||||
{% if platforms.get_layout_qs|length == 0 %}
|
||||
{% with platform_layouts=platform|platform_layouts:request.event %}
|
||||
{% if platform_layouts|length == 0 %}
|
||||
<div class="empty-collection">
|
||||
<p>
|
||||
{% blocktrans trimmed %}
|
||||
@@ -33,7 +35,7 @@
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for l in platforms.get_layout_qs %}
|
||||
{% for l in platform_layouts %}
|
||||
<tr>
|
||||
<td>
|
||||
{% if "can_change_event_settings" in request.eventpermset %}
|
||||
@@ -74,6 +76,7 @@
|
||||
</table>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endwith %}
|
||||
</fieldset>
|
||||
{% endfor %}
|
||||
</div>
|
||||
|
||||
@@ -34,7 +34,6 @@ class LayoutListView(EventPermissionRequiredMixin, ListView):
|
||||
|
||||
class LayoutEditForm(forms.ModelForm):
|
||||
style = forms.TypedChoiceField()
|
||||
layout = forms.JSONField(initial={})
|
||||
|
||||
def __init__(self, **kwargs):
|
||||
self.platform = kwargs.pop('platform')
|
||||
@@ -70,12 +69,13 @@ class LayoutEditForm(forms.ModelForm):
|
||||
)
|
||||
layout.validate()
|
||||
return self.cleaned_data
|
||||
|
||||
class LayoutCreateView(EventPermissionRequiredMixin, FormView):
|
||||
|
||||
class LayoutEditorView(EventPermissionRequiredMixin, UpdateView):
|
||||
template_name = "pretixplugins/wallet/edit.html"
|
||||
form_class = LayoutEditForm
|
||||
model = WalletLayout
|
||||
permission = "can_change_event_settings" # TODO: new permission name
|
||||
pk_url_kwarg = "layout"
|
||||
|
||||
@property
|
||||
def platform(self):
|
||||
@@ -106,57 +106,18 @@ class LayoutCreateView(EventPermissionRequiredMixin, FormView):
|
||||
}
|
||||
return context
|
||||
|
||||
def form_valid(self, form):
|
||||
self.object = WalletLayout.objects.create(
|
||||
event=self.request.event,
|
||||
name=form.cleaned_data["name"],
|
||||
platform=self.platform,
|
||||
style=form.cleaned_data["style"],
|
||||
layout=form.cleaned_data["layout"],
|
||||
)
|
||||
return redirect(
|
||||
reverse(
|
||||
"plugins:wallet:edit",
|
||||
kwargs={
|
||||
"organizer": self.request.event.organizer.slug,
|
||||
"event": self.request.event.slug,
|
||||
"platform": self.platform,
|
||||
"layout": self.object.pk,
|
||||
},
|
||||
)
|
||||
def get_success_url(self) -> str:
|
||||
return reverse(
|
||||
"plugins:wallet:edit",
|
||||
kwargs={
|
||||
"organizer": self.request.event.organizer.slug,
|
||||
"event": self.request.event.slug,
|
||||
"platform": self.platform,
|
||||
"layout": self.object.pk,
|
||||
},
|
||||
)
|
||||
|
||||
class LayoutEditorView(EventPermissionRequiredMixin, UpdateView):
|
||||
template_name = "pretixplugins/wallet/edit.html"
|
||||
form_class = LayoutEditForm
|
||||
success_url = ""
|
||||
permission = "can_change_event_settings"
|
||||
|
||||
@property
|
||||
def platform(self):
|
||||
return self.kwargs["platform"]
|
||||
|
||||
def get_form_kwargs(self) -> dict[str, Any]:
|
||||
kwargs = super().get_form_kwargs()
|
||||
kwargs["platform"] = self.platform
|
||||
return kwargs
|
||||
|
||||
def get_platform_styles(self):
|
||||
if self.platform not in get_platforms():
|
||||
raise Http404(
|
||||
_("Unknown platform '{platform}'").format(platform=self.platform)
|
||||
)
|
||||
return get_platform_styles(self.platform)
|
||||
|
||||
def get_context_data(self, **kwargs) -> dict[str, Any]:
|
||||
context = super().get_context_data(**kwargs)
|
||||
context["styles"] = {
|
||||
id: style.asdict() for id, style in self.get_platform_styles().items()
|
||||
}
|
||||
context["variables"] = {
|
||||
"text": {
|
||||
varname: {"label": var["label"], "editor_sample": var["editor_sample"]}
|
||||
for varname, var in get_variables(self.request.event).items()
|
||||
}
|
||||
}
|
||||
return context
|
||||
class LayoutCreateView(LayoutEditorView):
|
||||
def get_object(self, queryset=None):
|
||||
return WalletLayout(event=self.request.event, platform=self.platform)
|
||||
Reference in New Issue
Block a user