From c55718f3b77f37f775aa5942c2760ebfab888a58 Mon Sep 17 00:00:00 2001 From: Federico Justus Denkena Date: Mon, 19 Feb 2024 16:00:06 +0100 Subject: [PATCH] implement abstract classes and prepare final mail --- templates/anmeldung.html | 4 ++ templates/base.html | 2 +- templates/contact.html | 6 +-- templates/final_mail.html | 37 +++++++++++++++ templates/final_mail.txt | 16 +++++++ templates/tagungsplan.html | 18 ++++---- website/__pycache__/admin.cpython-311.pyc | Bin 1153 -> 3664 bytes website/__pycache__/models.cpython-311.pyc | Bin 7452 -> 8805 bytes website/__pycache__/views.cpython-311.pyc | Bin 6855 -> 6891 bytes website/admin.py | 21 ++++++--- .../0017_rename_registrant_registrant2024.py | 17 +++++++ website/migrations/0018_registrant2025.py | 42 ++++++++++++++++++ ...9_alter_registrant2024_options_and_more.py | 21 +++++++++ ...0_alter_registrant2024_options_and_more.py | 21 +++++++++ ..._registrant_registrant2024.cpython-311.pyc | Bin 0 -> 707 bytes .../0018_registrant2025.cpython-311.pyc | Bin 0 -> 2678 bytes ...trant2024_options_and_more.cpython-311.pyc | Bin 0 -> 849 bytes ...trant2024_options_and_more.cpython-311.pyc | Bin 0 -> 906 bytes website/models.py | 30 ++++++++++--- website/views.py | 20 +++++---- 20 files changed, 221 insertions(+), 34 deletions(-) create mode 100644 templates/final_mail.html create mode 100644 templates/final_mail.txt create mode 100644 website/migrations/0017_rename_registrant_registrant2024.py create mode 100644 website/migrations/0018_registrant2025.py create mode 100644 website/migrations/0019_alter_registrant2024_options_and_more.py create mode 100644 website/migrations/0020_alter_registrant2024_options_and_more.py create mode 100644 website/migrations/__pycache__/0017_rename_registrant_registrant2024.cpython-311.pyc create mode 100644 website/migrations/__pycache__/0018_registrant2025.cpython-311.pyc create mode 100644 website/migrations/__pycache__/0019_alter_registrant2024_options_and_more.cpython-311.pyc create mode 100644 website/migrations/__pycache__/0020_alter_registrant2024_options_and_more.cpython-311.pyc diff --git a/templates/anmeldung.html b/templates/anmeldung.html index 427ea026..565c7792 100644 --- a/templates/anmeldung.html +++ b/templates/anmeldung.html @@ -7,6 +7,7 @@

Anmeldung

+{% if AKTIVIERT %}
{% csrf_token %}
@@ -101,5 +102,8 @@
+{% else %} +
Die Anmeldung ist zur Zeit geschlossen. Bitte schaut später noch einmal vorbei.
+{% endif %} {% endblock content %} diff --git a/templates/base.html b/templates/base.html index 869e79cc..cd77a695 100644 --- a/templates/base.html +++ b/templates/base.html @@ -7,7 +7,7 @@ - diff --git a/templates/contact.html b/templates/contact.html index fd94c5c3..a754d352 100644 --- a/templates/contact.html +++ b/templates/contact.html @@ -6,14 +6,14 @@

Kontakt

-
+

Tagungsbüro

Mail: buero@im-puls.org

Eine Telefonnummer des Tagungsbüros wird an alle Teilnehmer versendet.

Das Tagungsbüro ist die zentrale Stelle für alle Kontaktanfragen. Sie können Sich gerne mit all Ihrer Anfragen an uns wenden. Selbstverständlich werden wir all Ihre Daten sicher und verschwiegen behandeln.

Träger und verantwortliche Stelle ist die Christengemeinschaft. -
+{% if False %}

Anonymes Kontaktformular

