add postcode and not bw reason

pull/121/head
Christian Merten 10 months ago
parent 4f0e9435e9
commit 582dd81465
Signed by: christian.merten
GPG Key ID: D953D69721B948B3

@ -1073,8 +1073,8 @@ class FreizeitAdmin(CommonAdminMixin, nested_admin.NestedModelAdmin):
view_on_site = False
fieldsets = (
(None, {
'fields': ('name', 'place', 'destination', 'date', 'end', 'description', 'groups', 'jugendleiter',
'approved_extra_youth_leader_count',
'fields': ('name', 'place', 'postcode', 'destination', 'date', 'end', 'description', 'groups',
'jugendleiter', 'approved_extra_youth_leader_count',
'tour_type', 'tour_approach', 'kilometers_traveled', 'activity', 'difficulty'),
'description': _('General information on your excursion. These are partly relevant for the amount of financial compensation (means of transport, travel distance, etc.).')
}),

@ -75,6 +75,13 @@ VBK_TEMPLATES = {
LJPProposal.LJP_EDUCATIONAL: 'members/LJP_VBK_3-2.xlsx',
}
NOT_BW_REASONS = {
LJPProposal.NOT_BW_CONTENT: 'aufgrund der Lehrgangsinhalte',
LJPProposal.NOT_BW_ROOMS: 'trägereigene Räumlichkeiten',
LJPProposal.NOT_BW_CLOSE_BORDER: 'Grenznähe',
LJPProposal.NOT_BW_ECONOMIC: 'wirtschaftliche Sparsamkeit',
}
def generate_ljp_vbk(excursion):
"""
@ -87,7 +94,7 @@ def generate_ljp_vbk(excursion):
workbook = openpyxl.load_workbook(path)
sheet = workbook.active
title = excursion.ljpproposal.title if hasattr(excursion, 'ljpproposal') else excursion.name
title = excursion.ljpproposal.title
sheet['I6'] = settings.SEKTION_IBAN
sheet['I8'] = settings.SEKTION_ACCOUNT_HOLDER
@ -104,7 +111,9 @@ def generate_ljp_vbk(excursion):
sheet['J19'] = f"{excursion.duration}"
sheet['L19'] = f"{excursion.ljp_participant_count}"
sheet['H19'] = excursion.get_ljp_activity_category()
sheet['M19'] = excursion.place
sheet['M19'] = f"{excursion.postcode}, {excursion.place}"
sheet['N19'] = f"{NOT_BW_REASONS[excursion.ljpproposal.not_bw_reason]}"\
if not excursion.ljpproposal.not_bw_reason is None else ""
if hasattr(excursion, 'statement'):
sheet['Q19'] = f"{excursion.statement.total_theoretic}"

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-02-02 18:06+0100\n"
"POT-Creation-Date: 2025-02-06 00:32+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"
@ -374,25 +374,10 @@ msgstr "Kriseninterventionsliste erstellen"
msgid "Generate overview"
msgstr "Hinweise für Jugendleiter erstellen"
#: members/admin.py members/templates/admin/generate_seminar_vbk.html
msgid "Generate LJP V-BK form"
msgstr "Erzeuge LJP V-BK Formular"
#: members/admin.py members/templates/admin/generate_seminar_report.html
msgid "Generate seminar report"
msgstr "Landesjugendplan Antrag erstellen"
#: members/admin.py members/tests.py
msgid "Please select a mode."
msgstr "Bitte wähle einen Modus aus."
#: members/admin.py members/tests.py
msgid ""
"Full mode is only available, if the seminar report section is filled out."
msgstr ""
"Der vollständiger Modus ist nur verfügbar, wenn der Seminarbericht "
"ausgefüllt ist. "
#: members/admin.py members/templates/admin/generate_sjr_application.html
msgid "Generate SJR application"
msgstr "SJR Antrag erstellen"
@ -1008,6 +993,34 @@ msgstr ""
"Wie wolltet ihr das Bildungsziel erreichen? Ist das Ziel so erreicht worden? "
"Wenn nicht, warum nicht? Wenn ja, was hat geholfen, das Ziel zu erreichen?"
#: members/models.py
msgid "Course content"
msgstr "aufgrund der Lehrgangsinhalte"
#: members/models.py
msgid "Available rooms"
msgstr "trägereigene Räumlichkeiten"
#: members/models.py
msgid "Close to the border"
msgstr "Grenznähe"
#: members/models.py
msgid "Economic reasons"
msgstr "wirtschaftliche Sparsamkeit"
#: members/models.py
msgid "Explanation if excursion not in Baden-Württemberg"
msgstr "Begründung, falls Kursort nicht in Baden-Württemberg"
#: members/models.py
msgid ""
"If the excursion takes place outside of Baden-Württemberg, please explain. "
"Otherwise, leave this empty."
msgstr ""
"Falls die Ausfahrt außerhalb von Baden-Württemberg stattfindet, gib bitte "
"eine Begründung an. Sonst lass dieses Feld frei."
#: members/models.py
msgid "LJP Proposal"
msgstr "Seminarbericht"
@ -1107,7 +1120,6 @@ msgstr "Fortbildungen"
#: members/templates/admin/demote_to_waiter.html
#: members/templates/admin/freizeit_finance_overview.html
#: members/templates/admin/generate_seminar_report.html
#: members/templates/admin/generate_seminar_vbk.html
#: members/templates/admin/generate_sjr_application.html
#: members/templates/admin/invite_as_user.html
#: members/templates/admin/invite_for_group.html
@ -1132,7 +1144,6 @@ msgstr "Zurück auf die Warteliste setzen"
#: members/templates/admin/demote_to_waiter.html
#: members/templates/admin/freizeit_finance_overview.html
#: members/templates/admin/generate_seminar_vbk.html
#: members/templates/admin/generate_sjr_application.html
#: members/templates/admin/invite_as_user.html
#: members/templates/admin/invite_for_group.html
@ -1425,35 +1436,6 @@ msgstr ""
"Eine Kosten- und Teilnehmendenübersicht. Dies ist nicht notwendig für den "
"eigentlichen Bericht, muss aber langfristig aufbewahrt werden."
#: members/templates/admin/generate_seminar_vbk.html
msgid ""
"Every LJP application needs a V-BK form containing the most important facts "
"about the seminar.\n"
"Here you can automatically generate such a form in Excel format."
msgstr ""
"Jeder LJP Antrag benötigt ein V-BK Formular, das die wichtigsten Randdaten "
"des Seminars enthält. Hier kannst du automatisch ein solches Formular im "
"Excel Format erstellen."
#: members/templates/admin/generate_seminar_vbk.html
msgid ""
"Your excursion currently has no cost-plan attached, hence the total costs "
"can't be automatically\n"
"calculated and added to the form."
msgstr ""
"Deine Ausfahrt hat zur Zeit keinen Kostenplan. Daher können die Gesamtkosten "
"nicht automatisch berechnet und dem Formular hinzugefügt werden."
#: members/templates/admin/generate_seminar_vbk.html
msgid ""
"Depending on the type of seminar, please select one of the two options below."
msgstr "Bitte wähle aus, um welche Art von Seminar es sich handelt."
#: members/templates/admin/generate_seminar_vbk.html
#: members/templates/admin/generate_sjr_application.html
msgid "Generate"
msgstr "Erstellen"
#: members/templates/admin/generate_sjr_application.html members/tests.py
msgid "Here you can generate an allowance application for the SJR."
msgstr "Hier kannst du einen SJR-Zuschussantrag erstellen."
@ -1471,6 +1453,10 @@ msgid ""
"Please send this application form to the jdav finance officer via email."
msgstr "Bitte sende diesen Antrag an den/die JDAV-Finanzwart*in per E-Mail."
#: members/templates/admin/generate_sjr_application.html
msgid "Generate"
msgstr "Erstellen"
#: members/templates/admin/invite_as_user.html
#, python-format
msgid ""
@ -2001,6 +1987,17 @@ msgstr ""
"vorausfüllen lassen und dem Antrag hinzufügen. Bitte fülle die verbleibenden "
"Felder im Formblatt selbst aus und unterschreibe das PDF."
#: members/tests.py
msgid "Please select a mode."
msgstr "Bitte wähle einen Modus aus."
#: members/tests.py
msgid ""
"Full mode is only available, if the seminar report section is filled out."
msgstr ""
"Der vollständiger Modus ist nur verfügbar, wenn der Seminarbericht "
"ausgefüllt ist. "
#: members/tests.py
msgid "This field is required."
msgstr ""
@ -2043,6 +2040,32 @@ msgstr "Optionale zusätzliche E-Mailadresse"
msgid "Invalid emergency contacts"
msgstr "Ungültige Notfallkontakte"
#~ msgid "Generate LJP V-BK form"
#~ msgstr "Erzeuge LJP V-BK Formular"
#~ msgid ""
#~ "Every LJP application needs a V-BK form containing the most important "
#~ "facts about the seminar.\n"
#~ "Here you can automatically generate such a form in Excel format."
#~ msgstr ""
#~ "Jeder LJP Antrag benötigt ein V-BK Formular, das die wichtigsten "
#~ "Randdaten des Seminars enthält. Hier kannst du automatisch ein solches "
#~ "Formular im Excel Format erstellen."
#~ msgid ""
#~ "Your excursion currently has no cost-plan attached, hence the total costs "
#~ "can't be automatically\n"
#~ "calculated and added to the form."
#~ msgstr ""
#~ "Deine Ausfahrt hat zur Zeit keinen Kostenplan. Daher können die "
#~ "Gesamtkosten nicht automatisch berechnet und dem Formular hinzugefügt "
#~ "werden."
#~ msgid ""
#~ "Depending on the type of seminar, please select one of the two options "
#~ "below."
#~ msgstr "Bitte wähle aus, um welche Art von Seminar es sich handelt."
#~ msgid "Full report"
#~ msgstr "Vollständiger Seminarbericht"

@ -0,0 +1,18 @@
# Generated by Django 4.0.1 on 2025-02-05 23:18
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('members', '0035_ljpproposal_redo'),
]
operations = [
migrations.AddField(
model_name='ljpproposal',
name='not_bw_reason',
field=models.IntegerField(blank=True, choices=[(1, 'Course content'), (2, 'Available rooms'), (3, 'Close to the border'), (4, 'Economic reasons')], default=None, help_text='If the excursion takes place outside of Baden-Württemberg, please explain. Otherwise, leave this empty.', null=True, verbose_name='Explanation if excursion not in Baden-Württemberg'),
),
]

@ -0,0 +1,23 @@
# Generated by Django 4.0.1 on 2025-02-05 23:29
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('members', '0036_ljpproposal_not_bw_reason'),
]
operations = [
migrations.AddField(
model_name='freizeit',
name='postal_code',
field=models.CharField(default='', max_length=30, verbose_name='Postal code'),
),
migrations.AlterField(
model_name='ljpproposal',
name='title',
field=models.CharField(blank=True, default='', help_text='Official title of your seminar, this can differ from the informal title. Use e.g. sports climbing course instead of climbing weekend for fun.', max_length=100, verbose_name='Title'),
),
]

@ -0,0 +1,22 @@
# Generated by Django 4.0.1 on 2025-02-05 23:31
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('members', '0037_freizeit_postal_code_alter_ljpproposal_title'),
]
operations = [
migrations.RemoveField(
model_name='freizeit',
name='postal_code',
),
migrations.AddField(
model_name='freizeit',
name='postcode',
field=models.CharField(default='', max_length=30, verbose_name='Postcode'),
),
]

@ -1058,6 +1058,7 @@ class Freizeit(CommonModel):
name = models.CharField(verbose_name=_('Activity'), default='',
max_length=50)
place = models.CharField(verbose_name=_('Place'), default='', max_length=50)
postcode = models.CharField(verbose_name=_('Postcode'), default='', max_length=30)
destination = models.CharField(verbose_name=_('Destination (optional)'),
default='', max_length=50, blank=True,
help_text=_('e.g. a peak'))
@ -1478,7 +1479,7 @@ class RegistrationPassword(models.Model):
class LJPProposal(CommonModel):
"""A proposal for LJP"""
title = models.CharField(verbose_name=_('Title'), max_length=30,
title = models.CharField(verbose_name=_('Title'), max_length=100,
blank=True, default='',
help_text=_('Official title of your seminar, this can differ from the informal title. Use e.g. sports climbing course instead of climbing weekend for fun.'))
@ -1506,6 +1507,20 @@ class LJPProposal(CommonModel):
help_text=_('How do you want to reach the learning goal? Has the goal been reached? If not, why not? If yes, what helped you to reach the goal?'),
blank=True, default='')
NOT_BW_CONTENT, NOT_BW_ROOMS, NOT_BW_CLOSE_BORDER, NOT_BW_ECONOMIC = 1, 2, 3, 4
NOT_BW_REASONS = [
(NOT_BW_CONTENT, _('Course content')),
(NOT_BW_ROOMS, _('Available rooms')),
(NOT_BW_CLOSE_BORDER, _('Close to the border')),
(NOT_BW_ECONOMIC, _('Economic reasons')),
]
not_bw_reason = models.IntegerField(verbose_name=_('Explanation if excursion not in Baden-Württemberg'),
choices=NOT_BW_REASONS,
default=None,
blank=True,
null=True,
help_text=_('If the excursion takes place outside of Baden-Württemberg, please explain. Otherwise, leave this empty.'))
excursion = models.OneToOneField(Freizeit,
verbose_name=_('Excursion'),
blank=True,

Loading…
Cancel
Save