"""A simple email backend, which only prepends all subjects with a string.

Used to distinguish testing emails from production ones."""

# We try to monkeypatch django.core.mail.backends.smtp :-)

from django.core.mail.backends.smtp import EmailBackend as DjangoSMTPBackend
from django.conf import settings

def omezovatko_poctu_mailu(maily:list, maximum:int) -> str:
	if len(maily) <= maximum: return str(maily)
	# Aspoň zhruba simulujeme tisk pole…
	return '[' + ", ".join(f"'{mail}'" for mail in maily[:maximum - 1]) + f', … ({len(maily)} e-mailů) ]'

class PrefixingMailBackend(DjangoSMTPBackend):
	# method _send is not probably meant to be monkey_patched, so we patch send_messages instead.
	def send_messages(self, messages):
		prefix = '[Mail z testwebu]'
		for message in messages:
			# We hope that this is a django.core.mail.message.EmailMessage

			if message.from_email != settings.SERVER_EMAIL:
				message.subject = prefix + ' ' + message.subject
				to = omezovatko_poctu_mailu(message.to, 3)
				cc = omezovatko_poctu_mailu(message.cc, 3)
				bcc = omezovatko_poctu_mailu(message.bcc, 3)
				message.body = f"""Bylo by posláno na e-maily:
	To: {to}
	Cc: {cc}
	Bcc: {bcc}
"""+ "\n\n" + message.body
				message.to = settings.TESTOVACI_EMAILOVA_KONFERENCE
				message.cc = []
				message.bcc = []
		return super().send_messages(messages)