58 lines
2.1 KiB
Python
58 lines
2.1 KiB
Python
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)
|
|
|
|
|
|
|
|
|
|
|