@@ -39,10 +39,10 @@ {{ contact_form.captcha.errors }}
{{contact_form.captcha }}
-
+{% endif %}
{% endblock content %} diff --git a/templates/final_mail.html b/templates/final_mail.html new file mode 100644 index 00000000..e8c9e23d --- /dev/null +++ b/templates/final_mail.html @@ -0,0 +1,37 @@ +{% extends 'base_mail.html' %} +{% load static %} +{% block content %} +
+ +

{% if form.gender == "Männlich" %}Lieber{% else %}Liebe{% endif %} {{form.name}},

+

die Tagung hat nun ihr Ende gefunden. Erst einmal herzlichen Dank dafür, dass du Teil dieser Tagung mit uns warst. Nun folgt die Kontaktliste mit Teilnehmern der Tagung.
Falls bei einem Teilnehmer mal keine Adresse steht bedeutet dass, das der Teilnehmer eine Weitergabe seiner Daten nicht wünscht.

+
+ + + + + + + + + +{% for reg in RegistrantList %} + + + {% if reg.publish_address %}{% else %}{% endif %} + + {% if reg.publish_phone %}{% else %}{% endif %} + +{% empty %} + +{% endfor %} + +
NameAnschriftMail-AdresseTelefonnummer
{{ reg.name }}{{reg.address_street}},
{{reg.address_plz}} {{reg.address_town}}
---{{reg.mail}}{{ reg.phone }}---
Leider konnten momentan keine Teilnehmer abgerufen werden.
+

Wir hoffen, dass Du viele Impulse aus der Tagung ziehen konntest.
Hier noch eine letzte Impuls-Vertiefung: Welche Impulse konntest du den aus der Tagung in dein Leben mitnehmen?
+Mit herzlichen Grüßen,
+Euer Vorbereitungsteam
+

