|
|
@@ -1,38 +1 @@
|
|
|
from django.contrib import admin
|
|
|
-from django.core.mail import EmailMultiAlternatives
|
|
|
-from django.conf import settings
|
|
|
-from django.template.loader import render_to_string
|
|
|
-from django.shortcuts import redirect, render
|
|
|
-from django.contrib import messages
|
|
|
-from .models import InvitationCode
|
|
|
-import logging
|
|
|
-
|
|
|
-logger = logging.getLogger(__name__)
|
|
|
-
|
|
|
-
|
|
|
-@admin.register(InvitationCode)
|
|
|
-class InvitationCodeAdmin(admin.ModelAdmin):
|
|
|
- list_display = ['code', 'created_at', 'expires_at', 'is_used', 'used_by']
|
|
|
- list_filter = ['is_used', 'created_at']
|
|
|
- search_fields = ['code']
|
|
|
- readonly_fields = ['code', 'created_at']
|
|
|
-
|
|
|
- def add_view(self, request, form_url='', extra_context=None):
|
|
|
- if request.method == 'POST':
|
|
|
- email = request.POST.get('email')
|
|
|
- logger.info(f"POST email: {email}")
|
|
|
- if email:
|
|
|
- invitation = InvitationCode.create_invitation(created_by=request.user)
|
|
|
- signup_url = f"https://jugaralpadel.es/accounts/signup/?code={invitation.code}"
|
|
|
- html_content = render_to_string('emails/invitacion.html', {'invitation_code': invitation.code, 'signup_url': signup_url})
|
|
|
- texto = f'Invitación Jugar al Pádel. Código: {invitation.code}. Enlace: {signup_url}'
|
|
|
- msg = EmailMultiAlternatives('Invitación a Jugar al Pádel', texto, settings.DEFAULT_FROM_EMAIL, [email])
|
|
|
- msg.attach_alternative(html_content, "text/html")
|
|
|
- msg.send()
|
|
|
- logger.info(f"Email enviado a {email}")
|
|
|
- self.message_user(request, f'Código enviado a {email}', messages.SUCCESS)
|
|
|
- return redirect('admin:accounts_invitationcode_changelist')
|
|
|
- return render(request, 'admin/invitationcode/add.html')
|
|
|
-
|
|
|
- def get_queryset(self, request):
|
|
|
- return super().get_queryset(request).select_related('used_by', 'created_by')
|