diff --git a/input/forms.py b/input/forms.py index cdfa6ba..cd9e281 100755 --- a/input/forms.py +++ b/input/forms.py @@ -132,14 +132,14 @@ class BaseApplicationForm(FdbForm): - Ensures consistency across all application types. """ realname = CharField( - label="Realname", + label='Realname', required=True, - help_text="Bitte gib deinen Vor- und Nachnamen ein." + help_text='Bitte gib deinen Vor- und Nachnamen ein.' ) email = EmailField( - label="E-Mail-Adresse", + label='E-Mail-Adresse', required=True, - help_text="Bitte gib deine E-Mail-Adresse ein, damit dich
Wikimedia Deutschland bei Rückfragen oder für
die Zusage kontaktieren kann." + help_text='Bitte gib deine E-Mail-Adresse ein, damit dich
Wikimedia Deutschland bei Rückfragen oder für
die Zusage kontaktieren kann.' ) check = BooleanField(required=True, label=format_html( diff --git a/input/urls.py b/input/urls.py index d23ebdf..3d89297 100755 --- a/input/urls.py +++ b/input/urls.py @@ -11,9 +11,9 @@ from .views import ( urlpatterns = [ path('', index, name='index'), path( - "extern/", - TemplateView.as_view(template_name="input/forms/extern.html"), - name="extern", + 'extern/', + TemplateView.as_view(template_name='input/forms/extern.html'), + name='extern', ), path('saved', done, name='done'), path('export', export, name='export'), @@ -23,18 +23,18 @@ urlpatterns = [ # Static info page for project funding above 1000 EUR path('extern/info/projektfoerderung-ab-1000/', TemplateView.as_view(template_name='input/info_project_funding_gt_1000.html'), - name="info-foerderprojekt-ab-1000"), + name='info-foerderprojekt-ab-1000'), # New single-page application views - path("extern/reisekosten/", TravelApplicationView.as_view(), name="reisekosten"), - path("extern/ifg/", IFGApplicationView.as_view(), name="ifg"), - path("extern/email/", EmailApplicationView.as_view(), name="email"), - path("extern/literaturstipendium/", LiteratureApplicationView.as_view(), name="literatur"), - path("extern/mailingliste/", ListApplicationView.as_view(), name="mailingliste"), - path("extern/visitenkarten/", BusinessCardApplicationView.as_view(), name="visitenkarten"), - path("extern/bibliotheksstipendium/", LibraryApplicationView.as_view(), name="bibliotheksstipendium"), - path("extern/eliteraturstipendium/", ELiteratureApplicationView.as_view(), name="eliteraturstipendium"), - path("extern/softwarestipendium/", SoftwareApplicationView.as_view(), name="softwarestipendium"), + path('extern/reisekosten/', TravelApplicationView.as_view(), name='reisekosten'), + path('extern/ifg/', IFGApplicationView.as_view(), name='ifg'), + path('extern/email/', EmailApplicationView.as_view(), name='email'), + path('extern/literaturstipendium/', LiteratureApplicationView.as_view(), name='literatur'), + path('extern/mailingliste/', ListApplicationView.as_view(), name='mailingliste'), + path('extern/visitenkarten/', BusinessCardApplicationView.as_view(), name='visitenkarten'), + path('extern/bibliotheksstipendium/', LibraryApplicationView.as_view(), name='bibliotheksstipendium'), + path('extern/eliteraturstipendium/', ELiteratureApplicationView.as_view(), name='eliteraturstipendium'), + path('extern/softwarestipendium/', SoftwareApplicationView.as_view(), name='softwarestipendium'), # JavaScript translations for date widgets, etc. path('jsi18n/', JavaScriptCatalog.as_view(), name='jsi18n'), diff --git a/input/views.py b/input/views.py index 6c92635..b71e301 100755 --- a/input/views.py +++ b/input/views.py @@ -31,25 +31,25 @@ LIBRARY_FORMS = { } HELP_TEXTS = { - "IFG": { - "notes": ( - "Bitte gib an, wie die gewonnenen Informationen den
" - "Wikimedia-Projekten zugute kommen sollen." + 'IFG': { + 'notes': ( + 'Bitte gib an, wie die gewonnenen Informationen den
' + 'Wikimedia-Projekten zugute kommen sollen.' ) }, - "MAIL": { - "domain": ( - "Mit welcher Domain, bzw. für welches Wikimedia-Projekt,
" - "möchtest du eine Mailadresse beantragen?" + 'MAIL': { + 'domain': ( + 'Mit welcher Domain, bzw. für welches Wikimedia-Projekt,
' + 'möchtest du eine Mailadresse beantragen?' ) }, - "LIT": { - "notes": "Bitte gib an, wofür du die Literatur verwenden möchtest." + 'LIT': { + 'notes': 'Bitte gib an, wofür du die Literatur verwenden möchtest.' }, - "LIST": { - "domain": ( - "Mit welcher Domain, bzw. für welches Wikimedia-Projekt,
" - "möchtest du eine Mailingliste beantragen?" + 'LIST': { + 'domain': ( + 'Mit welcher Domain, bzw. für welches Wikimedia-Projekt,
' + 'möchtest du eine Mailingliste beantragen?' ) }, } @@ -76,7 +76,7 @@ def authorize(request, choice, pk): if ret := auth_deny(choice, pk, True): return ret else: - return HttpResponse(f"AUTHORIZED! choice: {choice}, pk: {pk}") + return HttpResponse(f'AUTHORIZED! choice: {choice}, pk: {pk}') @login_required @@ -87,12 +87,12 @@ def deny(request, choice, pk): if ret := auth_deny(choice, pk, False): return ret else: - return HttpResponse(f"DENIED! choice: {choice}, pk: {pk}") + return HttpResponse(f'DENIED! choice: {choice}, pk: {pk}') def done(request): return HttpResponse( - "Deine Anfrage wurde gesendet. Du erhältst in Kürze eine E-Mail-Benachrichtigung mit deinen Angaben. Für alle Fragen kontaktiere bitte das Team Communitys und Engagement unter community@wikimedia.de.") + 'Deine Anfrage wurde gesendet. Du erhältst in Kürze eine E-Mail-Benachrichtigung mit deinen Angaben. Für alle Fragen kontaktiere bitte das Team Communitys und Engagement unter community@wikimedia.de.') def index(request): @@ -112,13 +112,13 @@ class BaseApplicationView(FormView): - Sends notification mail to the internal IF address. - Returns the "done" response after successful processing. """ - template_name = "input/forms/form_generic.html" - type_code: str = "" + template_name = 'input/forms/form_generic.html' + type_code: str = '' def get_context_data(self, **kwargs): """Add the human-readable type string (from TYPE_CHOICES) to the template context.""" ctx = super().get_context_data(**kwargs) - ctx["typestring"] = TYPE_CHOICES.get(self.type_code, self.type_code) + ctx['typestring'] = TYPE_CHOICES.get(self.type_code, self.type_code) return ctx def get_form(self, form_class=None): @@ -144,113 +144,113 @@ class BaseApplicationView(FormView): # Collect cleaned data and mark the current type data = form.cleaned_data.copy() - data["choice"] = self.type_code + data['choice'] = self.type_code # Special rule for literature applications - if self.type_code == "LIT" and data.get("selfbuy") == "TRUE": - data["selfbuy_give_data"] = "False" + if self.type_code == 'LIT' and data.get('selfbuy') == 'TRUE': + data['selfbuy_give_data'] = 'False' # Save model instance modell = form.save(commit=False) # Username from session if present - user = self.request.session.get("user") + user = self.request.session.get('user') if user: - modell.username = user.get("username") + modell.username = user.get('username') # Copy common fields if provided by the form - if "realname" in data: - modell.realname = data["realname"] - if "email" in data: - modell.email = data["email"] + if 'realname' in data: + modell.realname = data['realname'] + if 'email' in data: + modell.email = data['email'] # Set model.type for specific request types - if self.type_code in ("BIB", "ELIT", "SOFT"): + if self.type_code in ('BIB', 'ELIT', 'SOFT'): modell.type = self.type_code # Literature-specific extra field - if self.type_code == "LIT" and "selfbuy_give_data" in data: - modell.selfbuy_give_data = data["selfbuy_give_data"] + if self.type_code == 'LIT' and 'selfbuy_give_data' in data: + modell.selfbuy_give_data = data['selfbuy_give_data'] modell.save() - if hasattr(form, "save_m2m"): + if hasattr(form, 'save_m2m'): form.save_m2m() # Prepare minimal mail context and send mails - data["pk"] = modell.pk - data["url_prefix"] = settings.EMAIL_URL_PREFIX - data["typestring"] = TYPE_CHOICES.get(self.type_code, self.type_code) - context = {"data": data} + data['pk'] = modell.pk + data['url_prefix'] = settings.EMAIL_URL_PREFIX + data['typestring'] = TYPE_CHOICES.get(self.type_code, self.type_code) + context = {'data': data} try: # Mail to applicant - txt1 = get_template("input/ifg_volunteer_mail.txt").render(context) - html1 = get_template("input/ifg_volunteer_mail.html").render(context) + txt1 = get_template('input/ifg_volunteer_mail.txt').render(context) + html1 = get_template('input/ifg_volunteer_mail.html').render(context) msg1 = EmailMultiAlternatives( - "Formular ausgefüllt", txt1, settings.IF_EMAIL, [data["email"]] + 'Formular ausgefüllt', txt1, settings.IF_EMAIL, [data['email']] ) - msg1.attach_alternative(html1, "text/html") + msg1.attach_alternative(html1, 'text/html') msg1.send() # Mail to IF - txt2 = get_template("input/if_mail.txt").render(context) - html2 = get_template("input/if_mail.html").render(context) + txt2 = get_template('input/if_mail.txt').render(context) + html2 = get_template('input/if_mail.html').render(context) msg2 = EmailMultiAlternatives( - "Formular ausgefüllt", txt2, settings.IF_EMAIL, [settings.IF_EMAIL] + 'Formular ausgefüllt', txt2, settings.IF_EMAIL, [settings.IF_EMAIL] ) - msg2.attach_alternative(html2, "text/html") + msg2.attach_alternative(html2, 'text/html') msg2.send() except BadHeaderError: modell.delete() - return HttpResponse("Invalid header found. Data not saved!") + return HttpResponse('Invalid header found. Data not saved!') except SMTPException: modell.delete() - return HttpResponse("Error in sending mails (probably wrong adress?). Data not saved!") + return HttpResponse('Error in sending mails (probably wrong adress?). Data not saved!') return done(self.request) class TravelApplicationView(BaseApplicationView): form_class = TravelForm - type_code = "TRAV" + type_code = 'TRAV' class LibraryApplicationView(BaseApplicationView): form_class = LibraryForm - type_code = "BIB" + type_code = 'BIB' class ELiteratureApplicationView(BaseApplicationView): form_class = ELiteratureForm - type_code = "ELIT" + type_code = 'ELIT' class SoftwareApplicationView(BaseApplicationView): form_class = SoftwareForm - type_code = "SOFT" + type_code = 'SOFT' class IFGApplicationView(BaseApplicationView): form_class = IFGForm - type_code = "IFG" + type_code = 'IFG' class EmailApplicationView(BaseApplicationView): form_class = EmailForm - type_code = "MAIL" + type_code = 'MAIL' class LiteratureApplicationView(BaseApplicationView): form_class = LiteratureForm - type_code = "LIT" + type_code = 'LIT' class ListApplicationView(BaseApplicationView): form_class = ListForm - type_code = "LIST" + type_code = 'LIST' class BusinessCardApplicationView(BaseApplicationView): form_class = BusinessCardForm - type_code = "VIS" + type_code = 'VIS'