diff --git a/alkatorapi/forms.py b/alkatorapi/forms.py
new file mode 100644
index 0000000..e69de29
diff --git a/alkatorapi/migrations/0017_racer_register_date.py b/alkatorapi/migrations/0017_racer_register_date.py
new file mode 100644
index 0000000..a14f34e
--- /dev/null
+++ b/alkatorapi/migrations/0017_racer_register_date.py
@@ -0,0 +1,18 @@
+# Generated by Django 4.2.12 on 2024-10-11 08:17
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('alkatorapi', '0016_profile_alter_user_alkator_class_racer'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='racer',
+ name='register_date',
+ field=models.DateTimeField(auto_now=True),
+ ),
+ ]
diff --git a/alkatorapi/models.py b/alkatorapi/models.py
index b29d2e7..e9f36fc 100644
--- a/alkatorapi/models.py
+++ b/alkatorapi/models.py
@@ -63,6 +63,7 @@ class Racer(models.Model):
team = models.CharField(max_length=120, null=True, blank=True)
phone = models.CharField(max_length=120, null=True, blank=True)
date_of_birth = models.DateField(null=True, blank=True)
+ register_date = models.DateTimeField(auto_now=True)
duration = models.DurationField(null=True, blank=True)
starting_number = models.IntegerField(null=True, blank=True)
alkator_category = models.IntegerField(choices=ALKATOR_CHOICES, default=1)
diff --git a/alkatorapi/templates/invoice.html b/alkatorapi/templates/invoice.html
index fb6808e..b0d3256 100644
--- a/alkatorapi/templates/invoice.html
+++ b/alkatorapi/templates/invoice.html
@@ -21,7 +21,7 @@
|
Číslo faktury |
- {{user.invoice_id}} |
+ {{racer.invoice_id}} |
Dodavatel |
@@ -51,7 +51,7 @@
|
|
Jméno |
- {{user.first_name}} {{user.last_name}} |
+ {{user.profile.first_name}} {{user.profile.last_name}} |
|
@@ -67,7 +67,7 @@
|
|
Adresa |
- {{user.address}} |
+ {{user.profile.address}} |
|
|
@@ -166,7 +166,7 @@
131-2219860207/0100 |
|
Datum vystavení |
- {{user.register_date|date:"d/m/Y"}} |
+ {{racer.register_date|date:"d/m/Y"}} |
Variabilní symbol |
@@ -217,9 +217,9 @@
|
1 |
|
- {{user.price}},00 Kč |
+ {{racer.price}},00 Kč |
|
- {{user.price}},00 Kč |
+ {{racer.price}},00 Kč |
|
@@ -272,7 +272,7 @@
|
|
Celkem |
- {{user.price}},00 Kč |
+ {{racer.price}},00 Kč |
|
diff --git a/alkatorapi/views.py b/alkatorapi/views.py
index 903731d..20f557c 100644
--- a/alkatorapi/views.py
+++ b/alkatorapi/views.py
@@ -7,7 +7,7 @@ from django.contrib.admin.views.decorators import staff_member_required
from django.contrib.auth.models import User as DjangoUser
from django.contrib.auth import authenticate
from django.contrib.auth import login as auth_login, logout as auth_logout
-from django.core.mail import send_mail, mail_admins
+from django.core.mail import send_mail, mail_admins, EmailMessage
from django.utils.datastructures import MultiValueDictKeyError
from datetime import date, datetime, timedelta
from urllib.parse import parse_qs
@@ -317,9 +317,9 @@ def payment_result(request):
if paid == 'PAID':
racer.paid = True
racer.save()
- send_mail(
- f"úspěšná registrace do závodu Alkátor race Dolní Čermná ({racer.first_name} {racer.last_name})",
- f"""Zdravím tě Alkátore,
+ mail = EmailMessage(
+ subject=f"úspěšná registrace do závodu Alkátor race Dolní Čermná ({racer.first_name} {racer.last_name})",
+ body=f"""Zdravím tě Alkátore,
toto je potvrzovací email o účasti v nezapomenutelném závodě Alkátor-race.
Prosíme kontrolujete si své hromadné schránky a spamy.
@@ -338,9 +338,30 @@ ALKÁTOR TEAM
email: info@alkator.cz
tel: + 420 728 018 088
web: https://alkator.cz""",
- "info@alkator.cz",
- [racer.profile.user.email, racer.email] if racer.email else [racer.profile.user.email],
+ from_email="info@alkator.cz",
+ to=[racer.profile.user.email, racer.email] if racer.email else [racer.profile.user.email],
+ bcc=[],
+ cc=[]
)
+
+ user = request.user
+
+ template = TemplateResponse(
+ None,
+ 'invoice.html',
+ {
+ 'user': user,
+ 'racer': racer,
+ 'paid_date': racer.register_date + timedelta(days=1),
+ }
+ )
+ template.render()
+ pdf_name = f"invoices/{user.profile.last_name}_{user.profile.first_name}.pdf"
+ HTML(string=template.content).write_pdf(pdf_name)
+
+ attach = open(pdf_name, 'rb')
+ mail.attach('faktura.pdf', attach.read(), 'application/pdf')
+ mail.send()
elif paid == 'CANCELLED' and not user.paid:
racer.delete()
return HttpResponse(status=200)
diff --git a/invoices/.gitkeep b/invoices/.gitkeep
new file mode 100644
index 0000000..e69de29
diff --git a/send_mail.py b/send_mail.py
new file mode 100644
index 0000000..5abb0a8
--- /dev/null
+++ b/send_mail.py
@@ -0,0 +1,26 @@
+from alkatorapi.models import User
+from django.core.mail import send_mail
+
+for user in User.objects.all():
+ if user.starting_number and user.email:
+ send_mail(
+ "Díky ALKÁTORE!",
+ f"""Milý Alkátore,
+
+kdo zvládne nejen běžet, ale i přemoci pár trestných panáků a piv na trati, zaslouží naše hluboké uznání! Bylo skvělé, že jsi se k nám přidal na tento nezapomenutelný závod. Jsi skutečný šampion – nejen na nohách, ale i při zdolávání těch tekutých výzev!
+
+Pokud jsi během závodu pořídil nějaké fotky nebo videa, budeme rádi, když nám je nahraješ přes tento odkaz: https://alkator.cz/#upload_files. Rádi se podíváme na tvoje zážitky a možná je i nasdílíme!
+
+Tak na zdraví a na trénink nezapomínej – další běh a panáky čekají!
+
+S pozdravem,
+Tým organizátorů
+
+ALKÁTOR TEAM
+email: info@alkator.cz
+tel: + 420 728 018 088
+web: https://alkator.cz""",
+ "info@alkator.cz",
+ [user.email],
+ )
+ print(f"sent to: {user.email}")
\ No newline at end of file