Source code for members.admin_views
"""Admin views provided by the members package"""
import csv
from django.contrib.admin.views.decorators import staff_member_required
from django.contrib.auth.decorators import permission_required
from django.http import HttpResponse
from django.utils.decorators import method_decorator
from django.views import View
from members.models import Member
[docs]@method_decorator(staff_member_required, "dispatch")
@method_decorator(permission_required("auth.change_user"), "dispatch")
class IbanExportView(View):
"""
Exports IBANs of users that have set auto renew to true in their accounts
"""
[docs] def get(self, request, **kwargs) -> HttpResponse:
header_fields = ["name", "username", "iban", "bic"]
rows = []
members = Member.current_members.filter(profile__auto_renew=True)
for member in members:
if (
member.current_membership.type != "honorary"
and member.bank_accounts.exists()
):
bank_account = member.bank_accounts.last()
rows.append(
{
"name": bank_account.name,
"username": member.username,
"iban": bank_account.iban,
"bic": bank_account.bic,
}
)
response = HttpResponse(content_type="text/csv")
writer = csv.DictWriter(response, header_fields)
writer.writeheader()
for row in rows:
writer.writerow(row)
response["Content-Disposition"] = 'attachment; filename="iban-export.csv"'
return response