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 27d90dcf..310b964e 100644 Binary files a/website/__pycache__/admin.cpython-311.pyc and b/website/__pycache__/admin.cpython-311.pyc differ diff --git a/website/__pycache__/models.cpython-311.pyc b/website/__pycache__/models.cpython-311.pyc index be5bca94..0930a0fb 100644 Binary files a/website/__pycache__/models.cpython-311.pyc and b/website/__pycache__/models.cpython-311.pyc differ diff --git a/website/__pycache__/views.cpython-311.pyc b/website/__pycache__/views.cpython-311.pyc index 962cf829..ef59f6ba 100644 Binary files a/website/__pycache__/views.cpython-311.pyc and b/website/__pycache__/views.cpython-311.pyc differ 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 00000000..285df526 Binary files /dev/null and b/website/migrations/__pycache__/0017_rename_registrant_registrant2024.cpython-311.pyc differ 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 00000000..b56297c6 Binary files /dev/null and b/website/migrations/__pycache__/0018_registrant2025.cpython-311.pyc differ 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 00000000..532e6c1e Binary files /dev/null and b/website/migrations/__pycache__/0019_alter_registrant2024_options_and_more.cpython-311.pyc differ diff --git a/website/migrations/__pycache__/0020_alter_registrant2024_options_and_more.cpython-311.pyc b/website/migrations/__pycache__/0020_alter_registrant2024_options_and_more.cpython-311.pyc new file mode 100644 index 00000000..05c55f79 Binary files /dev/null and b/website/migrations/__pycache__/0020_alter_registrant2024_options_and_more.cpython-311.pyc differ 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