members/freizeit: add pdf generation buttons in change view

v1-0-stable
Christian Merten 3 years ago
parent 3faab11f06
commit c8681cc8b1
Signed by: christian.merten
GPG Key ID: D953D69721B948B3

@ -9,6 +9,7 @@ import random
import string import string
from functools import partial, update_wrapper from functools import partial, update_wrapper
from django.contrib.admin.templatetags.admin_urls import add_preserved_filters
from django.template.loader import get_template from django.template.loader import get_template
from django.urls import path, reverse from django.urls import path, reverse
from django.http import HttpResponse, HttpResponseRedirect from django.http import HttpResponse, HttpResponseRedirect
@ -599,6 +600,7 @@ class FreizeitAdmin(nested_admin.NestedModelAdmin):
search_fields = ('name',) search_fields = ('name',)
ordering = ('-date',) ordering = ('-date',)
actions = ['crisis_intervention_list', 'notes_list', 'seminar_report'] actions = ['crisis_intervention_list', 'notes_list', 'seminar_report']
view_on_site = False
#formfield_overrides = { #formfield_overrides = {
# ManyToManyField: {'widget': forms.CheckboxSelectMultiple}, # ManyToManyField: {'widget': forms.CheckboxSelectMultiple},
# ForeignKey: {'widget': apply_select2(forms.Select)} # ForeignKey: {'widget': apply_select2(forms.Select)}
@ -630,6 +632,34 @@ class FreizeitAdmin(nested_admin.NestedModelAdmin):
return render_tex(title + "_Seminarbericht", 'members/seminar_report.tex', context) return render_tex(title + "_Seminarbericht", 'members/seminar_report.tex', context)
seminar_report.short_description = _('Generate seminar report') seminar_report.short_description = _('Generate seminar report')
def get_urls(self):
urls = super().get_urls()
def wrap(view):
def wrapper(*args, **kwargs):
return self.admin_site.admin_view(view)(*args, **kwargs)
wrapper.model_admin = self
return update_wrapper(wrapper, view)
custom_urls = [
path(
"<path:object_id>/action/",
wrap(self.action_view),
name="%s_%s_action" % (self.opts.app_label, self.opts.model_name),
),
]
return custom_urls + urls
def action_view(self, request, object_id):
if "seminar_report" in request.POST:
return self.seminar_report(request, [Freizeit.objects.get(pk=object_id)])
if "notes_list" in request.POST:
return self.notes_list(request, [Freizeit.objects.get(pk=object_id)])
if "crisis_intervention_list" in request.POST:
return self.crisis_intervention_list(request, [Freizeit.objects.get(pk=object_id)])
return HttpResponseRedirect(reverse('admin:%s_%s_change' % (self.opts.app_label, self.opts.model_name),
args=(object_id,)))
class KlettertreffAdminForm(forms.ModelForm): class KlettertreffAdminForm(forms.ModelForm):
class Meta: class Meta:

@ -4,11 +4,31 @@
{% block object-tools-items %} {% block object-tools-items %}
<li> <li>
{% if original.statement and not original.statement.submitted %} <form method="post" action="{% url 'admin:members_freizeit_action' original.statement.pk %}">
<a class="historylink" href="{% url 'admin:finance_statementunsubmitted_submit' original.statement.pk %}">{% trans 'Submit statement' %}</a> {% csrf_token %}
{% endif %} <input type="submit" name="crisis_intervention_list" value="{% trans 'Generate crisis intervention list' %}">
</form>
</li> </li>
<li>
<form method="post" action="{% url 'admin:members_freizeit_action' original.statement.pk %}">
{% csrf_token %}
<input type="submit" name="notes_list" value="{% trans 'Generate overview' %}">
</form>
</li>
<li>
<form method="post" action="{% url 'admin:members_freizeit_action' original.statement.pk %}">
{% csrf_token %}
<input type="submit" name="seminar_report" value="{% trans 'Generate seminar report' %}">
</form>
</li>
{% if original.statement and not original.statement.submitted %}
<li>
<a class="historylink" href="{% url 'admin:finance_statementunsubmitted_submit' original.statement.pk %}">{% trans 'Submit statement' %}</a>
</li>
{% endif %}
{{block.super}} {{block.super}}
{% endblock %} {% endblock %}

Loading…
Cancel
Save