from django.contrib import admin from django.http import HttpResponseRedirect from django.core.mail import get_connection, EmailMessage from .models import FeedbackFromForm, EmailConnectionSettings admin.site.register(EmailConnectionSettings) @admin.register(FeedbackFromForm) class FeedbackFromFormAdmin(admin.ModelAdmin): list_display = ('created_at', 'email', 'subject', 'success') readonly_fields = ('success',) search_fields = ('email',) change_form_template = "mail_vanger/resend_button_form.html" def response_change(self, request, obj): if "resend-button" in request.POST: try: email_settings: EmailConnectionSettings = EmailConnectionSettings.objects.all().first() smtp_backend = get_connection( backend="django.core.mail.backends.smtp.EmailBackend", host=email_settings.host, port=email_settings.port, use_tls=email_settings.use_tls, use_ssl=email_settings.use_ssl, **{ 'username': email_settings.username if email_settings.username else None, 'password': email_settings.password if email_settings.password else None, 'ssl_keyfile': email_settings.ssl_keyfile if email_settings.use_ssl else None, 'ssl_certfile': email_settings.ssl_certfile if email_settings.use_ssl else None } ) message = EmailMessage( from_email=email_settings.username, subject=obj.subject, body=obj.body, to=[obj.email] ) smtp_backend.send_messages([message]) obj.error_message = '' obj.success = True except Exception as e: obj.error_message = f'Ошибка при повторной отправке сообщения: {str(e)}' obj.save() return HttpResponseRedirect(".") return super().response_change(request, obj)