+ + +{% endblock content %} diff --git a/templates/final_mail.txt b/templates/final_mail.txt new file mode 100644 index 00000000..abccf977 --- /dev/null +++ b/templates/final_mail.txt @@ -0,0 +1,16 @@ +{% if form.gender == "Männlich" %}Lieber{% else %}Liebe{% endif %} {{form.name}}, +Wir freuen uns auf auf Dich und die bevorstehende Im-Puls-Tagung. Hier noch +eine kleine Erinnerung: +- Schreibzeug, Hausschuhe, Eurythmieschuhe, Musikinstrumente, Schlafsack und Isomatte mitbringen. +- Denkt an den Kuchen! +- Das Tagungsbüro ist unter folgender Rufnummer erreichbar: 0151 70818415. +- Die Tagung beginnt am 14. Februar um 17:00, Anreise ab 15:00. +- Bei weiteren Fragen kannst Du gerne mit dem Tagungsbüro Kontakt aufnehmen. + Auch gibt es schon einen kleinen Vorgeschmack auf die Arbeitsgruppen: +- Daniel Hafner: Einführung in die Anthroposophie +- Felicia Holland: Workshop „Kunst als Weg“ +- Ran Miller: Eurythmie +- Martin Merckens: Spannungsfeld zwischen Licht und Finsternis + +In Freude auf ein baldiges Treffen, +Euer Vorbereitungsteam diff --git a/templates/tagungsplan.html b/templates/tagungsplan.html index c2879fc4..7f034096 100644 --- a/templates/tagungsplan.html +++ b/templates/tagungsplan.html @@ -8,12 +8,12 @@ - - - - - - + + + + + + @@ -52,12 +52,12 @@ - + - + @@ -88,7 +88,7 @@ - + diff --git a/website/__pycache__/admin.cpython-311.pyc b/website/__pycache__/admin.cpython-311.pyc index 27d90dcfc5a7cff601ee26a49a41781d46a5aed8..310b964ee0bf9c01cdd3bafa22fcaff3446ef36c 100644 GIT binary patch literal 3664 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 delta 1234 zcmaiyO=uHA6vt;a$tI26&8ErbbK77qC8C1RgK5Qj5Cx^RRHYDlXv!|3HXmj-(St~W zc!;1-9giM7#Y1zETzl{&;zhhk&lc%H+?Jda#5WVtq}x?zng6~w^PBmm1*ST z6?c5jJ;)E&i2^cQcijD4_c$!Db^i=7fV+lrypZ8X!hn z7_JX`uVv#s*M6=`ZMlW(N05XQa)e0!m(cXUW0W1&75JxuJN_jjziw7Zu2kK-1lG6G z0yzn9at35?9?_5C7G9ziHI66fwv@mdbW8mmo`qTS6V%=~e7UyweV2~?iQan3vRCDPd*UKx;X_hRF0BpdMp8r-EdiGpiPlIL}j~VLDIsGcz<2b8rbRjKK zuacslwUj~_!z-w=s75PVXr;kICbyxRa67}6a-vyyQhHiyT(tzj!;GDEpO1HkXGJ8Z zs4+h4WqU8AqjWO$;ykZ_o3Ftrwt<%3&vgGX&&&A(pHSxx diff --git a/website/__pycache__/views.cpython-311.pyc b/website/__pycache__/views.cpython-311.pyc index 962cf829fd50ec1d2c4104a7c727f4dc041c690d..ef59f6baa9c8ef8195774398b217fdc65f303f07 100644 GIT binary patch delta 286 zcmX?Z`r4FtIWI340}%8@T~6)X$Sc99$QP8Fo>^Q{l$cjyWME`+O8~-8Epp2*$_0sR zwqtY=fw%ONFOWDYb3Ohf}2#lk?Mf#E5)-~{yx(t4A-S*17M z5Nc-P6o6@*93#4!?-mcT@smZwrgOytHO7NXm@|2+SdQ`qP3s+L2U2##U6k;-BH`2F zc~@Nhf(A@X+~rO+F-fhuiQ20}~^Jn7mR- F4ghe4U$g)K delta 255 zcmaEDdfb$EIWI340}$k$-JP1bkynCIk}D`RJ+ru^C^4_(77v7-TI7~rl)KrD(M6Dz zGdD3aXYv_-Db*r#pgu4W4P+Dx0f`2Nr`&=Q)Mr><8E3UqR8!9C3az)%_ sbDH>1M#h-Q36fHb$&;%kZS?{#Fpz*IKa;$}t@(k0i4j6fJ}V^$00r|?SO5S3 diff --git a/website/admin.py b/website/admin.py index fc77df79..78fdf710 100644 --- a/website/admin.py +++ b/website/admin.py @@ -1,15 +1,16 @@ from django.contrib import admin -from .models import Registrant, Author, Category, Post, Contact +from .models import Author, Category, Post, Contact, Registrant2024, Registrant2025 from django.core.mail import send_mail from django.template.loader import render_to_string class RegistrantAdmin(admin.ModelAdmin): - list_display = ('name','timestamp', 'payed', 'cake') + #list_display = ('name','timestamp', 'payed', 'cake', 'rate_reduced') + list_display = ('name','birthdate','address_town','mail') readonly_fields = ['timestamp'] list_filter = ['payed', 'rate_reduced', 'canceled', 'team', 'food', 'cake'] actions = ['welcome_mail','preparation_mail'] - @admin.action(description='Send welcome mail again...') + @admin.action(description='Send welcome mail to ...') def welcome_mail(self, request, queryset): for reg in queryset: msg_plain = render_to_string('welcome_mail.txt', {"form": reg}) @@ -17,17 +18,23 @@ class RegistrantAdmin(admin.ModelAdmin): send_mail(f'Herzlich Willkommen zur Im·Puls-Tagung, {reg.name}', msg_plain, 'buero@im-puls.org', [f"{reg.mail}"], fail_silently=False, html_message=msg_html) send_mail(f'Neue Anmeldung: {reg.name}', msg_plain, 'buero@im-puls.org', ["webmaster@denkena-consulting.com"], fail_silently=False, html_message=msg_html) - @admin.action(description='Send preparation mail...') + @admin.action(description='Send preparation mail to ...') def preparation_mail(self, request, queryset): for reg in queryset: msg_plain = render_to_string('preparation_mail.txt', {"form": reg}) msg_html = render_to_string('preparation_mail.html', {"form": reg}) send_mail(f'Letzte Informationen zur Im·Puls-Tagung, {reg.name}', msg_plain, 'buero@im-puls.org', [f"{reg.mail}"], fail_silently=False, html_message=msg_html) + + @admin.action(description='Send preparation mail to all') + def preparation_mail(self): + for reg in Registrant25.objects.all: + msg_plain = render_to_string('preparation_mail.txt', {"form": reg}) + msg_html = render_to_string('preparation_mail.html', {"form": reg}) + send_mail(f'Letzte Informationen zur Im·Puls-Tagung, {reg.name}', msg_plain, 'buero@im-puls.org', [f"{reg.mail}"], fail_silently=False, html_message=msg_html) - - -admin.site.register(Registrant, RegistrantAdmin) admin.site.register(Author) admin.site.register(Category) admin.site.register(Post) admin.site.register(Contact) +admin.site.register(Registrant2024, RegistrantAdmin) +admin.site.register(Registrant2025, RegistrantAdmin) diff --git a/website/migrations/0017_rename_registrant_registrant2024.py b/website/migrations/0017_rename_registrant_registrant2024.py new file mode 100644 index 00000000..862ef11c --- /dev/null +++ b/website/migrations/0017_rename_registrant_registrant2024.py @@ -0,0 +1,17 @@ +# Generated by Django 4.2.7 on 2024-02-19 13:41 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('website', '0016_registrant_team'), + ] + + operations = [ + migrations.RenameModel( + old_name='Registrant', + new_name='Registrant2024', + ), + ] diff --git a/website/migrations/0018_registrant2025.py b/website/migrations/0018_registrant2025.py new file mode 100644 index 00000000..59cb0c60 --- /dev/null +++ b/website/migrations/0018_registrant2025.py @@ -0,0 +1,42 @@ +# Generated by Django 4.2.7 on 2024-02-19 13:46 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('website', '0017_rename_registrant_registrant2024'), + ] + + operations = [ + migrations.CreateModel( + name='Registrant2025', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(blank=True, max_length=64)), + ('mail', models.CharField(blank=True, max_length=77)), + ('phone', models.CharField(blank=True, max_length=33)), + ('rate_reduced', models.BooleanField()), + ('address_street', models.CharField(blank=True, max_length=256)), + ('address_plz', models.CharField(blank=True, max_length=12)), + ('address_town', models.CharField(blank=True, max_length=33)), + ('birthdate', models.CharField(blank=True, max_length=33)), + ('gender', models.CharField(blank=True, choices=[('Männlich', 'Männlich'), ('Weiblich', 'Weiblich'), ('Andere', 'Andere')], max_length=33)), + ('food', models.CharField(blank=True, choices=[('Vegetarisch', 'Vegetarisch'), ('Vegan', 'Vegan'), ('Glutenfrei', 'Glutenfrei')], max_length=33)), + ('music', models.CharField(blank=True, max_length=128)), + ('cake', models.BooleanField()), + ('publish_address', models.BooleanField()), + ('publish_phone', models.BooleanField()), + ('info', models.CharField(blank=True, max_length=777)), + ('message', models.CharField(blank=True, max_length=2100)), + ('timestamp', models.DateTimeField(auto_now_add=True)), + ('payed', models.BooleanField(default=False)), + ('canceled', models.BooleanField(default=False)), + ('team', models.BooleanField(default=False)), + ], + options={ + 'abstract': False, + }, + ), + ] diff --git a/website/migrations/0019_alter_registrant2024_options_and_more.py b/website/migrations/0019_alter_registrant2024_options_and_more.py new file mode 100644 index 00000000..1ff2f66c --- /dev/null +++ b/website/migrations/0019_alter_registrant2024_options_and_more.py @@ -0,0 +1,21 @@ +# Generated by Django 4.2.7 on 2024-02-19 13:48 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('website', '0018_registrant2025'), + ] + + operations = [ + migrations.AlterModelOptions( + name='registrant2024', + options={'verbose_name': 'Teilnehmer 2024'}, + ), + migrations.AlterModelOptions( + name='registrant2025', + options={'verbose_name': 'Teilnehmer 2025'}, + ), + ] diff --git a/website/migrations/0020_alter_registrant2024_options_and_more.py b/website/migrations/0020_alter_registrant2024_options_and_more.py new file mode 100644 index 00000000..56c07a7a --- /dev/null +++ b/website/migrations/0020_alter_registrant2024_options_and_more.py @@ -0,0 +1,21 @@ +# Generated by Django 4.2.7 on 2024-02-19 13:48 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('website', '0019_alter_registrant2024_options_and_more'), + ] + + operations = [ + migrations.AlterModelOptions( + name='registrant2024', + options={'verbose_name': 'Teilnehmer 2024', 'verbose_name_plural': 'Teilnehmer 2024'}, + ), + migrations.AlterModelOptions( + name='registrant2025', + options={'verbose_name': 'Teilnehmer 2025', 'verbose_name_plural': 'Teilnehmer 2025'}, + ), + ] diff --git a/website/migrations/__pycache__/0017_rename_registrant_registrant2024.cpython-311.pyc b/website/migrations/__pycache__/0017_rename_registrant_registrant2024.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..285df526ae3cc50be6bda3a027a363da3b1aa1e0 GIT binary patch literal 707 zcmZuv&ui3B5T2K8(&W{O)U8Lgpof4oYY`O@@g}G((%y1;qJ@~)n|rEE_+7Ia?n<(te*zL_E4*48+XeGPu$J_GozozAS5%$^cC z0tu4Ekg$L;FyIwP;}b{|*~sV$j!l3Qy5|-cvbPVO^+&rNQ#^@=d00kSS{$}1&7;>k zvu8w(03l!!sF)2|U>bnEQP&7bO7lnWm;_H2qLgJzi-c_D?sN*Cp;jt9D54Toe=vCX zSmZd2iZTz=Qj{1bitjC6sOw9C&j8^yWWa&L_>v8T!x!0+X&@gy$% zwsn8GF`tHbLPInnS7upK-TBt|W3HFgfK8-$NibcU+6MPQZ5n-h`nKla-ucW=o!e&{ zn`ayMYs+-`IS^cEs7-6#p1#&6zuA3q*E5wXM`1e5w&X!G++1&6XEbSjVwcYI`Ep+5 rx5%ac3W|3GwaFNx9@yqjxO?@g?Nw&i@GpGfr#J4M>%hf-qK)ET9iFq3 literal 0 HcmV?d00001 diff --git a/website/migrations/__pycache__/0018_registrant2025.cpython-311.pyc b/website/migrations/__pycache__/0018_registrant2025.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b56297c64573f30ce6a1f89b604caa676991b100 GIT binary patch literal 2678 zcma)7O>omj6qe+l*p3tAkRR+g#&%4=Nk~k7p@fE?*i0aS{!lvOwz#r)<0#0oE6Jqc zltT|aa>K_=r;|>H9DL-MnO-=qraE|Z>P%0$nSow7^{pJ!1e?N2dV25e_ujsJ`*!!Y zt}YJ)t@6#E_){0d{7r>sa~v|S7JzxmAO^7#Q()6fi>C}`(kx=q9Afiq z+Qu>1zR?T{hDKE5+~{aJKz4W>$hp_CYlk4Aff4C)zNSi34EvVr(sF;Pawhvuc zWZyfp%fc$d*JzNTk>l|o$KKf%%(;)i#6OJ5_n}eb5ZS%4`{3^?mm|IuEAVFZRud$f5 z6m)b@IImFytVF43Q+nWMcI4KJVh*dyNh;abibX^{nw|G?9&3Uks^IWU!`=ZpK~_c@ zlINyW*08*$U{N_sjU9!uD&`KhDR0jS53zZoRE7Z5^~~WM%&w-w%8F?h<+Y;dhV#?X7^xL z4bf99;ls=1cjguNVcuMtd?YB7o12@HVxd%))XBplpZxFMnS^q`c)Yl0CrVq26YMQQ z8MO-c!uH#z?qu9o>Nc*|xxG^NFz(Yodkj~o=8OF0>mviBPaYWqqtERxVkDg*vO)$_ zeLyt^RKjaD-vIH)EB%H)UbXM{5dV_yUo!klgiro&*C`Sht&A9f(Q5C0lmwD`AZY}W zgiqCcr%7aHr{9Ro=#e=iGDrA%2!sqz@5~v))6ZisrpfSKefX|1e3$T_)qEimPV6|1 zaH6Wc;7Itk9=>gaZxepS@^pcEx&X2FkjRQ2Sur9jgkP=sf+RFiSu;Wt)qDF{5?acDqRFCWa3Bx}@_{o|tN@DXnDI+$o z$1WMMON9TV<_nYP?9PZ0ozdIB8A?>{8$*fb zePn1+A6hhq772g#NbuFKi2t(gzijv~6MmsS*5BJ*PcXj0N)jrtue&}SbbDShKweW) zw}pC~+qdYW+-R2Y9XONSXhV?m#R-(PcAd4+8byAc!Yu3(aBo}-jjj8sk^+(5Ug~`y kbsNjFQ21<|Fy~s|x--T)>r5+o;xYKxOWN_eO|LcXzp$aYm;e9( literal 0 HcmV?d00001 diff --git a/website/migrations/__pycache__/0019_alter_registrant2024_options_and_more.cpython-311.pyc b/website/migrations/__pycache__/0019_alter_registrant2024_options_and_more.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..532e6c1e2c94cda8a3112369c847136b61a34671 GIT binary patch literal 849 zcma)4&1(};5TCc3Y_e->txfUTVtNQdHsxtAquacR{W{m8dFZ_x24zf<0#q7 zA=$^uov|R}5D;2S00px)YncXMp))OnD1|8sKKoWYBGTha;u(}hsM2**+h|#$OeNXM z-kR1@GgN7SyNTaJwN$U)-{cb8e$ta()Z3_UG}X;3enZV2pxliU~aToI;e}%E0?8T0I;7NBd7`T4e?FWgQx9k4dhf9q=;-1cS zwfzRq+u&X#s4|J`-S<-OBU5^H$v&y!?uv4$^F2kf;^&Plm?y106}e0Q|= zU{raS7ERkZ15)Q&rRDzt-LP+4!{_?Q%9MS(W-42Byr>^nXDuLk@%AUSG=N_!m`J&B zMi0q300Dye5U?g=puuwx+9wb?vJSl)%b^Z%M0+evO_W|kz5H8+b(UIz*OqSAi^62L zfaFJ|2u6G48~{R-382TU&6>IfSn5oOP)VVamcD8~%7;|;=%Vx#&JY#SD{yVCX^1M( zGE;MN!l$mKl|Hr-uZ!se$60;EUB8QxOKf{dSGr-h;WXBG6zAl*8wwso64RUi0zS^Y zLC+6yFF?7VUQphdeUz;zK_0pRrgtt!JobCi^$AqUFDpgomU@^JNrc5r;yQ3cF1HpV~kj{#UU(QUYRk+j12xaU##O>OQ-7M?26mG F;va&#@cIA% literal 0 HcmV?d00001 diff --git a/website/models.py b/website/models.py index b68427ca..c495a4eb 100644 --- a/website/models.py +++ b/website/models.py @@ -11,9 +11,11 @@ User = get_user_model() class Author(models.Model): user = models.OneToOneField(User, on_delete=models.CASCADE) def __str__(self): - return self.user.username + return f'{self.user.first_name} {self.user.last_name}' class Category(models.Model): + class Meta: + verbose_name_plural = 'Categories' title = models.CharField(max_length=20) subtitle = models.CharField(max_length=20) slug = models.SlugField() @@ -56,7 +58,10 @@ class ContactForm(forms.ModelForm): GESCHLECHTER = [("Männlich", "Männlich"), ("Weiblich","Weiblich"),("Andere","Andere")] ERNÄHRUNG = [("Vegetarisch","Vegetarisch"),("Vegan","Vegan"),("Glutenfrei","Glutenfrei")] + class Registrant(models.Model): + class Meta: + abstract = True name = models.CharField(max_length=64,blank=True) mail = models.CharField(max_length=77,blank=True) phone = models.CharField(max_length=33,blank=True) @@ -82,10 +87,25 @@ class Registrant(models.Model): def __str__(self): return self.name -class RegisterForm(ModelForm): - captcha = CaptchaField() + +class Registrant2024(Registrant): class Meta: - model = Registrant - fields = ["name","mail","phone","rate_reduced","address_street","address_plz","address_town","birthdate","gender","food","music","cake","publish_address","publish_phone","info","message", "captcha"] + verbose_name = 'Teilnehmer 2024' + verbose_name_plural = 'Teilnehmer 2024' + +class Registrant2025(Registrant): + class Meta: + verbose_name = 'Teilnehmer 2025' + verbose_name_plural = 'Teilnehmer 2025' + +class RegisterForm(ModelForm): + class Meta: + abstract = True + captcha = CaptchaField() gender = forms.ChoiceField(widget=forms.RadioSelect,choices=GESCHLECHTER) food = forms.ChoiceField(widget=forms.RadioSelect,choices=ERNÄHRUNG) + +class RegisterForm2024(RegisterForm): + class Meta: + model = Registrant2024 + fields = '__all__' diff --git a/website/views.py b/website/views.py index 4f07fafc..b8a0424b 100644 --- a/website/views.py +++ b/website/views.py @@ -1,6 +1,6 @@ from django.shortcuts import render, redirect from django.db.models import Q -from .models import Author, Category, Post, ContactForm, Registrant, RegisterForm +from .models import Author, Category, Post, ContactForm, Registrant2024, RegisterForm2024 from django.core.mail import send_mail from django.template.loader import render_to_string @@ -89,13 +89,15 @@ def failure(request): return render(request, 'failure.html') def mail(request): - #context = {"form": Registrant.objects.all()[6]} - return render(request, 'welcome_mail.html',) + #context = {"RegistrantList": filter(lambda x: not x.canceled, sorted(Registrant2024.objects.all(), key=lambda x: x.name))} + #return render(request, 'final_mail.html', context) + return render(request, 'final_mail.html') def anmeldung(request): + ANMELDUNG_AKTIVIERT = False if request.method == 'POST': - register_form = RegisterForm(request.POST) - if register_form.is_valid(): + register_form = RegisterForm2024(request.POST) + if register_form.is_valid() and ANMELDUNG_AKTIVIERT: register_form.save() form = register_form.cleaned_data name = register_form.cleaned_data["name"] @@ -104,14 +106,14 @@ def anmeldung(request): msg_html = render_to_string('welcome_mail.html', {"form": form}) send_mail(f'Herzlich Willkommen zur Im·Puls-Tagung, {name}', msg_plain, 'buero@im-puls.org', ["xenia.medvedeva@posteo.de","buero@im-puls.org","webmaster@denkena-consulting.com"], fail_silently=False, html_message=msg_html) send_mail(f'Herzlich Willkommen zur Im·Puls-Tagung, {name}', msg_plain, 'buero@im-puls.org', [mail], fail_silently=False, html_message=msg_html) - register_form = RegisterForm() + register_form = RegisterForm2024() return redirect('/success/') else: return redirect('/failure/') try: if not register_form: - register_form = RegisterForm() + register_form = RegisterForm2024() except UnboundLocalError: - register_form = RegisterForm() - context = {"register_form": register_form} + register_form = RegisterForm2024() + context = {"register_form": register_form, 'AKTIVIERT': ANMELDUNG_AKTIVIERT} return render(request, 'anmeldung.html', context)
ZeitMittwochDonnerstagFreitagSamstagSonntagZeitMittwochDonnerstagFreitagSamstagSonntag
"Ideale & Illusionen"
Daniel Hafner
"Das Geistige im irdischen Goetheanismus"
Martin Merckens
"Wie lerne ich zu tun, was ich will?"
Marco Bindelli
11:30 - 12:30 Plenum11:30 - 12:30 Plenum
13:00 MittagessenHilfe beim Aufbau für die PriesterweihenHilfe beim Aufbau für die Priesterweihen
15:30Abendandacht
---danach Nachtcafe