Merge branch 'main' into MK/group_overview

pull/118/head
Christian Merten 11 months ago
commit 6178d07010
Signed by: christian.merten
GPG Key ID: D953D69721B948B3

8
.gitignore vendored

@ -106,9 +106,6 @@ jdav_web/my.cnf
# sass cache
jdav_web/static/jet/css/themes/*/.sass-cache/*
# test config
config
# celerybeat schedule database
jdav_web/celerybeat-schedule.db
@ -125,6 +122,11 @@ docker/development/media
docker/production/media
docker/test/media
# configuration folders
docker/development/config/*
!docker/development/config/settings.toml.example
docker/production/config
*.csv
jdav_web/static/docs

@ -0,0 +1,67 @@
[section]
name = "Town"
street = "Street 12"
town = "12345 Town"
telephone = "123456789"
telefax = "987654321"
contact_mail = "contact@jdav-town.de"
board_mail = "board@jdav-town.de"
crisis_intervention_mail = "crisis@jdav-town.de"
iban = "DE42 4242 4242 4242 4242 42"
account_holder = "DAV Town"
responsible_mail = "responsible@jdav-town.de"
digital_mail = "digital@jdav-town.de"
admins = [['Admin', 'admin@jdav-town.de']]
[LJP]
v32_head_organisation = """
LJP application recipient header
"""
[misc]
allowed_email_domains_for_invite_as_user = ['alpenverein-town.de']
send_from_association_email = true
domain = 'jdav-town.de'
[finance]
allowance_per_day = 22
max_night_cost = 11
[links]
cloud = "https://nextcloud.com"
dav_360 = "https://dav360.de"
wiki = "https://wikipedia.org"
docs = "https://jdav-hd.de/static/docs"
registration_form = "download-me"
[startpage]
redirect_url = ''
root_section = 'root section'
recent_section = 'aktuelles'
reports_section = 'berichte'
[django]
deployed = true
debug = true
secret_key = '6_ew6l1r9_4(8=p8quv(e8b+z+k+*wm7&zxx%mcnnec99a!lpw'
allowed_hosts = ['*']
protocol = 'http'
base_url = 'localhost:8000'
host = ''
static_root = '/var/www/jdav_web/assets'
broker_url = 'redis://redis:6379/0'
memcached_url = 'cache:11211'
[mail]
host = 'jdav-town.de'
user = 'user@jdav-town.de'
password = 'password'
default_sending_address = 'info@jdav-town.de'
default_sending_name = 'JDAV Town'
[database]
host = 'db'
port = 3306
database = 'kompass'
user = 'kompass'
password = 'foobar'

@ -8,6 +8,9 @@ x-kompass:
UID: ${UID}
GID: ${UID}
USER: ${USER}
environment:
- KOMPASS_CONFIG_DIR_PATH=/app/config/
- DJANGO_SETTINGS_MODULE=jdav_web.settings
env_file: docker.env
restart: always
depends_on:
@ -25,6 +28,7 @@ services:
- ./../../jdav_web:/app/jdav_web
- ./../../docs:/app/docs
- ./media:/app/media
- ./config:/app/config:ro
ports:
- "8000:8000"

@ -1,33 +1,4 @@
DJANGO_ALLOWED_HOST='*'
DJANGO_BASE_URL='localhost:8000'
DJANGO_PROTOCOL='http'
EMAIL_HOST='example.com'
EMAIL_HOST_USER='foo@example.com'
EMAIL_HOST_PASSWORD='password'
EMAIL_SENDING_ADDRESS='foo@example.com'
EMAIL_SENDING_NAME='My association'
DOMAIN='example.com'
DJANGO_DEPLOY=1
DJANGO_DEBUG=1
DJANGO_DATABASE_NAME='kompass'
DJANGO_DATABASE_USER='kompass'
DJANGO_DATABASE_PASSWORD='foobar'
DJANGO_DATABASE_HOST='db'
DJANGO_DATABASE_PORT=3306
MYSQL_ROOT_PASSWORD='secret'
MYSQL_PASSWORD='foobar'
MYSQL_USER='kompass'
MYSQL_DATABASE='kompass'
DJANGO_SETTINGS_MODULE='jdav_web.settings'
DJANGO_STATIC_ROOT='/var/www/jdav_web/assets'
MEMCACHED_URL='cache:11211'
BROKER_URL='redis://redis:6379/0'
SEND_FROM_ASSOCIATION_EMAIL=0

@ -2,6 +2,9 @@ x-kompass:
&kompass
image: kompass:production
env_file: docker.env
environment:
- DJANGO_SETTINGS_MODULE=jdav_web.settings
- KOMPASS_CONFIG_DIR_PATH=/app/config/
restart: always
depends_on:
- redis
@ -19,6 +22,7 @@ services:
- web_static:/app/static/
- web_static:/var/www/jdav_web/static/
- ./media:/var/www/jdav_web/media/
- ./config:/app/config:ro
nginx:
build: ./nginx/
@ -43,10 +47,14 @@ services:
celery_worker:
<<: *kompass
entrypoint: /app/docker/production/entrypoint-celery-worker.sh
volumes:
- ./config:/app/config:ro
celery_beat:
<<: *kompass
entrypoint: /app/docker/production/entrypoint-celery-beat.sh
volumes:
- ./config:/app/config:ro
volumes:
uwsgi_data:

@ -0,0 +1,31 @@
[testing]
mail = "test@localhost"
[django]
deployed = true
debug = true
secret_key = '6_ew6l1r9_4(8=p8quv(e8b+z+k+*wm7&zxx%mcnnec99a!lpw'
allowed_hosts = ['*']
protocol = 'http'
base_url = 'localhost:8000'
host = 'localhost'
static_root = '/var/www/jdav_web/assets'
broker_url = 'redis://redis:6379/0'
memcached_url = 'cache:11211'
[mail]
host = 'localhost'
user = 'test'
password = 'password'
default_sending_address = 'test@localhost'
[database]
host = 'db'
port = 3306
database = 'kompass'
user = 'kompass'
password = 'password'
[startpage]
recent_section = 'aktuelles'
reports_section = 'berichte'

@ -8,6 +8,8 @@ services:
dockerfile: docker/test/Dockerfile
env_file: docker.env
environment:
- KOMPASS_CONFIG_DIR_PATH=/app/config/
- DJANGO_SETTINGS_MODULE=jdav_web.settings
- DJANGO_TEST_KEEPDB=$DJANGO_TEST_KEEPDB
depends_on:
- redis
@ -15,6 +17,7 @@ services:
- db
entrypoint: /app/docker/test/entrypoint-master.sh
volumes:
- ./config:/app/config:ro
- type: bind
source: ./htmlcov/
target: /app/jdav_web/htmlcov/

@ -1,28 +1,4 @@
DJANGO_ALLOWED_HOST='*'
DJANGO_BASE_URL='localhost:8000'
DJANGO_PROTOCOL='http'
EMAIL_HOST='localhost'
EMAIL_HOST_USER='test'
EMAIL_HOST_PASSWORD='password'
EMAIL_SENDING_ADDRESS='test@localhost'
DJANGO_DEPLOY=1
DJANGO_DEBUG=1
DJANGO_DATABASE_NAME='kompass'
DJANGO_DATABASE_USER='kompass'
DJANGO_DATABASE_PASSWORD='password'
DJANGO_DATABASE_HOST='db'
DJANGO_DATABASE_PORT=3306
MYSQL_ROOT_PASSWORD='secretpassword'
MYSQL_PASSWORD='password'
MYSQL_USER='kompass'
MYSQL_DATABASE='kompass'
DJANGO_SETTINGS_MODULE='jdav_web.settings'
DJANGO_STATIC_ROOT='/var/www/jdav_web/assets'
MEMCACHED_URL='cache:11211'
BROKER_URL='redis://redis:6379/0'

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-01-19 14:26+0100\n"
"POT-Creation-Date: 2025-01-25 11:56+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -32,6 +32,10 @@ msgstr ""
"Rechnung %(name)s erfolgreich eingereicht. Das Finanzreferat wird auf dich "
"sobald wie möglich zukommen."
#: finance/admin.py
msgid "Finance overview"
msgstr "Kostenübersicht"
#: finance/admin.py
msgid "Submit statement"
msgstr "Rechnung einreichen"
@ -182,13 +186,10 @@ msgid "Pay allowance to"
msgstr "Aufwandsentschädigung auszahlen an"
#: finance/models.py
msgid ""
"The youth leaders to which an allowance should be paid. The count must match "
"the number of permitted youth leaders."
msgid "The youth leaders to which an allowance should be paid."
msgstr ""
"Die Jugendleiter*innen an die eine Aufwandsentschädigung ausgezahlt werden "
"soll. Die Anzahl muss mit der Anzahl an zugelassenen Jugendleiter*innen "
"übereinstimmen. "
"soll."
#: finance/models.py
msgid "Pay subsidy to"
@ -412,8 +413,8 @@ msgstr "Ausfahrt"
#, python-format
msgid "This excursion featured %(staff_count)s youth leader(s), each costing"
msgstr ""
"Diese Ausfahrt hatte %(staff_count)s genehmigte Jugendleiter*innen. Auf "
"jede*n entfallen die folgenden Kosten:"
"Diese Ausfahrt hatte %(staff_count)s genehmigte Jugendleiter*innen. Für "
"jede*n besteht ein Anspruch auf folgende Zuschüsse und Aufwandsentschädigungen:"
#: finance/templates/admin/overview_submitted_statement.html
#, python-format
@ -427,29 +428,33 @@ msgstr ""
#: finance/templates/admin/overview_submitted_statement.html
#, python-format
msgid ""
"%(duration)s days for %(allowance_per_day)s€ per day making a total of "
"%(allowance_per_yl)s€."
"%(kilometers_traveled)s km by %(means_of_transport)s (%(euro_per_km)s € / "
"km) making a total of %(transportation_per_yl)s€."
msgstr ""
"%(duration)s Tage für %(allowance_per_day)s€ pro Tag. Das ergibt eine "
"Gesamtsumme von %(allowance_per_yl)s€."
"%(kilometers_traveled)s km mit %(means_of_transport)s (%(euro_per_km)s€ / "
"km). Das ergibt eine Gesamtsumme von %(transportation_per_yl)s€."
#: finance/templates/admin/overview_submitted_statement.html
#, python-format
msgid ""
"%(kilometers_traveled)s km by %(means_of_transport)s (%(euro_per_km)s € / "
"km) making a total of %(transportation_per_yl)s€."
"%(duration)s days for %(allowance_per_day)s€ per day making a total of "
"%(allowance_per_yl)s€."
msgstr ""
"%(kilometers_traveled)s km mit %(means_of_transport)s (%(euro_per_km)s€ / "
"km). Das ergibt eine Gesamtsumme von %(transportation_per_yl)s€."
"%(duration)s Tage für %(allowance_per_day)s€ pro Tag. Das ergibt eine "
"Gesamtsumme von %(allowance_per_yl)s€."
#: finance/templates/admin/overview_submitted_statement.html
#, python-format
msgid ""
"In total this is %(total_per_yl)s€ times %(staff_count)s, giving "
"%(total_staff)s€."
"%(theoretical_total_staff)s€."
msgstr ""
"Insgesamt sind das Kosten von %(total_per_yl)s€ mal %(staff_count)s, "
"insgesamt also %(total_staff)s€."
"insgesamt also maximal %(theoretical_total_staff)s€."
#: finance/templates/admin/overview_submitted_statement.html
msgid "Payment of subsidies and allowances"
msgstr "Auszahlung von Sektionszuschüssen und Aufwandsentschädigungen"
#: finance/templates/admin/overview_submitted_statement.html
#, python-format
@ -458,6 +463,27 @@ msgstr ""
"Die Aufwandsentschädigung von %(allowance_per_yl)s€ pro Person soll "
"ausgezahlt werden an:"
#: finance/templates/admin/overview_submitted_statement.html
#: finance/templates/admin/submit_statement.html
msgid "IBAN valid"
msgstr "IBAN gültig"
#: finance/templates/admin/overview_submitted_statement.html
#, python-format
msgid ""
"Only %(allowances_paid)s of the %(real_staff_count)s youth leaders have "
"requested the outpayment of their allowance."
msgstr ""
"Achtung: Nur für %(allowances_paid)s der %(real_staff_count)s "
"Jugendleiter*innen wird die Aufwandsentschädigung abgerufen."
#: finance/templates/admin/overview_submitted_statement.html
msgid ""
"No receivers of the allowance were provided. Allowance will not be used."
msgstr ""
"Keine Empfänger*innen für eine Aufwandsentschädigung angegeben. Es wird "
"daher keine Aufwandsentschädigung ausbezahlt."
#: finance/templates/admin/overview_submitted_statement.html
#, python-format
msgid ""
@ -465,7 +491,14 @@ msgid ""
"should be paid to:"
msgstr ""
"Die Zuschüsse für Übernachtungs- und Fahrtkosten von %(total_subsidies)s€ "
"sollen ausgezahlt werden an:"
"für alle Jugendleiter*innen sollen ausgezahlt werden an:"
#: finance/templates/admin/overview_submitted_statement.html
msgid ""
"No receivers of the subsidies were provided. Subsidies will not be used."
msgstr ""
"Keine Empfänger*innen für Sektionszuschüsse angegeben. Es werden daher keine "
"Sektionszuschüsse ausbezahlt."
#: finance/templates/admin/overview_submitted_statement.html
#, python-format
@ -542,10 +575,6 @@ msgstr ""
"Bitte überprüfe, ob alle Ausgaben korrekt erfasst sind und ob alle "
"auslegenden Personen eine gültige IBAN haben."
#: finance/templates/admin/submit_statement.html
msgid "IBAN valid"
msgstr "IBAN gültig"
#: finance/templates/admin/submit_statement.html
msgid ""
"Do you want to submit the statement for further processing by the finance "

@ -0,0 +1,25 @@
# Generated by Django 4.0.1 on 2025-01-23 22:16
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('members', '0033_freizeit_approved_extra_youth_leader_count'),
('finance', '0007_alter_statement_allowance_to'),
]
operations = [
migrations.AlterField(
model_name='statement',
name='allowance_to',
field=models.ManyToManyField(blank=True, help_text='The youth leaders to which an allowance should be paid.', related_name='receives_allowance_for_statements', to='members.Member', verbose_name='Pay allowance to'),
),
migrations.AlterField(
model_name='statement',
name='subsidy_to',
field=models.ForeignKey(blank=True, help_text='The person that should receive the subsidy for night and travel costs. Typically the person who paid for them.', null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='receives_subsidy_for_statements', to='members.member', verbose_name='Pay subsidy to'),
),
]

@ -62,9 +62,10 @@ class Statement(CommonModel):
allowance_to = models.ManyToManyField(Member, verbose_name=_('Pay allowance to'),
related_name='receives_allowance_for_statements',
blank=True,
help_text=_('The youth leaders to which an allowance should be paid. The count must match the number of permitted youth leaders.'))
help_text=_('The youth leaders to which an allowance should be paid.'))
subsidy_to = models.ForeignKey(Member, verbose_name=_('Pay subsidy to'),
null=True,
blank=True,
on_delete=models.SET_NULL,
related_name='receives_subsidy_for_statements',
help_text=_('The person that should receive the subsidy for night and travel costs. Typically the person who paid for them.'))
@ -163,7 +164,8 @@ class Statement(CommonModel):
@property
def allowance_to_valid(self):
"""Checks if the configured `allowance_to` field matches the regulations."""
if self.allowance_to.count() != self.real_staff_count:
if self.allowances_paid > self.real_staff_count:
# it is allowed that less allowances are utilized than youth leaders are enlisted
return False
if self.excursion is not None:
yls = self.excursion.jugendleiter.all()
@ -239,8 +241,7 @@ class Statement(CommonModel):
if self.subsidy_to:
ref = _("Night and travel costs for %(excu)s") % {'excu': self.excursion.name}
Transaction(statement=self, member=self.subsidy_to, amount=self.total_subsidies, confirmed=False, reference=ref).save()
else:
return False
return True
def reduce_transactions(self):
@ -299,9 +300,13 @@ class Statement(CommonModel):
return cvt_to_decimal(self.excursion.duration * settings.ALLOWANCE_PER_DAY)
@property
def allowances_paid(self):
return self.allowance_to.count()
@property
def total_allowance(self):
return self.allowance_per_yl * self.real_staff_count
return self.allowance_per_yl * self.allowances_paid
@property
def total_transportation(self):
@ -341,11 +346,24 @@ class Statement(CommonModel):
The total amount of subsidies excluding the allowance, i.e. the transportation
and night costs per youth leader multiplied with the real number of youth leaders.
"""
return (self.transportation_per_yl + self.nights_per_yl) * self.real_staff_count
if self.subsidy_to:
return (self.transportation_per_yl + self.nights_per_yl) * self.real_staff_count
else:
return cvt_to_decimal(0)
@property
def theoretical_total_staff(self):
"""
the sum of subsidies and allowances if all eligible youth leaders would collect them.
"""
return self.total_per_yl * self.real_staff_count
@property
def total_staff(self):
return self.total_per_yl * self.real_staff_count
"""
the sum of subsidies and allowances that youth leaders are actually collecting
"""
return self.total_allowance + self.total_subsidies
@property
def real_staff_count(self):
@ -397,11 +415,14 @@ class Statement(CommonModel):
'means_of_transport': self.excursion.get_tour_approach(),
'euro_per_km': self.euro_per_km,
'allowance_per_day': settings.ALLOWANCE_PER_DAY,
'allowances_paid': self.allowances_paid,
'nights_per_yl': self.nights_per_yl,
'allowance_per_yl': self.allowance_per_yl,
'transportation_per_yl': self.transportation_per_yl,
'total_per_yl': self.total_per_yl,
'total_staff': self.total_staff,
'theoretical_total_staff': self.theoretical_total_staff,
'real_staff_count': self.real_staff_count,
'total_subsidies': self.total_subsidies,
}
return dict(context, **excursion_context)

@ -71,27 +71,47 @@
</ul>
</p>
<p>
{% blocktrans %}In total this is {{ total_per_yl }}€ times {{ staff_count }}, giving {{ total_staff }}€.{% endblocktrans %}
{% blocktrans %}In total this is {{ total_per_yl }}€ times {{ staff_count }}, giving {{ theoretical_total_staff }}€.{% endblocktrans %}
</p>
<h2>{% trans "Payment of subsidies and allowances" %}</h2>
{% if allowances_paid > 0 %}
<p>
{% blocktrans %}The allowance of {{ allowance_per_yl }}€ per person should be paid to:{% endblocktrans %}
<ul>
<table>
<th>
<td>{% trans "IBAN valid" %}</td>
</th>
{% for member in statement.allowance_to.all %}
<li>
{{ member.name }}
</li>
<tr>
<td>{{ member.name }}</td>
<td>{{ member.iban_valid|render_bool }}</td>
</tr>
{% endfor %}
</ul>
</table>
</p>
{% if allowances_paid < real_staff_count %}
<p>{% blocktrans %}Only {{ allowances_paid }} of the {{ real_staff_count }} youth leaders have requested the outpayment of their allowance.{% endblocktrans %}</p>
{% endif %}
{% else %}
<p>{% blocktrans %}No receivers of the allowance were provided. Allowance will not be used.{% endblocktrans %}</p>
{% endif %}
{% if statement.subsidy_to %}
<p>
{% blocktrans %}The subsidies for night and transportation costs of {{ total_subsidies }}€ should be paid to:{% endblocktrans %}
<ul>
<li>
{{ statement.subsidy_to.name }}
</li>
</ul>
<table>
<th>
<td>{% trans "IBAN valid" %}</td>
</th>
<tr>
<td>{{ statement.subsidy_to.name }}</td>
<td>{{ statement.subsidy_to.iban_valid|render_bool }}</td>
</tr>
</table>
</p>
{% else %}
<p>{% blocktrans %}No receivers of the subsidies were provided. Subsidies will not be used.{% endblocktrans %}</p>
{% endif %}
{% endif %}

@ -209,7 +209,6 @@ class StatementTestCase(TestCase):
self.assertFalse(self.st.is_valid(),
'Transaction is valid, although an unreasonable gift is paid.')
@skip('This fails on main, but will be resolved when #112 is merged.')
def test_allowance_to_valid(self):
self.assertEqual(self.st3.excursion.participant_count, self.participant_count)
# st3 should have 3 admissible yls and all of them should receive allowance

@ -12,6 +12,42 @@ https://docs.djangoproject.com/en/1.10/ref/settings/
from split_settings.tools import optional, include
import os
import tomli
CONFIG_DIR_PATH = os.environ.get('KOMPASS_CONFIG_DIR_PATH', '')
SETTINGS_FILE = os.environ.get('KOMPASS_SETTINGS_FILE', 'settings.toml')
TEXTS_FILE = os.environ.get('KOMPASS_TEXTS_FILE', 'texts.toml')
with open(os.path.join(CONFIG_DIR_PATH, SETTINGS_FILE), 'rb') as f:
config = tomli.load(f)
if os.path.exists(os.path.join(CONFIG_DIR_PATH, TEXTS_FILE)):
with open(os.path.join(CONFIG_DIR_PATH, TEXTS_FILE), 'rb') as f:
texts = tomli.load(f)
else:
texts = {}
def get_var(*keys, default='', dictionary=config):
"""
Get a variable from given config dictionary. The passed keys are used
for nested retrieval from the dictionary.
"""
cfg = dictionary
for key in keys:
if key not in cfg:
return default
else:
cfg = cfg[key]
return cfg
def get_text(*keys, default=''):
"""
Get a text from the `texts.toml`.
"""
return get_var(*keys, default=default, dictionary=texts)
base_settings = [
'local.py',

@ -1,26 +1,25 @@
deployed = '1' == os.environ.get('DJANGO_DEPLOY', '0')
deployed = get_var('django', 'deployed', default=False)
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = os.environ.get('DJANGO_SECRET_KEY',
'6_ew6l1r9_4(8=p8quv(e8b+z+k+*wm7&zxx%mcnnec99a!lpw')
SECRET_KEY = get_var('django', 'secret_key', default='secret')
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = os.environ.get('DJANGO_DEBUG', '1') == '1'
DEBUG = get_var('django', 'debug', default=True)
ALLOWED_HOSTS = os.environ.get('DJANGO_ALLOWED_HOST', '').split(",")
ALLOWED_HOSTS = get_var('django', 'allowed_hosts', default=["*"])
# hostname and base url
HOST = os.environ.get('DJANGO_ALLOWED_HOST', 'localhost:8000').split(",")[0]
PROTOCOL = os.environ.get('DJANGO_PROTOCOL', 'https')
BASE_URL = os.environ.get('DJANGO_BASE_URL', HOST)
HOST = get_var('django', 'host', default='localhost:8000')
PROTOCOL = get_var('django', 'protocol', default='https')
BASE_URL = get_var('django', 'base_url', default=HOST)
# Define media paths e.g. for image storage
MEDIA_URL = '/media/'
MEDIA_ROOT = os.environ.get('DJANGO_MEDIA_ROOT',
os.path.join((os.path.join(BASE_DIR, os.pardir)), "media"))
MEDIA_ROOT = get_var('django', 'media_root',
default=os.path.join((os.path.join(BASE_DIR, os.pardir)), "media"))
MEDIA_MEMBERLISTS = os.path.join((os.path.join(BASE_DIR, os.pardir)), "media")
# default primary key auto field type
@ -83,7 +82,8 @@ ROOT_URLCONF = 'jdav_web.urls'
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'templates')],
'DIRS': [os.path.join(CONFIG_DIR_PATH, 'templates'),
os.path.join(BASE_DIR, 'templates')],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
@ -131,8 +131,7 @@ STATICFILES_DIRS = [
# static root where all the static files are collected to
# use python3 manage.py collectstatic to collect static files in the STATIC_ROOT
# this is needed for deployment
STATIC_ROOT = os.environ.get('DJANGO_STATIC_ROOT',
'/var/www/jdav_web/static')
STATIC_ROOT = get_var('django', 'static_root', default='/var/www/jdav_web/static')
# Locale files (translations)
@ -140,7 +139,7 @@ STATIC_ROOT = os.environ.get('DJANGO_STATIC_ROOT',
LOCALE_PATHS = (os.path.join(BASE_DIR, 'locale'),)
# Celery and Redis setup
BROKER_URL = os.environ.get('BROKER_URL', 'redis://localhost:6379/0')
BROKER_URL = get_var('django', 'broker_url', default='redis://localhost:6379/0')
# password hash algorithms used
@ -194,3 +193,6 @@ MARKDOWNIFY = {
# allowed characters in names appearing in urls on the website
STARTPAGE_URL_NAME_PATTERN = "[\w\-: *]"
# admins to contact on error messages
ADMINS = get_var('section', 'admins', default=[])

@ -1,7 +1,7 @@
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.memcached.PyMemcacheCache',
'LOCATION': os.environ.get('MEMCACHED_URL', '127.0.0.1:11211'),
'LOCATION': get_var('django', 'memcached_url', default='127.0.0.1:11211'),
'OPTIONS': {
'no_delay': True,
'ignore_exc': True,

@ -4,11 +4,11 @@
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': os.environ.get('DJANGO_DATABASE_NAME', 'jdav_db'),
'USER': os.environ.get('DJANGO_DATABASE_USER', 'jdav_user'),
'PASSWORD': os.environ.get('DJANGO_DATABASE_PASSWORD', 'jdav00jdav'),
'HOST': os.environ.get('DJANGO_DATABASE_HOST', '127.0.0.1'),
'PORT': os.environ.get('DJANGO_DATABASE_PORT', '5432')
'NAME': get_var('database', 'database', default='jdav_db'),
'USER': get_var('database', 'user', default='user'),
'PASSWORD': get_var('database', 'password', default='secret'),
'HOST': get_var('database', 'host', default='127.0.0.1'),
'PORT': get_var('database', 'port', default=5432)
}
}

@ -1,10 +1,10 @@
# Email setup
EMAIL_HOST = os.environ.get('EMAIL_HOST', 'localhost')
EMAIL_PORT = 587 if deployed else 25
EMAIL_HOST_USER = os.environ.get('EMAIL_HOST_USER', '')
EMAIL_HOST_PASSWORD = os.environ.get('EMAIL_HOST_PASSWORD', '')
EMAIL_USE_TLS = True if deployed else False
EMAIL_HOST = get_var('mail', 'host', default='localhost')
EMAIL_PORT = get_var('mail', 'port', default=587 if deployed else 25)
EMAIL_HOST_USER = get_var('mail', 'user', default='user')
EMAIL_HOST_PASSWORD = get_var('mail', 'password', default='secret')
EMAIL_USE_TLS = get_var('mail', 'tls', default=True if deployed else False)
EMAIL_BACKEND = 'djcelery_email.backends.CeleryEmailBackend'
# Celery Email Setup
@ -13,5 +13,5 @@ CELERY_EMAIL_TASK_CONFIG = {
'rate_limit' : '10/m' # * CELERY_EMAIL_CHUNK_SIZE (default: 10)
}
DEFAULT_SENDING_MAIL = os.environ.get('EMAIL_SENDING_ADDRESS', 'django@localhost')
DEFAULT_SENDING_NAME = os.environ.get('EMAIL_SENDING_NAME', 'Kompass')
DEFAULT_SENDING_MAIL = get_var('mail', 'default_sending_address', default='kompass@localhost')
DEFAULT_SENDING_NAME = get_var('mail', 'default_sending_name', default='Kompass')

@ -1,6 +1,6 @@
# mail texts
CONFIRM_MAIL_TEXT = """Hallo {name},
CONFIRM_MAIL_TEXT = get_text('confirm_mail', default="""Hallo {name},
du hast bei der JDAV %(SEKTION)s eine E-Mail Adresse hinterlegt. Da bei uns alle Kommunikation
per Email funktioniert, brauchen wir eine Bestätigung {whattoconfirm}. Dazu klicke bitte einfach auf
@ -9,9 +9,9 @@ folgenden Link:
{link}
Viele Grüße
Deine JDAV %(SEKTION)s""" % { 'SEKTION': SEKTION }
Deine JDAV %(SEKTION)s""" % { 'SEKTION': SEKTION })
NEW_UNCONFIRMED_REGISTRATION = """Hallo {name},
NEW_UNCONFIRMED_REGISTRATION = get_text('new_unconfirmed_registration', default="""Hallo {name},
für deine Gruppe {group} liegt eine neue unbestätigte Reservierung vor. Die Person hat bereits ihre
E-Mailadressen bestätigt und ihr Anmeldeformular hochgeladen. Bitte prüfe die Registrierung eingehend und
@ -20,13 +20,15 @@ bestätige falls möglich. Zu der Registrierung kommst du hier:
{link}
Viele Grüße
Dein KOMPASS"""
Dein KOMPASS""")
GROUP_TIME_AVAILABLE_TEXT = """Die Gruppenstunde findet jeden {weekday} von {start_time} bis {end_time} Uhr statt."""
GROUP_TIME_AVAILABLE_TEXT = get_text('group_time_available',
default="""Die Gruppenstunde findet jeden {weekday} von {start_time} bis {end_time} Uhr statt.""")
GROUP_TIME_UNAVAILABLE_TEXT = """Bitte erfrage die Gruppenzeiten bei der Gruppenleitung ({contact_email})."""
GROUP_TIME_UNAVAILABLE_TEXT = get_text('group_time_unavailable',
default="""Bitte erfrage die Gruppenzeiten bei der Gruppenleitung ({contact_email}).""")
INVITE_TEXT = """Hallo {{name}},
INVITE_TEXT = get_text('invite', default="""Hallo {{name}},
wir haben gute Neuigkeiten für dich. Es ist ein Platz in der Jugendgruppe {group_name} {group_link}freigeworden.
{group_time}
@ -50,10 +52,10 @@ Bei Fragen, wende dich gerne an %(RESPONSIBLE_MAIL)s.
Viele Grüße
Deine JDAV %(SEKTION)s""" % { 'SEKTION': SEKTION, 'RESPONSIBLE_MAIL': RESPONSIBLE_MAIL,
'REGISTRATION_FORM_DOWNLOAD_LINK': REGISTRATION_FORM_DOWNLOAD_LINK }
'REGISTRATION_FORM_DOWNLOAD_LINK': REGISTRATION_FORM_DOWNLOAD_LINK })
LEAVE_WAITINGLIST_TEXT = """Hallo {name},
LEAVE_WAITINGLIST_TEXT = get_text('leave_waitinglist', default="""Hallo {name},
du hast dich erfolgreich von der Warteliste abgemeldet. Falls du zu einem späteren
Zeitpunkt wieder der Warteliste beitreten möchtest, kannst du das über unsere Webseite machen.
@ -61,10 +63,10 @@ Zeitpunkt wieder der Warteliste beitreten möchtest, kannst du das über unsere
Falls du dich nicht selbst abgemeldet hast, wende dich bitte umgehend an %(RESPONSIBLE_MAIL)s.
Viele Grüße
Deine JDAV %(SEKTION)s""" % { 'SEKTION': SEKTION, 'RESPONSIBLE_MAIL': RESPONSIBLE_MAIL }
Deine JDAV %(SEKTION)s""" % { 'SEKTION': SEKTION, 'RESPONSIBLE_MAIL': RESPONSIBLE_MAIL })
WAIT_CONFIRMATION_TEXT = """Hallo {name},
WAIT_CONFIRMATION_TEXT = get_text('wait_confirmation', default="""Hallo {name},
leider können wir dir zur Zeit noch keinen Platz in einer Jugendgruppe anbieten. Da wir
sehr viele Interessenten haben und wir möglichst vielen die Möglichkeit bieten möchten, an
@ -79,15 +81,15 @@ Das ist Erinnerung Nummer {reminder} von {max_reminder_count}. Nach Erinnerung N
du automatisch entfernt.
Viele Grüße
Deine JDAV %(SEKTION)s""" % { 'SEKTION': SEKTION }
Deine JDAV %(SEKTION)s""" % { 'SEKTION': SEKTION })
UNSUBSCRIBE_CONFIRMATION_TEXT = """Klicke auf den Link, um dich vom Newsletter der JDAV %(SEKTION)s abzumelden
UNSUBSCRIBE_CONFIRMATION_TEXT = get_text('unsubscribe_confirmation', default="""Klicke auf den Link, um dich vom Newsletter der JDAV %(SEKTION)s abzumelden
{link}""" % { 'SEKTION': SEKTION }
{link}""" % { 'SEKTION': SEKTION })
NOTIFY_MOST_ACTIVE_TEXT = """Hallo {name}!
NOTIFY_MOST_ACTIVE_TEXT = get_text('notify_most_active', default="""Hallo {name}!
Herzlichen Glückwunsch, du hast im letzten Jahr zu den {congratulate_max} aktivsten
Mitgliedern der JDAV %(SEKTION)s gehört! Um genau zu sein beträgt dein Aktivitäts Wert
@ -97,10 +99,10 @@ im letzten Jahr das {position}aktivste Mitglied der JDAV %(SEKTION)s.
Auf ein weiteres aktives Jahr in der JDAV %(SEKTION)s.
Dein:e Jugendreferent:in""" % { 'SEKTION': SEKTION }
Dein:e Jugendreferent:in""" % { 'SEKTION': SEKTION })
ECHO_TEXT = """Hallo {name},
ECHO_TEXT = get_text('echo', default="""Hallo {name},
um unsere Daten auf dem aktuellen Stand zu halten und sicherzugehen, dass du
weiterhin ein Teil unserer Jugendarbeit bleiben möchtest, brauchen wir eine
@ -119,10 +121,10 @@ gelöscht und du erhälst in Zukunft keine Mails mehr von uns.
Bei Fragen, wende dich gerne an %(RESPONSIBLE_MAIL)s.
Viele Grüße
Deine JDAV %(SEKTION)s""" % { 'SEKTION': SEKTION, 'RESPONSIBLE_MAIL': RESPONSIBLE_MAIL }
Deine JDAV %(SEKTION)s""" % { 'SEKTION': SEKTION, 'RESPONSIBLE_MAIL': RESPONSIBLE_MAIL })
PREPEND_INCOMPLETE_REGISTRATION_TEXT = """WICHTIGE MITTEILUNG
PREPEND_INCOMPLETE_REGISTRATION_TEXT = get_text('prepend_incomplete_registration', default="""WICHTIGE MITTEILUNG
Deine Anmeldung ist aktuell nicht vollständig. Bitte fülle umgehend das
Anmeldeformular aus und lasse es Deine*r Jugendleiter*in zukommen! Dieses
@ -132,10 +134,10 @@ kannst Du unter folgendem Link herunterladen:
****************
""" % { 'REGISTRATION_FORM_DOWNLOAD_LINK': REGISTRATION_FORM_DOWNLOAD_LINK }
""" % { 'REGISTRATION_FORM_DOWNLOAD_LINK': REGISTRATION_FORM_DOWNLOAD_LINK })
MAIL_FOOTER = """
MAIL_FOOTER = get_text('mail_footer', default="""
****************
@ -144,10 +146,10 @@ Diese Email wurde über die Webseite der JDAV %(SEKTION)s
verschickt. Wenn Du in Zukunft keine Emails mehr erhalten möchtest,
kannst Du hier den Newsletter deabonnieren:
{link}""" % { 'SEKTION': SEKTION }
{link}""" % { 'SEKTION': SEKTION })
INVITE_AS_USER_TEXT = """Hallo {name},
INVITE_AS_USER_TEXT = get_text('invite_as_user', default="""Hallo {name},
du bist Jugendleiter*in in der Sektion %(SEKTION)s. Die Verwaltung unserer Jugendgruppen,
Ausfahrten und Finanzen erfolgt in unserer Online Plattform Kompass. Deine Stammdaten sind
@ -159,10 +161,10 @@ und wähle ein Passwort.
Bei Fragen, wende dich gerne an %(RESPONSIBLE_MAIL)s.
Viele Grüße
Deine JDAV %(SEKTION)s""" % { 'SEKTION': SEKTION, 'RESPONSIBLE_MAIL': RESPONSIBLE_MAIL }
Deine JDAV %(SEKTION)s""" % { 'SEKTION': SEKTION, 'RESPONSIBLE_MAIL': RESPONSIBLE_MAIL })
UPLOAD_REGISTRATION_FORM_TEXT = """Hallo {name},
UPLOAD_REGISTRATION_FORM_TEXT = get_text('upload_registration_form', default="""Hallo {name},
vielen Dank für deine Anmeldung in der JDAV %(SEKTION)s. Bevor es richtig losgehen kann, brauchen
wir noch die Bestätigung deiner Daten und die Zustimmung zu unseren Teilnahmebedingungen.
@ -177,9 +179,9 @@ Bist du noch nicht volljährig? Dann muss eine erziehungsberechtigte Person das
Bei Fragen, wende dich gerne an %(RESPONSIBLE_MAIL)s.
Viele Grüße
Deine JDAV %(SEKTION)s""" % { 'SEKTION': SEKTION, 'RESPONSIBLE_MAIL': RESPONSIBLE_MAIL }
Deine JDAV %(SEKTION)s""" % { 'SEKTION': SEKTION, 'RESPONSIBLE_MAIL': RESPONSIBLE_MAIL })
ADDRESS = """JDAV %(SEKTION)s
ADDRESS = get_text('address', default="""JDAV %(SEKTION)s
%(STREET)s
%(PLACE)s""" % { 'SEKTION': SEKTION, 'STREET': SEKTION_STREET, 'PLACE': SEKTION_TOWN }
%(PLACE)s""" % { 'SEKTION': SEKTION, 'STREET': SEKTION_STREET, 'PLACE': SEKTION_TOWN })

@ -1,75 +1,74 @@
# contact data
SEKTION = "Heidelberg"
SEKTION_STREET = "Harbigweg 20"
SEKTION_TOWN = "69124 Heidelberg"
SEKTION_TELEPHONE = "06221 284076"
SEKTION_TELEFAX = "06221 437338"
SEKTION_CONTACT_MAIL = "geschaeftsstelle@alpenverein-heidelberg.de"
SEKTION_BOARD_MAIL = "vorstand@alpenverein-heidelberg.de"
SEKTION_CRISIS_INTERVENTION_MAIL = "krisenmanagement@alpenverein-heidelberg.de"
SEKTION_IBAN = "DE22 6729 0000 0000 1019 40"
SEKTION_ACCOUNT_HOLDER = "Deutscher Alpenverein Sektion Heidelberg 1869"
RESPONSIBLE_MAIL = "jugendreferat@jdav-hd.de"
DIGITAL_MAIL = "digitales@jdav-hd.de"
SEKTION = get_var('section', 'name', default='Heyo')
SEKTION_STREET = get_var('section', 'street', default='Street')
SEKTION_TOWN = get_var('section', 'town', default='12345 Town')
SEKTION_TELEPHONE = get_var('section', 'telephone', default='0123456789')
SEKTION_TELEFAX = get_var('section', 'telefax', default=SEKTION_TELEPHONE)
SEKTION_CONTACT_MAIL = get_var('section', 'contact_mail', default='info@example.org')
SEKTION_BOARD_MAIL = get_var('section', 'board_mail', default=SEKTION_CONTACT_MAIL)
SEKTION_CRISIS_INTERVENTION_MAIL = get_var('section', 'crisis_intervention_mail',
default=SEKTION_BOARD_MAIL)
SEKTION_IBAN = get_var('section', 'iban', default='Foo 123')
SEKTION_ACCOUNT_HOLDER = get_var('section', 'account_holder',
default='Foo')
RESPONSIBLE_MAIL = get_var('section', 'responsible_mail', default='foo@example.org')
DIGITAL_MAIL = get_var('section', 'digital_mail', default='bar@example.org')
# LJP
V32_HEAD_ORGANISATION = """JDAV Baden-Württemberg
Rotebühlstraße 59A
70178 Stuttgart
info@jdav-bw.de
0711 - 49 09 46 00"""
LJP_CONTRIBUTION_PER_DAY = 25
V32_HEAD_ORGANISATION = get_var('LJP', 'v32_head_organisation', default='not configured')
LJP_CONTRIBUTION_PER_DAY = get_var('LJP', 'contribution_per_day', default=25)
# echo
ECHO_PASSWORD_BIRTHDATE_FORMAT = '%d.%m.%Y'
ECHO_GRACE_PERIOD = 30
# used to generate the personalized echo password
ECHO_PASSWORD_BIRTHDATE_FORMAT = get_var('echo', 'password_birthdate_format', default='%d.%m.%Y')
# grace period in days after which echo keys expire
ECHO_GRACE_PERIOD = get_var('echo', 'grace_period', default=30)
# misc
# Waiting list configuration parameters, all numbers are in days
CONGRATULATE_MEMBERS_MAX = 10
MAX_AGE_GOOD_CONDUCT_CERTIFICATE_MONTHS = 24
ALLOWED_EMAIL_DOMAINS_FOR_INVITE_AS_USER = ('alpenverein-heidelberg.de', )
GRACE_PERIOD_WAITING_CONFIRMATION = get_var('waitinglist', 'grace_period_confirmation', default=30)
WAITING_CONFIRMATION_FREQUENCY = get_var('waitinglist', 'confirmation_frequency', default=90)
CONFIRMATION_REMINDER_FREQUENCY = get_var('waitinglist', 'confirmation_reminder_frequency', default=30)
MAX_REMINDER_COUNT = get_var('waitinglist', 'max_reminder_count', default=3)
# mail mode
# misc
SEND_FROM_ASSOCIATION_EMAIL = os.environ.get('SEND_FROM_ASSOCIATION_EMAIL', '0') == '1'
# the maximal number of members that get sent congratulations for highest activity on aprils fools day
CONGRATULATE_MEMBERS_MAX = get_var('misc', 'congratulate_members_max', default=10)
# expiry duration of a good conduct certificate in months
MAX_AGE_GOOD_CONDUCT_CERTIFICATE_MONTHS = get_var('misc', 'max_age_good_conduct_certificate_months', default=24)
# accepted email domains for inviting users
ALLOWED_EMAIL_DOMAINS_FOR_INVITE_AS_USER = get_var('misc', 'allowed_email_domains_for_invite_as_user',
default=['example.org'])
# send all mails from the assocation's contact mail or from personal association mails
SEND_FROM_ASSOCIATION_EMAIL = get_var('misc', 'send_from_association_email', default=False)
# domain for association email and generated urls
DOMAIN = get_var('misc', 'domain', default='example.org')
# finance
ALLOWANCE_PER_DAY = 22
MAX_NIGHT_COST = 11
ALLOWANCE_PER_DAY = get_var('finance', 'allowance_per_day', default=22)
MAX_NIGHT_COST = get_var('finance', 'max_night_cost', default=11)
CLOUD_LINK = os.environ.get('CLOUD_LINK', 'https://startpage.com')
DAV_360_LINK = os.environ.get('DAV_360_LINK', 'https://dav360.de')
WIKI_LINK = os.environ.get('WIKI_LINK', 'https://wikipedia.org')
DOCS_LINK = os.environ.get('DOCS_LINK', 'https://jdav-hd.de/static/docs/')
# links
# Admin setup
CLOUD_LINK = get_var('links', 'cloud', default='https://startpage.com')
DAV_360_LINK = get_var('links', 'dav_360', default='https://dav360.de')
WIKI_LINK = get_var('links', 'wiki', default='https://wikipedia.org')
DOCS_LINK = get_var('links', 'docs', default='https://github.com/chrisflav/kompass')
REGISTRATION_FORM_DOWNLOAD_LINK = get_var('links', 'registration_form', default='https://startpage.com')
ADMINS = (('admin', 'christian@merten-moser.de'),)
# startpage
# Waiting list configuration parameters, all numbers are in days
GRACE_PERIOD_WAITING_CONFIRMATION = 30
WAITING_CONFIRMATION_FREQUENCY = 90
CONFIRMATION_REMINDER_FREQUENCY = 30
MAX_REMINDER_COUNT = 3
STARTPAGE_REDIRECT_URL = get_var('startpage', 'redirect_url', default='')
ROOT_SECTION = get_var('startpage', 'root_section', default='about')
RECENT_SECTION = get_var('startpage', 'recent_section', default='recent')
REPORTS_SECTION = get_var('startpage', 'reports_section', default='reports')
# testing
TEST_MAIL = "post@flavigny.de"
REGISTRATION_FORM_DOWNLOAD_LINK = os.environ.get('REGISTRATION_FORM_DOWNLOAD_LINK', 'https://startpage.com')
DOMAIN = os.environ.get('DOMAIN', 'example.com')
STARTPAGE_REDIRECT_URL = 'https://jdav-hd.de'
ROOT_SECTION = os.environ.get('ROOT_SECTION', 'wir')
RECENT_SECTION = 'aktuelles'
REPORTS_SECTION = 'berichte'
TEST_MAIL = get_var('testing', 'mail', default='test@localhost')

@ -956,11 +956,6 @@ class StatementOnListForm(forms.ModelForm):
'allowance_to': _("This excursion only has up to %(approved_count)s approved youth leaders, but you listed %(entered_count)s.") % {'approved_count': str(excursion.approved_staff_count),
'entered_count': str(allowance_to.count())},
})
if allowance_to.count() < min(excursion.approved_staff_count, excursion.jugendleiter.count()):
raise ValidationError({
'allowance_to': _("This excursion has %(approved_count)s approved youth leaders, but you listed only %(entered_count)s.") % {'approved_count': str(excursion.approved_staff_count),
'entered_count': str(allowance_to.count())},
})
class StatementOnListInline(CommonAdminInlineMixin, nested_admin.NestedStackedInline):

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-01-19 19:16+0100\n"
"POT-Creation-Date: 2025-01-25 11:56+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -268,15 +268,6 @@ msgstr ""
"Diese Ausfahrt hat nur bis zu %(approved_count)s zugelassene "
"Jugendleiter*innen, aber du hast %(entered_count)s eingetragen."
#: members/admin.py
#, python-format
msgid ""
"This excursion has %(approved_count)s approved youth leaders, but you listed "
"only %(entered_count)s."
msgstr ""
"Diese Ausfahrt hat %(approved_count)s zugelassene Jugendleiter*innen, aber "
"du hast nur %(entered_count)s eingetragen."
#: members/admin.py
msgid ""
"Please list here all expenses in relation with this excursion and upload "
@ -1129,20 +1120,20 @@ msgstr ""
#: members/templates/admin/freizeit_finance_overview.html
#, python-format
msgid ""
"%(duration)s days for %(allowance_per_day)s€ per day making a total of "
"%(allowance_per_yl)s€."
"%(kilometers_traveled)s km by %(means_of_transport)s (%(euro_per_km)s € / "
"km) making a total of %(transportation_per_yl)s€."
msgstr ""
"%(duration)s Tage für %(allowance_per_day)s€ pro Tag. Das ergibt eine "
"Gesamtsumme von %(allowance_per_yl)s€."
"%(kilometers_traveled)s km mit %(means_of_transport)s (%(euro_per_km)s€ / "
"km). Das ergibt eine Gesamtsumme von %(transportation_per_yl)s€."
#: members/templates/admin/freizeit_finance_overview.html
#, python-format
msgid ""
"%(kilometers_traveled)s km by %(means_of_transport)s (%(euro_per_km)s € / "
"km) making a total of %(transportation_per_yl)s€."
"%(duration)s days for %(allowance_per_day)s€ per day making a total of "
"%(allowance_per_yl)s€."
msgstr ""
"%(kilometers_traveled)s km mit %(means_of_transport)s (%(euro_per_km)s€ / "
"km). Das ergibt eine Gesamtsumme von %(transportation_per_yl)s€."
"%(duration)s Tage für %(allowance_per_day)s€ pro Tag. Das ergibt eine "
"Gesamtsumme von %(allowance_per_yl)s€."
#: members/templates/admin/freizeit_finance_overview.html
#, python-format
@ -1153,6 +1144,22 @@ msgstr ""
"Die Aufwandsentschädigung von %(allowance_per_yl)s€ pro Person wird "
"ausgezahlt an:"
#: members/templates/admin/freizeit_finance_overview.html
#, python-format
msgid ""
"Only %(allowances_paid)s of the %(real_staff_count)s youth leaders have "
"requested the outpayment of their allowance."
msgstr ""
"Achtung: Nur für %(allowances_paid)s der %(real_staff_count)s "
"Jugendleiter*innen wird die Aufwandsentschädigung abgerufen."
#: members/templates/admin/freizeit_finance_overview.html
msgid ""
"No receivers of the allowance were provided. Allowance will not be used."
msgstr ""
"Keine Empfänger*innen für eine Aufwandsentschädigung angegeben. Es wird "
"daher keine Aufwandsentschädigung ausbezahlt."
#: members/templates/admin/freizeit_finance_overview.html
#, python-format
msgid ""
@ -1160,7 +1167,14 @@ msgid ""
"configured to be paid to:"
msgstr ""
"Die Zuschüsse für Übernachtungs- und Fahrtkosten von %(total_subsidies)s€ "
"werden ausgezahlt an:"
"für alle Jugendleiter*innen werden ausgezahlt an:"
#: members/templates/admin/freizeit_finance_overview.html
msgid ""
"No receivers of the subsidies were provided. Subsidies will not be used."
msgstr ""
"Keine Empfänger*innen für Sektionszuschüsse angegeben. Es werden daher keine "
"Sektionszuschüsse ausbezahlt."
#: members/templates/admin/freizeit_finance_overview.html
msgid ""
@ -1486,13 +1500,13 @@ msgstr "Speichern und Registrierung bestätigen"
msgid "Echo"
msgstr "Rückmeldung"
#: members/templates/members/echo.html
#: members/templates/members/echo.html members/tests.py
msgid "Thanks for echoing back. Here is your current data:"
msgstr ""
"Vielen Dank, dass du dich rückmeldest. Hier siehst du deine aktuellen Daten. "
"Falls sich etwas geändert hat, trage das bitte hier ein."
#: members/templates/members/echo_failed.html
#: members/templates/members/echo_failed.html members/tests.py
msgid "Echo failed"
msgstr "Rückmeldung fehlgeschlagen"
@ -1513,7 +1527,7 @@ msgstr "Wenn du denkst, dass das ein Fehler ist, "
msgid "contact us."
msgstr "kontaktiere uns."
#: members/templates/members/echo_password.html
#: members/templates/members/echo_password.html members/tests.py
msgid ""
"Thanks for echoing back. Please enter the password, which you can find in "
"the email we sent you.\n"
@ -1535,7 +1549,7 @@ msgstr "Rückmeldung erfolgreich"
msgid "Thank you"
msgstr "Danke"
#: members/templates/members/echo_success.html
#: members/templates/members/echo_success.html members/tests.py
msgid "Your data was successfully updated."
msgstr "Deine Daten wurden erfolgreich aktualisiert."
@ -1562,16 +1576,16 @@ msgstr "Registrierung fehlgeschlagen"
msgid "Registration"
msgstr "Registrierung"
#: members/templates/members/mail_confirmation_invalid.html
#: members/templates/members/mail_confirmation_invalid.html members/tests.py
msgid "Mail confirmation failed"
msgstr "Emailbestätigung fehlgeschlagen"
#: members/templates/members/mail_confirmation_invalid.html
#: members/templates/members/waiting_confirmation_invalid.html
#: members/templates/members/waiting_confirmation_invalid.html members/tests.py
msgid "The supplied link is invalid."
msgstr "Der verwendete Link ist ungültig."
#: members/templates/members/mail_confirmation_success.html
#: members/templates/members/mail_confirmation_success.html members/tests.py
msgid "Mail confirmed"
msgstr "Emailadresse bestätigt"
@ -1644,7 +1658,7 @@ msgstr "Registrieren"
msgid "Here you can register for group"
msgstr "Hier kannst du dich registrieren für die Gruppe"
#: members/templates/members/register_failed.html
#: members/templates/members/register_failed.html members/tests.py
msgid "Something went wrong while processing your registration."
msgstr "Etwas ist schief gelaufen, bei der Verarbeitung deiner Registrierung."
@ -1699,6 +1713,7 @@ msgid "Registration for waiting list."
msgstr "Registrierung für die Warteliste."
#: members/templates/members/register_waiting_list_success.html
#: members/tests.py
msgid "Your registration for the waiting list was successful."
msgstr "Du wurdest auf die Warteliste gesetzt."
@ -1724,7 +1739,7 @@ msgstr ""
msgid "Reject invitation"
msgstr "Einladung ablehnen"
#: members/templates/members/reject_invalid.html
#: members/templates/members/reject_invalid.html members/tests.py
msgid "This invitation is invalid or expired."
msgstr "Diese Einladung ist ungültig oder abgelaufen."
@ -1792,7 +1807,7 @@ msgstr ""
"zustimmst, unterschreibe bitte das Formular und lade hier einen Scan oder "
"ein Bild hoch."
#: members/templates/members/upload_registration_form.html
#: members/templates/members/upload_registration_form.html members/tests.py
msgid ""
"If you are not an adult yet, please let someone responsible for you sign the "
"agreement."
@ -1805,10 +1820,12 @@ msgid "Upload"
msgstr "Hochladen"
#: members/templates/members/upload_registration_form_invalid.html
#: members/tests.py
msgid "The supplied key for uploading a registration form is invalid."
msgstr "Der verwendete Link zum Hochladen eines Anmeldeformulars ist ungültig."
#: members/templates/members/upload_registration_form_success.html
#: members/tests.py
msgid ""
"Thank you for uploading the registration form. Our team will process your "
"registration shortly."
@ -1828,11 +1845,11 @@ msgstr ""
"Leider hast du deinen Wartelistenplatz nicht rechtzeitig bestätigt und hast "
"somit deinen Platz verloren. Du kannst"
#: members/templates/members/waiting_confirmation_invalid.html
#: members/templates/members/waiting_confirmation_invalid.html members/tests.py
msgid "rejoin the waiting list"
msgstr "der Warteliste erneut beitreten"
#: members/templates/members/waiting_confirmation_success.html
#: members/templates/members/waiting_confirmation_success.html members/tests.py
msgid "Waiting confirmed"
msgstr "Wartelistenplatz bestätigt"
@ -1854,6 +1871,22 @@ msgstr ""
"Danke %(prename)s für dein Interesse auf der Warteliste zu bleiben.\n"
"Dein Platz wurde bestätigt."
#: members/tests.py
msgid "This field is required."
msgstr ""
#: members/tests.py members/views.py
msgid "The entered password is wrong."
msgstr "Das eingegebene Passwort ist falsch."
#: members/tests.py members/views.py
msgid "invalid"
msgstr "ungültig"
#: members/tests.py members/views.py
msgid "expired"
msgstr "abgelaufen"
#: members/views.py
msgid "Prename of the member."
msgstr "Vorname des*der Teilnehmenden"
@ -1876,22 +1909,18 @@ msgstr ""
msgid "optional additional email address"
msgstr "Optionale zusätzliche E-Mailadresse"
#: members/views.py
msgid "The entered password is wrong."
msgstr "Das eingegebene Passwort ist falsch."
#: members/views.py
msgid "invalid"
msgstr "ungültig"
#: members/views.py
msgid "expired"
msgstr "abgelaufen"
#: members/views.py
msgid "Invalid emergency contacts"
msgstr "Ungültige Notfallkontakte"
#, python-format
#~ msgid ""
#~ "This excursion has %(approved_count)s approved youth leaders, but you "
#~ "listed only %(entered_count)s."
#~ msgstr ""
#~ "Diese Ausfahrt hat %(approved_count)s zugelassene Jugendleiter*innen, "
#~ "aber du hast nur %(entered_count)s eingetragen."
#, python-format
#~ msgid ""
#~ "In total these are contributions of %(total_per_yl)s€ times "

@ -1330,7 +1330,8 @@ class Freizeit(CommonModel):
# Gesamt-Teilnahmetage
'Textfeld 56': str(round(self.duration * self.ljp_participant_count, 1)).replace('.', ','),
# Ort, Datum
'DatumOrt 2': 'Heidelberg, ' + datetime.now().strftime('%d.%m.%Y')
'DatumOrt 2': '{place}, {date}'.format(place=settings.SEKTION,
date=datetime.now().strftime('%d.%m.%Y'))
}
if hasattr(self, 'statement'):
possible_contributions = self.maximal_ljp_contributions

@ -86,6 +86,7 @@ cost plan!
</ul>
</p>
<p>
{% if allowances_paid > 0 %}
{% blocktrans %}The allowance of {{ allowance_per_yl }}€ per person is configured to be paid to:{% endblocktrans %}
<table>
<th>
@ -99,6 +100,14 @@ cost plan!
{% endfor %}
</table>
</p>
{% if memberlist.statement.allowances_paid < memberlist.statement.real_staff_count %}
<p>{% blocktrans %}Only {{ allowances_paid }} of the {{ real_staff_count }} youth leaders have requested the outpayment of their allowance.{% endblocktrans %}</p>
{% endif %}
{% else %}
<p>{% blocktrans %}No receivers of the allowance were provided. Allowance will not be used.{% endblocktrans %}</p>
{% endif %}
{% if memberlist.statement.subsidy_to %}
<p>
{% blocktrans %}The subsidies for night and transportation costs of {{ total_subsidies }}€ is configured to be paid to:{% endblocktrans %}
<table>
@ -111,6 +120,10 @@ cost plan!
</tr>
</table>
</p>
{% else %}
<p>{% blocktrans %}No receivers of the subsidies were provided. Subsidies will not be used.{% endblocktrans %}</p>
{% endif %}
{% if not memberlist.statement.allowance_to_valid %}
<p>
{% blocktrans %}Warning: The configured recipients of the allowance don't match the regulations. This might be because the number of recipients is bigger then the number of admissable youth leaders for this excursion.{% endblocktrans %}

@ -1,406 +1,8 @@
{% load tex_extras %}
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{booktabs}
\usepackage{amssymb}
\usepackage{cmbright}
\usepackage{graphicx}
\usepackage{textpos}
\usepackage[colorlinks, breaklinks]{hyperref}
\usepackage{float}
\usepackage[margin=1in]{geometry}
\usepackage{array}
\usepackage{tabularx}
\usepackage{ltablex}
\usepackage{tikz}
\usepackage{setspace}
\usepackage{pbox}
\newcommand{\picpos}[4]{
\begin{textblock*}{#1}(#2, #3)
\includegraphics[width=\textwidth]{#4}
\end{textblock*}
}
% set formatting
\setlength\parindent{0pt}
\setlength\parskip{0.6em plus 0.1em minus 0.1em}
% custom url command for properly formatting emails
\DeclareUrlCommand\Email{\urlstyle{same}}
% allow linebreak after every character
\expandafter\def\expandafter\UrlBreaks\expandafter{\UrlBreaks
\do\/\do\a\do\b\do\c\do\d\do\e\do\f\do\g\do\h\do\i\do\j\do\k
\do\l\do\m\do\n\do\o\do\p\do\q\do\r\do\s\do\t\do\u\do\v
\do\w\do\x\do\y\do\z
\do\A\do\B\do\C\do\D\do\E\do\F\do\G\do\H\do\I\do\J\do\K
\do\L\do\M\do\N\do\O\do\P\do\Q\do\R\do\S\do\T\do\U\do\V
\do\W\do\X\do\Y\do\Z}
\renewcommand{\arraystretch}{1}
\newcolumntype{L}{>{\hspace{0pt}}X}
\newcommand{\tickedbox}{
\makebox[0pt][l]{$\square$}\raisebox{.15ex}{\hspace{0.1em}$\checkmark$}
}
\newcommand{\checkbox}{
\makebox[0pt][l]{$\square$}
}
% algemeines Layout Formular-Elemente
\renewcommand*{\DefaultOptionsofRadio}{print,radio, radiosymbol=6, width=\baselineskip, bordercolor={black}, borderwidth=0pt}
\renewcommand*{\DefaultOptionsofText}{print,bordercolor={black}, backgroundcolor=white, borderwidth=0pt}
\renewcommand{\LayoutTextField}[2]{% label, field
\setbox0=\hbox{#1\unskip}\ifdim\wd0=0pt
\setbox1=\hbox{#2\unskip}\ifdim\ht1>3ex
% Multiline
\begin{tikzpicture}[every node/.style={inner sep=0,outer sep=0}]
\node[anchor=west] (TextFieldNode) at (0cm,0cm) {#2};
\draw [thick] (current bounding box.south west) rectangle (current bounding box.north east);
\end{tikzpicture}%
\else
% Inline field, lowered a little bit to be better integrated into the text
\raisebox{-3.2pt}{\begin{tikzpicture}[every node/.style={inner sep=0,outer sep=0}]
\node[anchor=west] (TextFieldNode) at (0cm,0cm) {#2};
\draw[thick] ([yshift=-0.3ex]TextFieldNode.south west) -- ([yshift=-0.3ex]TextFieldNode.south east);
\end{tikzpicture}}%
\fi
\else
% Field with label below it
\begin{tikzpicture}[every node/.style={inner sep=0,outer sep=0}]
\node[anchor=west] (TextFieldNode) at (0cm,2ex) {#2};
\draw[thick] ([yshift=-0.3ex]TextFieldNode.south west) -- ([yshift=-0.3ex]TextFieldNode.south east);
\node[anchor=west,font=\small] at (0cm,-0.9ex) {#1};
\end{tikzpicture}%
\fi
}
\newcommand{\radiosize}{0.33cm}
\newcommand{\yesnoticks}[1]{%
\raisebox{-3.2pt}{\begin{tikzpicture}[every node/.style={inner sep=0,outer sep=0}]
\node[anchor=west,style={inner sep=2px}] (FieldYes) at (0cm,0cm) {\ChoiceMenu[radio=true,name=#1,width=\radiosize,height=\radiosize]{}{=Yes}};
\node[anchor=west] (LabelYes) at ([xshift=0.7ex]FieldYes.east) {Ja};
\node[anchor=west,style={inner sep=2px}] (FieldNo) at ([xshift=1ex]LabelYes.east) {\ChoiceMenu[radio=true,name=#1,width=\radiosize,height=\radiosize]{}{=No}};
\node[anchor=west] (LabelNo) at ([xshift=0.7ex]FieldNo.east) {Nein};
\draw [thick] ([xshift=-(\radiosize+0.15cm),yshift=-(\radiosize+0.15cm)]FieldYes.north east) rectangle (FieldYes.north east);
\draw [thick] ([xshift=-(\radiosize+0.15cm),yshift=-(\radiosize+0.15cm)]FieldNo.north east) rectangle (FieldNo.north east);
\end{tikzpicture}}%
}
% Formularfeld, leer, editierbar
\newcommand{\field}[2]{\TextField[width=#2]{#1}}
% Formularfeld, vorbefüllt, editierbar
\newcommand{\fieldpf}[3]{\TextField[width=#2,value=#3]{#1}}
% Formularfeld, vorbefüllt, nicht editierbar
\newcommand{\fieldpfro}[3]{\TextField[width=#2,value=#3,readonly]{#1}}
% Formularfeld, in den Fließtext integriert
\newcommand{\fieldinline}[2]{\TextField[width=#2,name=#1]{}}
% Ja-Nein Antwort
\newcommand{\yesno}[2]{\pbox{0.8\textwidth}{\setstretch{1}#1}\hfill\yesnoticks{#2}}
% Dummy-Formularfeld: Sieht genauso aus, ist aber statisch, vorbefüllt, nicht editierbar.
\newcommand{\fieldd}[3]{% Label, width, prefilled text
\begin{tikzpicture}[every node/.style={inner sep=0,outer sep=0}]
% Draw the static field rectangle
\node[anchor=west] (DummyFieldNode) at (0cm,2ex) {\strut #3}; % Prefilled text
\draw[thick] ([xshift=0cm,yshift=-0.3ex]DummyFieldNode.south west) -- ([xshift=#2,yshift=-0.3ex]DummyFieldNode.south west);
% Label underneath
\node[anchor=west,font=\small] at (0cm,-1.2ex) {#1};
\end{tikzpicture}%
}
\begin{document}
% HEADER RIGHT
\picpos{4.5cm}{11.5cm}{0cm}{/app/jdav_web/static/general/img/dav_logo_hd.png}
\begin{textblock*}{5cm}(11.5cm, 2.3cm)
\begin{flushright}
\small
\noindent Deutscher Alpenverein e. V. \\
Sektion {{ settings.SEKTION }} \\
{{ settings.SEKTION_STREET }} \\
{{ settings.SEKTION_TOWN }} \\
Tel.: {{ settings.SEKTION_TELEPHONE }} \\
Fax: {{ settings.SEKTION_TELEFAX }} \\
{{ settings.SEKTION_CONTACT_MAIL }} \\
\end{flushright}
\end{textblock*}
% HEADLINE
\textbf{\LARGE Anmeldung und Einverständniserklärung}
\textbf{Wir melden unser Kind verbindlich zur Jugendgruppe an:}
\begin{Form}
\fieldd{Vor- und Nachname des Kindes}{0.65\linewidth}{ {{ member.name|esc_all }} }
\fieldd{Geburtsdatum}{0.3\linewidth}{ {{ member.birth_date_str|esc_all }} } \hfill
\fieldd{Gender}{0.3\linewidth}{ {{ member.gender_str|esc_all }} } \hspace{0.35\linewidth}
\fieldpf{DAV-Mitglieds-Nr.}{0.3\linewidth}{ {{ member.dav_badge_no|esc_all }} } \hfill
\fieldd{Telefon (mobil)*}{0.3\linewidth}{ {{ member.phone_number|esc_all }} } \hspace{0.35\linewidth}
\fieldd{Adresse}{0.65\linewidth}{ {{ member.street|esc_all }}, {{ member.plz|esc_all }} {{ member.town|esc_all }} }
\fieldd{E-Mail}{0.65\linewidth}{ {{ member.email|esc_all }} }
{\small *wenn vorhanden, Kontaktdaten des Kindes, ansonsten einer Kontaktperson}
\textbf{Notfallkontakte:}
\begin{tabular*}{\linewidth}{@{\extracolsep{\fill}}lll}
Vollständiger Name & E-Mail & Telefon (mobil) \\
\midrule
{% for c in member.emergencycontact_set.all %}
{{ c.name|esc_all }} & {{ c.email|esc_all }} & {{ c.phone_number|esc_all }} \\
{% endfor %}
\bottomrule
\end{tabular*}
\textbf{Medizinische Informationen:}
Gemäß den Teilnahmebedingungen verpflichten wir uns, vollständige
Angaben zu etwaigen gesundheitlichen Einschränkungen oder Erkrankungen unseres
Kindes zu machen:
\field{Allergien}{\linewidth}
\field{Medikamenten-Einnahmen}{\linewidth}
\field{Weitere Informationen zu Einschränkungen}{\linewidth}
\yesno{Unser Kind hat eine aktuelle Tetanus-Schutzimpfung}{tetanus}
\yesno{Unser Kind hat sichere Schwimmkenntnisse}{schwimmen}
\textbf{Einwilligung zu den Teilnahmebedingungen}
Mit unserer Unterschrift bestätigen wird, dass wir die beigelegten
Teilnahmebedingungen (Stand 06.12.2024) gelesen und verstanden haben. Diesen Bedingungen
stimmen wir zu. Wir versichern, jegliche Änderungen an oben angegebenen
Daten umgehend den Jugendleiter*innen mitzuteilen.
\yesno{Wir stimmen der Bildnutzung in den Sektionsmedien gemäß
Teilnahmebedingungen zu}{bildnutzung}
\yesno{Unser Kind darf sich selbstständig von der Gruppenstunde abmelden.}{abmelden}
\vspace{10pt}
\vfill
\field{Ort, Datum}{0.28\linewidth}{}\hfill
\fieldd{Unterschrift Kind}{0.28\linewidth}{}\hfill
\fieldd{Unterschrift des/der Erziehungsberechtigten}{0.4\linewidth}{}
Bitte diese Seite ausgefüllt und unterschrieben im Registrierungsformular hochladen.
\end{Form}
\newpage
\textbf{\large Informationen und Bedingungen zur Teilnahme an den
JDAV-Jugendgruppen der DAV-Sektion Heidelberg}
{\small Stand: 06.12.2024}
Liebes neues Jugendgruppenmitglied,
herzlich willkommen als neues aktives Mitglied unserer Sektionsjugend!
Das Zentrum unserer Jugendarbeit sind die wöchentlichen Gruppenstunden,
in denen wir in einer festen Gruppe gemeinsam Klettern oder Fahrrad fahren, Spiele spielen
und Spaß haben. Uns ist wichtig, dass du regelmäßig dabei bist und
deinen Jugendleiter*innen immer bescheid gibst, wenn du mal nicht kommen
kannst.
Zu unserer Jugendarbeit gehören aber auch regelmäßig Ausfahrten und
Veranstaltungen rund um die Kletterhalle. Ausfahrten können ein- oder
mehrtägige Ausflüge zum Klettern in der Region, aber auch in die
Mittelgebirge oder Alpen sein, wo wir gemeinsam Wandern, Bergsteigen,
Klettern... Veranstaltungen in der Kletterhalle können zum Beispiel
gemeinsame Übernachtungen in der Gruppe oder größere Aktivitäten mit der
ganzen Sektionsjugend sein, z.B. unsere jährliche Jugendvollversammlung.
Hier treffen wir basisdemokratisch Entscheidungen über die Zukunft der
Jugendarbeit und wählen Stellvertreter*innen, die die Jugendarbeit
organisieren. Auch du hast hier eine Stimme! Wir freuen uns, wenn du bei
möglichst vielen Aktivitäten dabei sein kannst.
Deine Jugendleiter*innen
\\[3mm]
\_\_
\\[3mm]
Liebe Eltern,
Bitte lesen Sie diese Teilnahmebedingungen für unsere Jugendarbeit genau
und bestätigen Ihr Einverständnis mit Ihrer Unterschrift auf unserer
Einverständniserklärung.
\textbf{Durchgeführte Aktivitäten}
In unserer Jugendgruppe bieten wir im weitesten Sinne verschiedene
Aktivitäten und Aktionen an, zu denen wir die Jugendlichen vorher
entsprechend einweisen, dazu gehören u.a.:
\begin{itemize}
\setlength\itemsep{1pt}
\item
Jugendgruppenstunden mit Spielen, Übungen usw.
\item
Outdoorspiele in verschiedenen Formen
\item
Klettern an künstlichen Anlagen und natürlichen Felsen
\item
Wanderungen, Bachwanderungen oder Klettersteigbegehungen
\item Fahrradtouren z.B. mit dem Mountainbike
\item
natursportliche Aktivität mit den dort typischen Bedingungen und
Risiken
\item
Gruppenübergreifende Ausfahrten und Veranstaltungen der JDAV
Heidelberg.
\end{itemize}
Während aller Aktivitäten werden die Jugendlichen von unseren
Jugendleiter*innen, die eine entsprechende Qualifizierung (DAV
Jugendleiterausbildung / DAV Fachübungsleiter usw.) vorweisen können,
betreut und beaufsichtigt.
Um teilnehmen zu können, müssen die Jugendlichen Mitglied in der Sektion
Heidelberg des DAV sein und eine von den Erziehungsberechtigten
unterschriebene Einverständniserklärung abgeben. Wir erwarten eine
möglichst regelmäßige Teilnahme an den Gruppenstunden. Bei wiederholt
unentschuldigtem Fehlen (ab 3 mal) kann es zum Ausschluss aus der Gruppe
kommen.
Mit Ihrer Unterschrift wird außerdem die aktuelle Fassung der
\textbf{Benutzer- und Hallenordnung der Kletterhalle} der Sektion
Heidelberg (Harbigweg 20, 69124 Heidelberg), anerkannt. Die Benutzer-
und Hallenordnung hängt ständig in der Kletterhalle aus. Den Anweisungen
des Personals ist Folge zu leisten. Die Gruppenstunden finden
gelegentlich auch \textbf{außerhalb des Vereinszentrums} im Harbigweg
20, 69124 Heidelberg, statt. Mit Ihrer Unterschrift wird auch
zugestimmt, dass diese Gruppenstunden zu anderen Zeiten und an anderen
Orten durchgeführt werden können.
\textbf{Haftung}
Mit Ihrer Unterschrift erklären Sie sich damit einverstanden, dass Ihr
Kind an den oben genannten
Aktivitäten im weitesten Sinne teilnehmen darf. Sie sind sich bewusst,
dass natursportliche und vor allem klettersportliche Aktivitäten mit
Risiken verbunden sind, die sich nicht vollständig ausschließen lassen.
Sie erkennen damit an, dass die Sektion Heidelberg und ihre
verantwortlichen ehrenamtlichen
Jugendleiter*innen - soweit gesetzlich zulässig - von jeglicher Haftung
sowohl im Grunde als auch
der Höhe nach freigestellt werden, die über den im Rahmen der
Mitgliedschaft im DAV,
sowie für die ehrenamtliche Tätigkeit bestehenden Versicherungsschutz
hinausgehen. Dies
gilt nicht für die Verursachung von Unfällen durch Vorsatz oder grobe
Fahrlässigkeit.
Weitere Informationen zum DAV und dessen Jugendarbeit aber auch z.B. zu
den
Versicherungsbedingungen oder aktuellen Informationen finden Sie unter
\href{http://www.alpenverein.de}{www.alpenverein.de}
\textbf{Weitere Informationen zu Ihrem Kind}
Sie verpflichten sich, die Jugendleiter*innen insbesondere über folgende
persönliche Einschränkungen und zu informieren (über die angehängte
Einverständniserklärung):
\begin{itemize}
\setlength\itemsep{1pt}
\item
relevante allergische Reaktionen
\item
relevante asthmatische Erkrankungen oder Beschwerden
\item
relevante Herzkreislauferkrankungen oder Beschwerden
\item
Diabetes
\item
Epilepsie oder relevante Nervenerkrankungen
\item
relevante orthopädische Probleme (Bandscheibenvorfall, Verrenkungen,
Knochenbrüche\ldots)
\item
relevante Infektionskrankheiten
\item
ADHS oder sonstige Aufmerksamkeitsstörungen
\item
Einnahme von dringend notwendigen Medikamenten
\item
relevante Suchterkrankungen, psychische Erkrankungen oder
Einschränkungen
\item
sonstige relevante Beeinträchtigungen oder Erkrankungen (Bspw.
Inkontinenz)
\end{itemize}
Die JDAV weist darauf hin, dass durchgeführte Aktivitäten auch im Freien
in Risikogebieten für
von Zecken übertragene FSME oder Borreliose stattfinden können
(Rhein-Neckar Kreis gehört zu den Risikogebieten). Eine Impfung wird
empfohlen.
Ergeben sich Veränderungen bei den angegebenen Informationen, dann
müssen die Jugendleiter*innen umgehend darüber informiert werden.
\textbf{Datenschutz}
Sie sind damit einverstanden, dass die JDAV Heidelberg die von Ihnen
angegebenen Daten elektronisch erfasst, verarbeitet und speichert. Diese
Datenverarbeitung erfolgt in Rechenzentren in der Schweiz oder Staaten
des Europäischen Wirtschaftsraums (EWR). Nach einer Beendigung der
Mitgliedschaft werden Ihre personenbezogenen Daten gelöscht, soweit sie
nicht, entsprechend den steuerrechtlichen Vorgaben, aufbewahrt werden
müssen. Die Datenverarbeitung erfolgt auf Grundlage des Art. 6 Abs. 1 S.
1 lit. b DSGVO. Die jeweils aktuelle Datenschutzerklärung kann jederzeit
auf der Website unter \href{https://www.jdav-hd.de/datenschutz}{www.jdav-hd.de/datenschutz} abgerufen
werden.
Die Jugendleiter*innen sind im Rahmen ihrer Tätigkeiten über
Sektions-E-Mailadressen nach dem Schema
vorname.nachname@alpenverein-heidelberg.de erreichbar, die Jugendleiter*innen einer Gruppe über
Adressen nach dem Schema leitung.gruppenname@jdav-hd.de. Bitte nutzen Sie
für die Kontaktaufnahme vorrangig diese E-Mailadressen.
Zur Weitergabe der Daten im Rahmen einer Mitgliedschaft im Alpenverein
Heidelberg beachten Sie bitte auch die Datenschutzerklärung der Sektion
unter \href{https://www.alpenverein-heidelberg.de/datenschutz}{www.alpenverein-heidelberg.de/datenschutz}.
\textbf{Abbildungen in Sektionsmedien:}
Selbstverständlich gehören auf eine lebendig gestaltete Homepage sowie
andere Medien der Sektion (Aushänge im Vereinsheim, Sektionsnachrichten,
etc.) auch Berichte und Fotos von Veranstaltungen der Jugend, bei denen
vielleicht auch Ihr Kind dabei ist. Da gemäß § 22 KunstUrhG, Bilder
jedoch nur mit Einwilligung des Abgebildeten bzw. seiner gesetzlichen
Vertreter verbreitet oder öffentlich zur Schau gestellt werden dürfen,
bitten wir Sie um Erlaubnis. Mit Ihrer Einverständniserklärung
erleichtern Sie uns wesentlich die Arbeit und wir können so unseren
lebendigen Verein gut nach außen darstellen.
Wenn sie in der Einverständniserklärung ihre Einwilligung geben,
erklären Sie sich damit einverstanden, dass von den Jugendleiter*innen
ausgewählte Fotos und Aufnahmen, auf denen Ihr Kind zu sehen ist, mit
den anderen Kindern geteilt werden, auf der Homepage, sowie im
Sektionsheft der DAV-Sektion Heidelberg und allen anderen Vereinsmedien
erscheinen und veröffentlicht werden dürfen. Diese Einwilligung kann
jederzeit widerrufen werden.
Please provide a customized registration form as a LaTeX template in the config directory as
described in the documentation.
\end{document}

@ -1,405 +1,8 @@
{% load tex_extras %}
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{booktabs}
\usepackage{amssymb}
\usepackage{cmbright}
\usepackage{graphicx}
\usepackage{textpos}
\usepackage[colorlinks, breaklinks]{hyperref}
\usepackage{float}
\usepackage[margin=1in]{geometry}
\usepackage{array}
\usepackage{tabularx}
\usepackage{ltablex}
\usepackage{tikz}
\usepackage{setspace}
\usepackage{pbox}
\newcommand{\picpos}[4]{
\begin{textblock*}{#1}(#2, #3)
\includegraphics[width=\textwidth]{#4}
\end{textblock*}
}
% set formatting
\setlength\parindent{0pt}
\setlength\parskip{0.6em plus 0.1em minus 0.1em}
% custom url command for properly formatting emails
\DeclareUrlCommand\Email{\urlstyle{same}}
% allow linebreak after every character
\expandafter\def\expandafter\UrlBreaks\expandafter{\UrlBreaks
\do\/\do\a\do\b\do\c\do\d\do\e\do\f\do\g\do\h\do\i\do\j\do\k
\do\l\do\m\do\n\do\o\do\p\do\q\do\r\do\s\do\t\do\u\do\v
\do\w\do\x\do\y\do\z
\do\A\do\B\do\C\do\D\do\E\do\F\do\G\do\H\do\I\do\J\do\K
\do\L\do\M\do\N\do\O\do\P\do\Q\do\R\do\S\do\T\do\U\do\V
\do\W\do\X\do\Y\do\Z}
\renewcommand{\arraystretch}{1}
\newcolumntype{L}{>{\hspace{0pt}}X}
\newcommand{\tickedbox}{
\makebox[0pt][l]{$\square$}\raisebox{.15ex}{\hspace{0.1em}$\checkmark$}
}
\newcommand{\checkbox}{
\makebox[0pt][l]{$\square$}
}
% algemeines Layout Formular-Elemente
\renewcommand*{\DefaultOptionsofRadio}{print,radio, radiosymbol=6, width=\baselineskip, bordercolor={black}, borderwidth=0pt}
\renewcommand*{\DefaultOptionsofText}{print,bordercolor={black}, backgroundcolor=white, borderwidth=0pt}
\renewcommand{\LayoutTextField}[2]{% label, field
\setbox0=\hbox{#1\unskip}\ifdim\wd0=0pt
\setbox1=\hbox{#2\unskip}\ifdim\ht1>3ex
% Multiline
\begin{tikzpicture}[every node/.style={inner sep=0,outer sep=0}]
\node[anchor=west] (TextFieldNode) at (0cm,0cm) {#2};
\draw [thick] (current bounding box.south west) rectangle (current bounding box.north east);
\end{tikzpicture}%
\else
% Inline field, lowered a little bit to be better integrated into the text
\raisebox{-3.2pt}{\begin{tikzpicture}[every node/.style={inner sep=0,outer sep=0}]
\node[anchor=west] (TextFieldNode) at (0cm,0cm) {#2};
\draw[thick] ([yshift=-0.3ex]TextFieldNode.south west) -- ([yshift=-0.3ex]TextFieldNode.south east);
\end{tikzpicture}}%
\fi
\else
% Field with label below it
\begin{tikzpicture}[every node/.style={inner sep=0,outer sep=0}]
\node[anchor=west] (TextFieldNode) at (0cm,2ex) {#2};
\draw[thick] ([yshift=-0.3ex]TextFieldNode.south west) -- ([yshift=-0.3ex]TextFieldNode.south east);
\node[anchor=west,font=\small] at (0cm,-0.9ex) {#1};
\end{tikzpicture}%
\fi
}
\newcommand{\radiosize}{0.33cm}
\newcommand{\yesnoticks}[1]{%
\raisebox{-3.2pt}{\begin{tikzpicture}[every node/.style={inner sep=0,outer sep=0}]
\node[anchor=west,style={inner sep=2px}] (FieldYes) at (0cm,0cm) {\ChoiceMenu[radio=true,name=#1,width=\radiosize,height=\radiosize]{}{=Yes}};
\node[anchor=west] (LabelYes) at ([xshift=0.7ex]FieldYes.east) {Ja};
\node[anchor=west,style={inner sep=2px}] (FieldNo) at ([xshift=1ex]LabelYes.east) {\ChoiceMenu[radio=true,name=#1,width=\radiosize,height=\radiosize]{}{=No}};
\node[anchor=west] (LabelNo) at ([xshift=0.7ex]FieldNo.east) {Nein};
\draw [thick] ([xshift=-(\radiosize+0.15cm),yshift=-(\radiosize+0.15cm)]FieldYes.north east) rectangle (FieldYes.north east);
\draw [thick] ([xshift=-(\radiosize+0.15cm),yshift=-(\radiosize+0.15cm)]FieldNo.north east) rectangle (FieldNo.north east);
\end{tikzpicture}}%
}
% Formularfeld, leer, editierbar
\newcommand{\field}[2]{\TextField[width=#2]{#1}}
% Formularfeld, vorbefüllt, editierbar
\newcommand{\fieldpf}[3]{\TextField[width=#2,value=#3]{#1}}
% Formularfeld, vorbefüllt, nicht editierbar
\newcommand{\fieldpfro}[3]{\TextField[width=#2,value=#3,readonly]{#1}}
% Formularfeld, in den Fließtext integriert
\newcommand{\fieldinline}[2]{\TextField[width=#2,name=#1]{}}
% Ja-Nein Antwort
\newcommand{\yesno}[2]{\pbox{0.8\textwidth}{\setstretch{1}#1}\hfill\yesnoticks{#2}}
% Dummy-Formularfeld: Sieht genauso aus, ist aber statisch, vorbefüllt, nicht editierbar.
\newcommand{\fieldd}[3]{% Label, width, prefilled text
\begin{tikzpicture}[every node/.style={inner sep=0,outer sep=0}]
% Draw the static field rectangle
\node[anchor=west] (DummyFieldNode) at (0cm,2ex) {\strut #3}; % Prefilled text
\draw[thick] ([xshift=0cm,yshift=-0.3ex]DummyFieldNode.south west) -- ([xshift=#2,yshift=-0.3ex]DummyFieldNode.south west);
% Label underneath
\node[anchor=west,font=\small] at (0cm,-1.2ex) {#1};
\end{tikzpicture}%
}
\begin{document}
% HEADER RIGHT
\picpos{4.5cm}{11.5cm}{0cm}{/app/jdav_web/static/general/img/dav_logo_hd.png}
\begin{textblock*}{5cm}(11.5cm, 2.3cm)
\begin{flushright}
\small
\noindent Deutscher Alpenverein e. V. \\
Sektion Heidelberg \\
Harbigweg 20 \\
69124 Heidelberg \\
Tel.: 06221 284076 \\
Fax: 06221 437338 \\
geschaeftsstelle@alpenverein-heidelberg.de \\
\end{flushright}
\end{textblock*}
% HEADLINE
\textbf{\LARGE Anmeldung und Einverständniserklärung}
\textbf{Wir melden unser Kind verbindlich zur Jugendgruppe an:}
\begin{Form}
\fieldpf{Vor- und Nachname des Kindes}{0.65\linewidth}{}
\fieldpf{Geburtsdatum}{0.3\linewidth}{} \hfill
\fieldpf{Gender}{0.3\linewidth}{} \hspace{0.35\linewidth}
\fieldpf{DAV-Mitglieds-Nr.}{0.3\linewidth}{114/00/} \hfill
\fieldpf{Telefon (mobil)*}{0.3\linewidth}{} \hspace{0.35\linewidth}
\fieldpf{Adresse}{0.65\linewidth}{}
\fieldpf{E-Mail}{0.65\linewidth}{}
{\small *wenn vorhanden, Kontaktdaten des Kindes, ansonsten einer Kontaktperson}
\textbf{Notfallkontakte:}
\begin{tabular*}{\linewidth}{@{\extracolsep{\fill}}lll}
Vollständiger Name & E-Mail & Telefon (mobil) \\
\midrule
\field{Name 1}{0.3\linewidth} & \field{E-Mail 1}{0.3\linewidth} & \field{Telefon 1}{0.3\linewidth} \\
\field{Name 2}{0.3\linewidth} & \field{E-Mail 2}{0.3\linewidth} & \field{Telefon 2}{0.3\linewidth} \\
\bottomrule
\end{tabular*}
\textbf{Medizinische Informationen:}
Gemäß den Teilnahmebedingungen verpflichten wir uns, vollständige
Angaben zu etwaigen gesundheitlichen Einschränkungen oder Erkrankungen unseres
Kindes zu machen:
\field{Allergien}{\linewidth}
\field{Medikamenten-Einnahmen}{\linewidth}
\field{Weitere Informationen zu Einschränkungen}{\linewidth}
\yesno{Unser Kind hat eine aktuelle Tetanus-Schutzimpfung}{tetanus}
\yesno{Unser Kind hat sichere Schwimmkenntnisse}{schwimmen}
\textbf{Einwilligung zu den Teilnahmebedingungen}
Mit unserer Unterschrift bestätigen wird, dass wir die beigelegten
Teilnahmebedingungen (Stand 06.12.2024) gelesen und verstanden haben. Diesen Bedingungen
stimmen wir zu. Wir versichern, jegliche Änderungen an oben angegebenen
Daten umgehend den Jugendleiter*innen mitzuteilen.
\yesno{Wir stimmen der Bildnutzung in den Sektionsmedien gemäß
Teilnahmebedingungen zu}{bildnutzung}
\yesno{Unser Kind darf sich selbstständig von der Gruppenstunde abmelden.}{abmelden}
\vspace{10pt}
\vfill
\field{Ort, Datum}{0.28\linewidth}{}\hfill
\fieldd{Unterschrift Kind}{0.28\linewidth}{}\hfill
\fieldd{Unterschrift des/der Erziehungsberechtigten}{0.4\linewidth}{}
Bitte diese Seite ausgefüllt und unterschrieben im Registrierungsformular hochladen.
\end{Form}
\newpage
\textbf{\large Informationen und Bedingungen zur Teilnahme an den
JDAV-Jugendgruppen der DAV-Sektion Heidelberg}
{\small Stand: 06.12.2024}
Liebes neues Jugendgruppenmitglied,
herzlich willkommen als neues aktives Mitglied unserer Sektionsjugend!
Das Zentrum unserer Jugendarbeit sind die wöchentlichen Gruppenstunden,
in denen wir in einer festen Gruppe gemeinsam Klettern oder Fahrrad fahren, Spiele spielen
und Spaß haben. Uns ist wichtig, dass du regelmäßig dabei bist und
deinen Jugendleiter*innen immer bescheid gibst, wenn du mal nicht kommen
kannst.
Zu unserer Jugendarbeit gehören aber auch regelmäßig Ausfahrten und
Veranstaltungen rund um die Kletterhalle. Ausfahrten können ein- oder
mehrtägige Ausflüge zum Klettern in der Region, aber auch in die
Mittelgebirge oder Alpen sein, wo wir gemeinsam Wandern, Bergsteigen,
Klettern... Veranstaltungen in der Kletterhalle können zum Beispiel
gemeinsame Übernachtungen in der Gruppe oder größere Aktivitäten mit der
ganzen Sektionsjugend sein, z.B. unsere jährliche Jugendvollversammlung.
Hier treffen wir basisdemokratisch Entscheidungen über die Zukunft der
Jugendarbeit und wählen Stellvertreter*innen, die die Jugendarbeit
organisieren. Auch du hast hier eine Stimme! Wir freuen uns, wenn du bei
möglichst vielen Aktivitäten dabei sein kannst.
Deine Jugendleiter*innen
\\[3mm]
\_\_
\\[3mm]
Liebe Eltern,
Bitte lesen Sie diese Teilnahmebedingungen für unsere Jugendarbeit genau
und bestätigen Ihr Einverständnis mit Ihrer Unterschrift auf unserer
Einverständniserklärung.
\textbf{Durchgeführte Aktivitäten}
In unserer Jugendgruppe bieten wir im weitesten Sinne verschiedene
Aktivitäten und Aktionen an, zu denen wir die Jugendlichen vorher
entsprechend einweisen, dazu gehören u.a.:
\begin{itemize}
\setlength\itemsep{1pt}
\item
Jugendgruppenstunden mit Spielen, Übungen usw.
\item
Outdoorspiele in verschiedenen Formen
\item
Klettern an künstlichen Anlagen und natürlichen Felsen
\item
Wanderungen, Bachwanderungen oder Klettersteigbegehungen
\item Fahrradtouren z.B. mit dem Mountainbike
\item
natursportliche Aktivität mit den dort typischen Bedingungen und
Risiken
\item
Gruppenübergreifende Ausfahrten und Veranstaltungen der JDAV
Heidelberg.
\end{itemize}
Während aller Aktivitäten werden die Jugendlichen von unseren
Jugendleiter*innen, die eine entsprechende Qualifizierung (DAV
Jugendleiterausbildung / DAV Fachübungsleiter usw.) vorweisen können,
betreut und beaufsichtigt.
Um teilnehmen zu können, müssen die Jugendlichen Mitglied in der Sektion
Heidelberg des DAV sein und eine von den Erziehungsberechtigten
unterschriebene Einverständniserklärung abgeben. Wir erwarten eine
möglichst regelmäßige Teilnahme an den Gruppenstunden. Bei wiederholt
unentschuldigtem Fehlen (ab 3 mal) kann es zum Ausschluss aus der Gruppe
kommen.
Mit Ihrer Unterschrift wird außerdem die aktuelle Fassung der
\textbf{Benutzer- und Hallenordnung der Kletterhalle} der Sektion
Heidelberg (Harbigweg 20, 69124 Heidelberg), anerkannt. Die Benutzer-
und Hallenordnung hängt ständig in der Kletterhalle aus. Den Anweisungen
des Personals ist Folge zu leisten. Die Gruppenstunden finden
gelegentlich auch \textbf{außerhalb des Vereinszentrums} im Harbigweg
20, 69124 Heidelberg, statt. Mit Ihrer Unterschrift wird auch
zugestimmt, dass diese Gruppenstunden zu anderen Zeiten und an anderen
Orten durchgeführt werden können.
\textbf{Haftung}
Mit Ihrer Unterschrift erklären Sie sich damit einverstanden, dass Ihr
Kind an den oben genannten
Aktivitäten im weitesten Sinne teilnehmen darf. Sie sind sich bewusst,
dass natursportliche und vor allem klettersportliche Aktivitäten mit
Risiken verbunden sind, die sich nicht vollständig ausschließen lassen.
Sie erkennen damit an, dass die Sektion Heidelberg und ihre
verantwortlichen ehrenamtlichen
Jugendleiter*innen - soweit gesetzlich zulässig - von jeglicher Haftung
sowohl im Grunde als auch
der Höhe nach freigestellt werden, die über den im Rahmen der
Mitgliedschaft im DAV,
sowie für die ehrenamtliche Tätigkeit bestehenden Versicherungsschutz
hinausgehen. Dies
gilt nicht für die Verursachung von Unfällen durch Vorsatz oder grobe
Fahrlässigkeit.
Weitere Informationen zum DAV und dessen Jugendarbeit aber auch z.B. zu
den
Versicherungsbedingungen oder aktuellen Informationen finden Sie unter
\href{http://www.alpenverein.de}{www.alpenverein.de}
\textbf{Weitere Informationen zu Ihrem Kind}
Sie verpflichten sich, die Jugendleiter*innen insbesondere über folgende
persönliche Einschränkungen und zu informieren (über die angehängte
Einverständniserklärung):
\begin{itemize}
\setlength\itemsep{1pt}
\item
relevante allergische Reaktionen
\item
relevante asthmatische Erkrankungen oder Beschwerden
\item
relevante Herzkreislauferkrankungen oder Beschwerden
\item
Diabetes
\item
Epilepsie oder relevante Nervenerkrankungen
\item
relevante orthopädische Probleme (Bandscheibenvorfall, Verrenkungen,
Knochenbrüche\ldots)
\item
relevante Infektionskrankheiten
\item
ADHS oder sonstige Aufmerksamkeitsstörungen
\item
Einnahme von dringend notwendigen Medikamenten
\item
relevante Suchterkrankungen, psychische Erkrankungen oder
Einschränkungen
\item
sonstige relevante Beeinträchtigungen oder Erkrankungen (Bspw.
Inkontinenz)
\end{itemize}
Die JDAV weist darauf hin, dass durchgeführte Aktivitäten auch im Freien
in Risikogebieten für
von Zecken übertragene FSME oder Borreliose stattfinden können
(Rhein-Neckar Kreis gehört zu den Risikogebieten). Eine Impfung wird
empfohlen.
Ergeben sich Veränderungen bei den angegebenen Informationen, dann
müssen die Jugendleiter*innen umgehend darüber informiert werden.
\textbf{Datenschutz}
Sie sind damit einverstanden, dass die JDAV Heidelberg die von Ihnen
angegebenen Daten elektronisch erfasst, verarbeitet und speichert. Diese
Datenverarbeitung erfolgt in Rechenzentren in der Schweiz oder Staaten
des Europäischen Wirtschaftsraums (EWR). Nach einer Beendigung der
Mitgliedschaft werden Ihre personenbezogenen Daten gelöscht, soweit sie
nicht, entsprechend den steuerrechtlichen Vorgaben, aufbewahrt werden
müssen. Die Datenverarbeitung erfolgt auf Grundlage des Art. 6 Abs. 1 S.
1 lit. b DSGVO. Die jeweils aktuelle Datenschutzerklärung kann jederzeit
auf der Website unter \href{https://www.jdav-hd.de/datenschutz}{www.jdav-hd.de/datenschutz} abgerufen
werden.
Die Jugendleiter*innen sind im Rahmen ihrer Tätigkeiten über
Sektions-E-Mailadressen nach dem Schema
vorname.nachname@alpenverein-heidelberg.de erreichbar, die Jugendleiter*innen einer Gruppe über
Adressen nach dem Schema leitung.gruppenname@jdav-hd.de. Bitte nutzen Sie
für die Kontaktaufnahme vorrangig diese E-Mailadressen.
Zur Weitergabe der Daten im Rahmen einer Mitgliedschaft im Alpenverein
Heidelberg beachten Sie bitte auch die Datenschutzerklärung der Sektion
unter \href{https://www.alpenverein-heidelberg.de/datenschutz}{www.alpenverein-heidelberg.de/datenschutz}.
\textbf{Abbildungen in Sektionsmedien:}
Selbstverständlich gehören auf eine lebendig gestaltete Homepage sowie
andere Medien der Sektion (Aushänge im Vereinsheim, Sektionsnachrichten,
etc.) auch Berichte und Fotos von Veranstaltungen der Jugend, bei denen
vielleicht auch Ihr Kind dabei ist. Da gemäß § 22 KunstUrhG, Bilder
jedoch nur mit Einwilligung des Abgebildeten bzw. seiner gesetzlichen
Vertreter verbreitet oder öffentlich zur Schau gestellt werden dürfen,
bitten wir Sie um Erlaubnis. Mit Ihrer Einverständniserklärung
erleichtern Sie uns wesentlich die Arbeit und wir können so unseren
lebendigen Verein gut nach außen darstellen.
Wenn sie in der Einverständniserklärung ihre Einwilligung geben,
erklären Sie sich damit einverstanden, dass von den Jugendleiter*innen
ausgewählte Fotos und Aufnahmen, auf denen Ihr Kind zu sehen ist, mit
den anderen Kindern geteilt werden, auf der Homepage, sowie im
Sektionsheft der DAV-Sektion Heidelberg und allen anderen Vereinsmedien
erscheinen und veröffentlicht werden dürfen. Diese Einwilligung kann
jederzeit widerrufen werden.
Please provide a customized registration form as a LaTeX template in the config directory as
described in the documentation.
\end{document}

@ -0,0 +1,3 @@
{% load i18n %}
{% blocktrans %}This is only a placeholder. Please override this placeholder with a custom text as described in the documentation.{% endblocktrans %}

@ -0,0 +1,3 @@
{% load i18n %}
{% blocktrans %}This is only a placeholder. Please override this placeholder with a custom text as described in the documentation.{% endblocktrans %}

@ -1,13 +1,7 @@
{% extends "startpage/base_subsite.html" %}
{% block content %}
<h1>Gruppen</h1>
<p>
Die JDAV Heidelberg bietet verschiedene Gruppen für die Jugend bis 27 Jahre an. Die meisten Gruppen klettern regelmäßig in der Halle und Draußen, aber auch allgemeine Ausfahrten, Wintersport, Hochtouren und Mountenbiken gehöhren zu den Aktivitäten. Nachfolgend findest du eine Übersicht aller Gruppen. Die Teilnahme an den Gruppen erfordert generell eine vorherigen Anmledung, auch wenn Zeit und Ort bekannt sein sollte bitten wir dich nicht einfach dort zu erscheinen.
</p>
<p>Zur Zeit bieten wir die Folgenden Gruppen an:</p>
{% include "startpage/group_introduction.html" %}
<ul>
{% for group in groups %}
<li>

@ -1,44 +1,7 @@
{% extends "startpage/base_subsite.html" %}
{% block content %}
<h1>FAQ</h1>
<h3>Ab welchem Alter kann ich mein Kind zu den Jugendgruppen anmelden?</h3>
<p>Unsere Jugendgruppen sind ab einem Alter von 9 Jahren. Sie können ihr Kind gerne bereits früher auf die Liste setzen, um die Wartezeit zu verkürzen, sobald ihr Kind das entsprechende Alter erreicht hat.</p>
<h3>Wie lange sind die Wartezeiten?</h3>
<p>
Leider haben wir eine sehr große Nachfrage, der wir mit unseren Jugendleiter*innen und unseren Gruppenplätzen nicht nachkommen können. Die Wartezeiten sind sehr unterscheidlich und hängen vom Alter und den verfügbaren Gruppenplätzen ab. Die Wartezeiten kann zwischen einigen Wochen und mehr als einem Jahr liegen.
</p>
<h3>Muss mein Kind DAV Mitglied sein?</h3>
<p>
Ja. Sobald ihr Kind regelmäßig an den Gruppenstunden teilnimmt, muss es Mitglied im DAV Heidelberg sein. Für die Aufnahme in die Warteliste ist keine Mitgliedschaft notwenig.
</p>
<h3>Was kostet die Teilnahme an den Jugendgruppen?</h3>
<p>
Die Jugendgruppen an sich sind kostenlos, allerdings ist eine Vereinsmitgliedschaft und der Halleneintritt nötig. Der Beitrag setzt sich aus zwei Teilen zusammen:
</p>
<p>
<ul>
<li>Mitgliedschaft im DAV Heidelberg
(Zu den <a href="https://www.alpenverein-heidelberg.de/index.php?inhalt=mitglied">Preisen</a>)
</li>
<li>Halbjahreskarte für den Kletterhalleneintritt während der Gruppenstunden: 25 Euro (Bei zwei Gruppenstunden pro Woche 30 Euro)</li>
</ul>
</p>
<h3>Benötigt mein Kind eine Ausrüstung?</h3>
<p>
Während der Gruppenstunden können die Kinder das Material (Klettergurt, Schuhe, Sicherungsgerät, … ) ohne zusätzliche Kosten von der Jugend des DAV Heidelberg ausleihen.
</p>
{% include "startpage/faq_content.html" %}
{% endblock %}

@ -1,9 +1,11 @@
{% load common %}
<div class="header">
<span class="image">
</span>
<div class="header-extra">
<h5 style="text-align: center;">Jugend des deutschen Alpenvereins</h5>
<h6 style="text-align: center;">Sektion Heidelberg</h6>
<h6 style="text-align: center;">Sektion {% settings_value 'SEKTION' %}</h6>
</div>
</div>

@ -2,373 +2,7 @@
{% load static %}
{% block content %}
<a name="impressum"></a>
<h1>Impressum</h1>
<h3>Anbieter</h3>
<p>
Deutscher Alpenverein Sektion Heidelberg 1869 e.V.<br>
Jugendreferat<br>
Harbigweg 20<br>
69124 Heidelberg, Deutschland<br>
Tel.: +49 (62 21) 48 40 76<br>
Fax: +49 (62 21) 43 73 38<br>
E-Mail: <a href="mailto:geschaeftsstelle@alpenverein-heidelberg.de">geschaeftsstelle@alpenverein-heidelberg.de</a><br>
URL: <a href="https://www.alpenverein-heidelberg.de">www.alpenverein-heidelberg.de</a><br>
</p>
<h3>Vertretungsberechtigter</h3>
<p>
Der Deutsche Alpenverein Sektion Heidelberg 1869 wird durch den ersten Vorsitzenden, den zweiten Vorsitzenden und den Schatzmeister vertreten:
</p>
<p>
Dr. Ulf Gieseler (1. Vorsitzender), Paul Jonas (2. Vorsitzender), Marc von der Heydt (Schatzmeister)
(gemäß § 14 Satz der Satzung des Deutschen Alpenvereins Sektion Heidelberg 1869)
</p>
<h3>Vereinsregister</h3>
<p>
Der Deutsche Alpenverein Sektion Heidelberg 1869 e.V. ist im Vereinsregister des Amtsgerichts Heidelberg unter der Registernummer VR 486 eingetragen.
</p>
<h3>Jugendreferat</h3>
<p>
Leitung: Eva Engelmann und Robert Scheffler<br>
E-Mail: jugend@alpenverein-heidelberg.de<br>
URL: <a href="https://www.jdav-hd.de">www.jdav-hd.de</a> ; <a href="https://www.jdav-heidelberg.de">www.jdav-heidelberg.de</a>
</p>
<p>
<a href="http://www.disclaimer.de/disclaimer.htm">Haftungsausschluss</a>; <a href="http://www.disclaimer.de/disclaimer.htm#2">Disclaimer</a>
</p>
<a name="datenschutz"></a>
<h1>Datenschutzerklärung</h1>
<h3>1. Wer für Ihre personenbezogenen Daten verantwortlich ist:</h3>
<p>
Diese Datenschutz-Information gilt für die Datenverarbeitung durch:
</p>
<p>
Verantwortlicher: Deutscher Alpenverein Sektion Heidelberg 1869 e.V.<br>
Harbigweg 20, 69124 Heidelberg<br>
Email: <a href="mailto:geschaeftsstelle@alpenverein-heidelberg.de">geschaeftsstelle@alpenverein-heidelberg.de</a><br>
Telefon: +49 6221 484076
</p>
<p>
Zur Auftragsverarbeitung für die jdav Heidelberg ist die Firma Contabo GmbH Aschauer Str. 32a 81549 München beauftragt.
Die Datenverarbeitung erfolgt in Rechenzentren in der Schweiz oder Staaten des Europäischen Wirtschaftsraums (EWR).
</p>
<h3>
2. Welche personenbezogenen Daten wir von Ihnen erheben und zu welchem Zweck das geschieht:
</h3>
<p>
Beim Aufrufen unserer Website <a href="https://jdav-hd.de">jdav-hd.de</a> werden durch den auf Ihrem Endgerät zum Einsatz kommenden Browser automatisch Informationen an den Server unserer Website gesendet. Diese Informationen werden temporär in einem sog. Logfile gespeichert. Folgende Informationen werden dabei ohne Ihr Zutun erfasst und bis zur automatischen Löschung gespeichert:
</p>
<p>
<ul>
<li>IP-Adresse des anfragenden Rechners,</li>
<li>Datum und Uhrzeit des Zugriffs,</li>
<li>Name und URL der abgerufenen Datei,</li>
<li>Website, von der aus der Zugriff erfolgt (Referrer-URL),</li>
<li>verwendeter Browser und ggfs. das Betriebssystem Ihres Rechners sowie der Name Ihres Access-Providers.</li>
</ul>
</p>
<p>
Die genannten Daten werden durch uns zu folgenden Zwecken verarbeitet:
</p>
<ul>
<li>Gewährleistung eines reibungslosen Verbindungsaufbaus der Website,</li>
<li>Gewährleistung einer komfortablen Nutzung unserer Website,</li>
<li>Auswertung der Systemsicherheit und -stabilität sowie</li>
<li>zu weiteren administrativen Zwecken.</li>
</ul>
<p>
Die Rechtsgrundlage für die Datenverarbeitung ist Art. 6 Abs. 1 S. 1 lit. f DSGVO. Unser berechtigtes Interesse folgt aus oben aufgelisteten Zwecken zur Datenerhebung. In keinem Fall verwenden wir die erhobenen Daten zu dem Zweck, Rückschlüsse auf Ihre Person zu ziehen.
</p>
<p>
Darüber hinaus setzen wir beim Besuch unserer Website Cookies ein. Nähere Erläuterungen dazu erhalten Sie unter den Ziff. 4 dieser Datenschutzerklärung.
</p>
<h3>3. Welche Daten wir zu welchem Zweck weitergeben:</h3>
<p>
Eine Übermittlung Ihrer persönlichen Daten an Dritte zu anderen als den im Folgenden aufgeführten Zwecken findet nicht statt.
</p>
<b>a) Weitergabe von Daten, die wir im Rahmen Ihres Besuchs unserer Website erheben:</b>
<p>
Wir geben Ihre persönlichen Daten nur an Dritte weiter, wenn:
</p>
<ul>
<li>Sie nach Art. 6 Abs. 1 S. 1 lit. a DSGVO Ihre ausdrückliche Einwilligung dazu erteilt haben,</li>
<li>Sie externe Komponenten auf unserer Website aufrufen, nach Art. 6 Abs. 1 S. 1 lit. f zur Darstellung der externen Komponenten der Anbieter google.com (Google Inc, 1600 Amphitheatre Parkway Mountain View, CA 94043, USA), jquery.com (JSFoundation, Inc., 1 Letterman Drive San Francisco, CA 94129, USA), openlayers.org, getmdl.io (google), (Google Inc, 1600 Amphitheatre Parkway Mountain View, CA 94043, USA) cdn.polyfill.io, openstreetmap.org sowie opentopomap.org,</li>
<li>die Weiterleitung nach Art. 6 Abs. 1 S. 1 lit. f DSGVO zur Geltendmachung, Ausübung oder Verteidigung von Rechtsansprüchen erforderlich ist und kein Grund zur Annahme besteht, dass Sie ein überwiegendes schutzwürdiges Interesse an der Nichtweitergabe Ihrer Daten haben,</li>
<li>für den Fall, dass für die Weitergabe nach Art. 6 Abs. 1 S. 1 lit. c DSGVO eine gesetzliche Verpflichtung besteht, sowie</li>
<li>dies gesetzlich zulässig und nach Art. 6 Abs. 1 S. 1 lit. b DSGVO für die Abwicklung von Vertragsverhältnissen mit Ihnen erforderlich ist.</li>
</ul>
<b>b) Weitergabe Ihrer Daten im Rahmen unserer Vereinstätigkeit</b>
<p>
Zur Weitergabe der Daten im Rahmen einer Mitgliedschaft im Alpenverein Heidelberg beachten Sie bitte auch die Datenschutzerklärung der Sektion unter <a href="https://www.alpenverein-heidelberg.de/datenschutz">www.alpenverein-heidelberg.de/datenschutz</a>.
</p>
<p>
Die jdav Heidelberg hat die Firma Contabo GmbH Aschauer Str. 32a 81549 München beauftragt die Daten ihrer Mitglieder zu
verwalten. Diese Datenverarbeitung erfolgt in Rechenzentren in der Schweiz oder Staaten des Europäischen Wirtschaftsraums (EWR).
</p>
<p>
Die von Ihnen in Ihrer Beitrittserklärung angegebenen Daten über Ihre persönlichen und sachlichen Verhältnisse (sogenannte personenbezogene Daten) werden gleichermaßen auf Datenverarbeitungs-Systemen der Sektion, der Sie beitreten, wie auch des Bundesverbandes des Deutschen Alpenvereins (DAV) gespeichert und für Verwaltungszwecke der Sektion, bzw. des Bundesverbandes verarbeitet und genutzt werden. Verantwortliche Stelle im Sinne des § 3 (7) BDSG bzw. Art. 4 lit 7. DSGVO ist dabei die Sektion, der Sie beitreten.
</p>
<p>
Eine Übermittlung von Teilen dieser Daten an die jeweiligen Landes- und Sportfachverbände findet nur im Rahmen der in den Satzungen der Landes- und Sportfachverbände festgelegten Zwecke statt. Diese Datenübermittlungen sind notwendig zum Zwecke der Organisation eines Spiel- bzw. Wettkampfbetriebes und zum Zwecke der Einwerbung von öffentlichen Fördermitteln.
</p>
<p>
Wir sichern Ihnen zu, Ihre personenbezogenen Daten vertraulich zu behandeln und nicht an Stellen außerhalb des DAV, weder außerhalb der Sektion, noch außerhalb des Bundesverbandes und der jeweiligen Landes- und Sportfachverbände weiterzugeben. Sie können jederzeit schriftlich Auskunft über die bezüglich Ihrer Person gespeicherten Daten erhalten und Korrektur verlangen, soweit die bei der Sektion und der Bundesgeschäftsstelle gespeicherten Daten unrichtig sind. Sollten die gespeicherten Daten für die Abwicklung der Geschäftsprozesse der Sektion, bzw. des Bundesverbandes nicht erforderlich sein, so können Sie auch eine Sperrung, gegebenenfalls auch eine Löschung Ihrer personenbezogenen Daten verlangen.
</p>
<p>
Nach einer Beendigung der Mitgliedschaft werden Ihre personenbezogenen Daten gelöscht, soweit sie nicht, entsprechend der steuerrechtlichen Vorgaben, aufbewahrt werden müssen.
</p>
<p>
Eine Nutzung Ihrer personenbezogenen Daten für Werbezwecke findet weder durch die Sektion, den Bundesverband, Kooperationspartner des Bundesverbandes des Deutschen Alpenvereins noch durch die jeweiligen Landes- und Sportfachverbände statt.
</p>
<p>
Die Datenverarbeitung erfolgt auf Grundlage des Art. 6 Abs. 1 S. 1 lit. b DSGVO.
</p>
<h3>4. Wir setzen Cookies ein:</h3>
<p>
Wir setzen auf unserer Seite Cookies ein. Hierbei handelt es sich um kleine Dateien, die Ihr Browser automatisch erstellt und die auf Ihrem Endgerät (Laptop, Tablet, Smartphone o.ä.) gespeichert werden, wenn Sie unsere Seite besuchen. Cookies richten auf Ihrem Endgerät keinen Schaden an, enthalten keine Viren, Trojaner oder sonstige Schadsoftware.
</p>
<p>
In dem Cookie werden Informationen abgelegt, die sich jeweils im Zusammenhang mit dem spezifisch eingesetzten Endgerät ergeben. Dies bedeutet jedoch nicht, dass wir dadurch unmittelbar Kenntnis von Ihrer Identität erhalten.
</p>
<p>
Der Einsatz von Cookies dient einerseits dazu, die Nutzung unseres Angebots für Sie angenehmer zu gestalten. So setzen wir sogenannte Session-Cookies ein, um zu erkennen, dass Sie einzelne Seiten unserer Website bereits besucht haben. Diese werden nach Verlassen unserer Seite automatisch gelöscht.
</p>
<p>
Darüber hinaus setzen wir ebenfalls zur Optimierung der Benutzerfreundlichkeit temporäre Cookies ein, die für einen bestimmten festgelegten Zeitraum auf Ihrem Endgerät gespeichert werden. Besuchen Sie unsere Seite erneut, um unsere Dienste in Anspruch zu nehmen, wird automatisch erkannt, dass Sie bereits bei uns waren und welche Eingaben und Einstellungen Sie getätigt haben, um diese nicht noch einmal eingeben zu müssen.
</p>
<p>
Die durch Cookies verarbeiteten Daten sind für die genannten Zwecke zur Wahrung unserer berechtigten Interessen sowie der Dritter nach Art. 6 Abs. 1 S. 1 lit. f DSGVO erforderlich.
</p>
<p>
Die meisten Browser akzeptieren Cookies automatisch. Sie können Ihren Browser jedoch so konfigurieren, dass keine Cookies auf Ihrem Computer gespeichert werden oder stets ein Hinweis erscheint, bevor ein neuer Cookie angelegt wird. Die vollständige Deaktivierung von Cookies kann jedoch dazu führen, dass Sie nicht alle Funktionen unserer Website nutzen können.
</p>
<h3>5. Das geschieht im Falle einer elektronischen Kontaktaufnahme:</h3>
<p>
<b>a) Beschreibung und Umfang der Datenverarbeitung</b>
</p>
<p>
Auf unserer Internetseite sind Kontaktformulare vorhanden, welche für die elektronische Kontaktaufnahme genutzt werden können.
Nimmt ein Nutzer diese Möglichkeit wahr, so werden die in der Eingabemaske eingegeben Daten an uns übermittelt und gespeichert.
Für diese Datenverarbeitung ist die Firma Contabo GmbH Aschauer Str. 32a 81549 München beauftragt.
Diese Daten sind:
</p>
<p>
Name, Email-Adresse, Betreff und Inhalt Ihrer Nachricht.
</p>
<p>
Im Zeitpunkt der Absendung der Nachricht werden zudem folgende Daten gespeichert
</p>
<p>
<ul>
<li>Ihre IP-Adresse,</li>
<li>Datum und Uhrzeit der Registrierung</li>
</ul>
</p>
<p>
Für die Verarbeitung der Daten wird im Rahmen des Absendevorgangs Ihre Einwilligung eingeholt und auf diese Datenschutzerklärung verwiesen.
</p>
<p>
Alternativ ist eine Kontaktaufnahme über die bereitgestellte Email-Adresse möglich. In diesem Fall werden Ihre mit der E-Mail übermittelten personenbezogenen Daten gespeichert.
</p>
<p>
Es erfolgt in diesem Zusammenhang keine Weitergabe der Daten an Dritte. Die Daten werden ausschließlich für die Verarbeitung der Konversation verwendet.
</p>
<p>
Falls im Formular angegeben erfolgt eine Weiterleitung aller eingegeben Daten an die private E-Mail-Adresse der verantwortlichen Jugendleiter. In diesem Fall kann je nach E-Mail Provider des Jugendleiters eine Weitergabe der Daten an Dritte nicht ausgeschlossen werden.
</p>
<p><b>b) Rechtsgrundlage für die Datenverarbeitung</b></p>
<p>
Rechtsgrundlage für die Verarbeitung der Daten ist bei Vorliegen Ihrer Einwilligung Art. 6 Abs. 1 lit. a DSGVO.
</p>
<p>
Rechtsgrundlage für die Verarbeitung der Daten, die im Zuge einer Übersendung einer Email übermittelt werden, ist Art. 6 Abs. 1 lit. f DSGVO. Zielt der Email-Kontakt auf den Abschluss eines Vertrages, so ist zusätzliche Rechtsgrundlage für die Verarbeitung Art. 6 Abs. 1 lit. b DSGVO.
</p>
<p><b>c) Zweck der Datenverarbeitung</b></p>
<p>
Die Verarbeitung der personenbezogenen Daten aus der Eingabemaske dient uns allein zur Bearbeitung der Kontaktaufnahme. Im Falle einer Kontaktaufnahme per E-Mail liegt hierin auch das erforderliche berechtigte Interesse an der Verarbeitung der Daten.
</p>
<p>
Die sonstigen während des Absendevorgangs verarbeiteten personenbezogenen Daten dienen dazu, einen Missbrauch des Kontaktformulars zu verhindern und die Sicherheit unserer informationstechnischen Systeme sicherzustellen.
</p>
<p><b>d) Dauer der Speicherung</b></p>
<p>
Die Daten werden gelöscht, sobald sie für die Erreichung des Zweckes ihrer Erhebung nicht mehr erforderlich sind. Für die personenbezogenen Daten aus der Eingabemaske des Kontaktformulars und diejenigen, die per E-Mail übersandt wurden, ist dies dann der Fall, wenn die jeweilige Konversation mit dem Nutzer beendet ist. Beendet ist die Konversation dann, wenn sich aus den Umständen entnehmen lässt, dass der betroffene Sachverhalt abschließend geklärt ist.
</p>
<p>
Die während des Absendevorgangs zusätzlich erhobenen personenbezogenen Daten werden spätestens nach einer Frist von sieben Tagen gelöscht.
</p>
<h3>6. Das geschieht, wenn Sie Online-Anmeldeformulare nutzen:</h3>
<p>
Auf unserer Internetseite sind Anmeldeformulare vorhanden, welches für die elektronische Anmeldung zu Jugendgruppen, Kursen und Veranstaltungen unseres Vereins genutzt werden kann. Nimmt ein Nutzer diese Möglichkeit wahr, so werden die in der Eingabemaske eingegeben Daten an uns übermittelt und gespeichert.
</p>
<p>
Name, Email-Adresse, Telefonnummer, gewählter Kurs, Informationen zu DAV-Mitgliedschaft, Mitgliedsnummer, Alter bzw. Geburtsdatum, Adresse, Informationen zur Verfügbarkeit für Jugendgruppen ggfs. Informationen zur Lawinenausbildung, allfällig übermittelte Bemerkungen.
</p>
<p>
Im Zeitpunkt der Absendung der Nachricht werden zudem folgende Daten gespeichert:
</p>
<p>
<ul>
<li>Ihre IP-Adresse,</li>
<li>Datum und Uhrzeit der Registrierung</li>
</ul>
</p>
<p>
Für die Verarbeitung der Daten wird im Rahmen des Absendevorgangs Ihre Einwilligung eingeholt und auf diese Datenschutzerklärung verwiesen.
</p>
<p>
Die gespeicherten Daten werden spätestens ein Jahr nach Durchführung der Veranstaltung gelöscht, sofern nicht steuerliche Vorschriften eine längere Speicherdauer vorgeben. Daten auf der unserer Warteliste für Jugendgruppen werden ohne Frist gespeichert und auf Nachfrage bei <a href="mailto:anmeldung.jdav@alpenverein-heidelberg.de">anmeldung.jdav@alpenverein-heidelberg.de</a> gelöscht werden.
</p>
<h3>7. Das geschieht, wenn Sie Downloads vornehmen:</h3>
<p>
Auf unserer Internetseite sind Download-Angebote eingestellt. Nimmt ein Nutzer einen Download vor, so werden Daten an uns übermittelt und gespeichert. Diese Daten sind:
</p>
<p>
<ul>
<li>Ihre IP-Adresse,</li>
<li>Datum und Uhrzeit der Registrierung</li>
</ul>
</p>
<p>
Rechtsgrundlage für diese Speicherung ist Art. 6 Abs. 1 lit. f. DSGVO.
</p>
<p>
Die gespeicherten Daten werden mit Ende des Besuchs unserer Website gelöscht.
</p>
<h3>8. Ihre Betroffenenrechte:</h3>
<p>
Sie haben das Recht:
</p>
<p>
<ul>
<li>
gemäß Art. 15 DSGVO Auskunft über Ihre von uns verarbeiteten Daten zu erlangen. Insbesondere können Sie Auskunft über die Verarbeitungszwecke, die Kategorie der personenbezogenen Daten, die Kategorien von Empfängern, gegenüber denen Ihre Daten offengelegt wurden oder werden, die geplante Speicherdauer, das Bestehen eines Rechts auf Berichtigung, Löschung, Einschränkung der Verarbeitung oder Widerspruch, das Bestehen eines Beschwerderechts, die Herkunft ihrer Daten, sofern diese nicht bei uns erhoben wurden, sowie über das Bestehen einer automatisierten Entscheidungsfindung einschließlich Profiling und ggfs. aussagekräftigen Informationen zu deren Einzelheiten verlangen;
</li>
<li>
gemäß Art. 16 DSGVO unverzüglich die Berichtigung unrichtiger oder Vervollständigung Ihrer bei uns gespeicherten personenbezogenen Daten zu verlangen;
</li>
<li>
gemäß Art. 17 DSGVO die Löschung Ihrer bei uns gespeicherten personenbezogenen Daten zu verlangen, soweit nicht die Verarbeitung zur Ausübung des Rechts auf freie Meinungsäußerung und Information, zur Erfüllung einer rechtlichen Verpflichtung, aus Gründen des öffentlichen Interesses oder zur Geltendmachung, Ausübung oder Verteidigung von Rechtsansprüchen erforderlich ist;
</li>
<li>
gemäß Art. 18 DSGVO die Einschränkung der Verarbeitung Ihrer personenbezogenen Daten zu verlangen, soweit die Richtigkeit der Daten von Ihnen bestritten wird, die Verarbeitung unrechtmäßig ist, Sie aber deren Löschung ablehnen und wir die Daten nicht mehr benötigen, Sie jedoch diese zur Geltendmachung, Ausübung oder Verteidigung von Rechtsansprüchen benötigen oder Sie gemäß Art. 21 DSGVO Widerspruch gegen die Verarbeitung eingelegt haben.
</li>
<li>
gemäß Art. 20 DSGVO Ihre personenbezogenen Daten, die Sie uns bereitgestellt haben, in einem strukturierten, gängigen und maschinenlesbaren Format zu erhalten oder die Übermittlung an einen anderen Verantwortlichen zu verlangen;
</li>
<li>
gemäß Art. 7 Abs. 3 DSGVO Ihre einmal erteilte Einwilligung jederzeit gegenüber uns zu widerrufen. Dies hat zur Folge, dass wir die Datenverarbeitung, die auf dieser Einwilligung beruhte, für die Zukunft nicht mehr fortführen dürfen und
</li>
<li>
gemäß Art. 77 DSGVO sich bei einer Aufsichtsbehörde zu beschweren. In der Regel können Sie sich hierfür an die Aufsichtsbehörde Ihres üblichen Aufenthaltsortes oder Arbeitsplatzes oder unseres Vereinssitzes wenden.
</li>
</ul>
</p>
<h3>9. Ihre Widerspruchsrechte:</h3>
<p>
Sofern Ihre personenbezogenen Daten auf Grundlage von berechtigten Interessen gemäß Art. 6 Abs. 1 S. 1 lit. f DSGVO verarbeitet werden, haben Sie das Recht, gemäß Art. 21 DSGVO Widerspruch gegen die Verarbeitung Ihrer personenbezogenen Daten einzulegen, soweit dafür Gründe vorliegen, die sich aus Ihrer besonderen Situation ergeben oder sich der Widerspruch gegen Direktwerbung richtet. Im letzten Fall haben Sie ein generelles Widerspruchsrecht, das ohne Angabe einer besonderen Situation von uns umgesetzt wird.
</p>
<p>
Möchten Sie von Ihrem Widerrufs- oder Widerspruchsrecht Gebrauch machen, genügt eine Email an
<a href="mailto:jugend@alpenverein-heidelberg.de">jugend@alpenverein-heidelberg.de</a> oder
<a href="mailto:geschaeftsstelle@alpenverein-heidelberg.de">geschaeftsstelle@alpenverein-heidelberg.de</a>.
</p>
<h3>10. Die Sicherheit Ihrer Daten:</h3>
<p>
Wir bedienen uns geeigneter technischer und organisatorischer Sicherheitsmaßnahmen, um Ihre Daten gegen zufällige oder vorsätzliche Manipulationen, teilweisen oder vollständigen Verlust, Zerstörung oder gegen den unbefugten Zugriff Dritter zu schützen. Unsere Sicherheitsmaßnahmen werden entsprechend der technologischen Entwicklung fortlaufend verbessert.
</p>
<h3>11. Aktualität und Änderung dieser Datenschutzerklärung</h3>
<p>
Diese Datenschutzerklärung ist aktuell gültig und hat den Stand November 2024.
</p>
<p>
Durch die Weiterentwicklung unserer Website und Angebote darüber oder aufgrund geänderter gesetzlicher beziehungsweise behördlicher Vorgaben kann es notwendig werden, diese Datenschutzerklärung zu ändern. Die jeweils aktuelle Datenschutzerklärung kann jederzeit auf der Website unter
<a href="https://www.jdav-hd.de/impressum#datenschutz">www.jdav-hd.de/impressum#datenschutz</a> von Ihnen aufgerufen und falls gewünscht ausgedruckt werden.
</p>
{% include "startpage/impressum_content.html" %}
{% endblock %}

@ -0,0 +1,3 @@
{% load i18n %}
{% blocktrans %}This is only a placeholder. Please override this placeholder with a custom text as described in the documentation.{% endblocktrans %}

@ -1,5 +1,5 @@
{% extends "startpage/base.html" %}
{% load static %}
{% load static common %}
{% block title %}
Startseite
@ -12,7 +12,7 @@ Startseite
<h2>Herzlich Willkommen</h2>
<p>
Herzlich Willkommen auf unserer Webseite. Hier finden Sie alle
Informationen über die jdav Heidelberg. Viel Spaß beim Surfen!
Informationen über die jdav {% settings_value 'SEKTION' %}. Viel Spaß beim Surfen!
</p>
</div>
<div class="column">

@ -9,7 +9,7 @@
<h2>Willkommen, {% firstof user.member.prename user.get_username %}!</h2>
</p>
<p>
Der KOMPASS ist dein Kompass in der Jugendarbeit der JDAV Heidelberg. Hier hast du Zugriff
Der KOMPASS ist dein Kompass in der Jugendarbeit der JDAV {% settings_value 'SEKTION' %}. Hier hast du Zugriff
auf deine Jugendgruppen, deine letzten
<a href="{% url 'admin:members_freizeit_changelist' %}">Ausfahrten</a> und deine
<a href="{% url 'admin:finance_statementunsubmitted_changelist' %}">Abrechnungen</a>.
@ -64,7 +64,7 @@ Hier siehst du alle von dir geleiteten Ausfahrten.
<h3>E-Mail Verteiler</h3>
<p>
Hier kannst du E-Mails an deine Gruppe oder an andere Menschen in der JDAV Heidelberg schicken.
Hier kannst du E-Mails an deine Gruppe oder an andere Menschen in der JDAV {% settings_value 'SEKTION' %} schicken.
</p>
<table>
<tr>

@ -1,11 +1,12 @@
{% extends "admin/app_index.html" %}
{% load common %}
{% block content %}
<div id="content-main">
<div class="app-mailer module current-app">
<h2>E-Mail Verteiler</h2>
<p>
Hier kannst du E-Mails an deine Gruppe oder an andere Menschen in der JDAV Heidelberg schicken.
Hier kannst du E-Mails an deine Gruppe oder an andere Menschen in der JDAV {% settings_value 'SEKTION' %} schicken.
</p>
<table>
<tr>

Loading…
Cancel
Save