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
+{% 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
{% 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.
+
+
+
+
+ Name
+ Anschrift
+ Mail-Adresse
+ Telefonnummer
+
+
+{% for reg in RegistrantList %}
+
+ {{ reg.name }}
+ {% if reg.publish_address %}{{reg.address_street}}, {{reg.address_plz}} {{reg.address_town}} {% else %}--- {% endif %}
+ {{reg.mail}}
+ {% if reg.publish_phone %}{{ reg.phone }} {% else %}--- {% endif %}
+
+{% empty %}
+ Leider konnten momentan keine Teilnehmer abgerufen werden.
+{% endfor %}
+
+
+
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 @@
- Zeit
- Mittwoch
- Donnerstag
- Freitag
- Samstag
- Sonntag
+ Zeit
+ Mittwoch
+ Donnerstag
+ Freitag
+ Samstag
+ Sonntag
@@ -52,12 +52,12 @@
"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 Plenum
+ 11:30 - 12:30 Plenum
13:00
Mittagessen
- Hilfe beim Aufbau für die Priesterweihen
+ Hilfe beim Aufbau für die Priesterweihen
15:30
@@ -88,7 +88,7 @@
Abendandacht
- ---
+ danach
Nachtcafe
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)