removed intern view

This commit is contained in:
Oliver Zander 2025-08-21 10:02:19 +02:00 committed by Tobias Herre
parent 165ad050ad
commit 6306567ebd
4 changed files with 2 additions and 96 deletions

View File

@ -152,8 +152,6 @@ OAUTH_URL_WHITELISTS = ['/admin']
OAUTH_COOKIE_SESSION_ID = 'sso_session_id' OAUTH_COOKIE_SESSION_ID = 'sso_session_id'
INTERN_VIEW_ENABLED = env('INTERN_VIEW_ENABLED', False)
IF_EMAIL = env('IF_EMAIL', 'community@wikimedia.de') IF_EMAIL = env('IF_EMAIL', 'community@wikimedia.de')
SURVEY_EMAIL = env('SURVEY_EMAIL', 'sandro.halank@wikimedia.de') SURVEY_EMAIL = env('SURVEY_EMAIL', 'sandro.halank@wikimedia.de')

View File

@ -1,5 +1,4 @@
from datetime import date from datetime import date
from unittest import skipUnless
from django.test import TestCase, Client from django.test import TestCase, Client
from django.conf import settings from django.conf import settings
@ -33,12 +32,6 @@ class TestWithoutLogin(TestCase):
#print (response.content) #print (response.content)
self.assertContains(response,'<a href="https://srcsrv.wikimedia.de/beba/foerderbarometer">Sourcecode</a>') self.assertContains(response,'<a href="https://srcsrv.wikimedia.de/beba/foerderbarometer">Sourcecode</a>')
@skipUnless(settings.INTERN_VIEW_ENABLED, 'Intern view is disabled.')
def test_access_denied(self):
'''test if /intern redirects to login page if not logged in'''
response = self.client.get('/intern', follow=True)
self.assertContains(response,'password')
def _postform(self, data, expected_form): def _postform(self, data, expected_form):
'''helper function to manage the Wizzard''' '''helper function to manage the Wizzard'''
response = self.client.post('/', data, follow=False) response = self.client.post('/', data, follow=False)
@ -98,13 +91,6 @@ class TestWithLogin(TestCase):
self.client = Client() self.client = Client()
self.user = User.objects.create_user('vladimir', 'vladimir@reiherzehe.com', 'reiherzehe') self.user = User.objects.create_user('vladimir', 'vladimir@reiherzehe.com', 'reiherzehe')
@skipUnless(settings.INTERN_VIEW_ENABLED, 'Intern view is disabled.')
def test_access(self):
'''test if /intern gives an answer'''
self.assertEqual(self.client.login(username='testuser', password='testpasswd'), True)
response = self.client.get('/intern')
self.assertContains(response,'Übersicht aller Förderangebote')
def test_project_of_year(self): def test_project_of_year(self):
''' test if the finance id is resettet ad start of year''' ''' test if the finance id is resettet ad start of year'''
acc = Account.objects.create() acc = Account.objects.create()

View File

@ -1,7 +1,6 @@
from django.conf import settings
from django.urls import path from django.urls import path
from .views import ExternView, index, done, authorize, deny, InternView, export from .views import ExternView, index, done, authorize, deny, export
urlpatterns = [ urlpatterns = [
path('', index, name='index'), path('', index, name='index'),
@ -11,6 +10,3 @@ urlpatterns = [
path('authorize/<str:choice>/<int:pk>', authorize, name='authorize'), path('authorize/<str:choice>/<int:pk>', authorize, name='authorize'),
path('deny/<str:choice>/<int:pk>', deny, name='deny'), path('deny/<str:choice>/<int:pk>', deny, name='deny'),
] ]
if settings.INTERN_VIEW_ENABLED: # pragma: no cover
urlpatterns.insert(2, path('intern', InternView.as_view(), name='intern'))

View File

@ -1,4 +1,3 @@
from datetime import date
from smtplib import SMTPException from smtplib import SMTPException
from django.shortcuts import render from django.shortcuts import render
@ -9,19 +8,14 @@ from django.core.mail import BadHeaderError, EmailMultiAlternatives
from django.template.loader import get_template from django.template.loader import get_template
from django.conf import settings from django.conf import settings
from django.contrib.auth.decorators import login_required from django.contrib.auth.decorators import login_required
from django.contrib.auth.mixins import LoginRequiredMixin
from .forms import ( from .forms import (
INTERN_CHOICES,
ProjectForm,
ExternForm, ExternForm,
LibraryForm, LibraryForm,
ELiteratureForm, ELiteratureForm,
SoftwareForm, SoftwareForm,
IFGForm, IFGForm,
LiteratureForm, LiteratureForm,
HonoraryCertificateForm,
InternForm,
TravelForm, TravelForm,
EmailForm, EmailForm,
ListForm, ListForm,
@ -75,78 +69,10 @@ def deny(request, choice, pk):
def done(request): 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.") 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.")
def index(request): def index(request):
return render(request, 'input/index.html') return render(request, 'input/index.html')
class InternView(LoginRequiredMixin, CookieWizardView): # pragma: no cover
'''This View is for WMDE-employees only'''
template_name = 'input/extern.html'
form_list = [InternForm, ProjectForm]
def get_form(self, step=None, data=None, files=None):
'''this function determines which part of the multipart form is
displayed next'''
if step is None:
step = self.steps.current
print ("get_form() step " + step)
if step == '1':
prev_data = self.get_cleaned_data_for_step('0')
choice = prev_data.get('choice')
print(f'choice detection: {INTERN_CHOICES[choice]}')
if choice == 'HON':
form = HonoraryCertificateForm(data)
elif choice == 'PRO':
form = ProjectForm(data)
elif choice == 'TRAV':
form = TravelForm(data)
else:
raise RuntimeError(f'ERROR! UNKNOWN FORMTYPE {choice} in InternView')
self.choice = choice
else:
form = super().get_form(step, data, files)
form.fields['realname'].help_text = mark_safe("Vor- und Zuname (Realname), Wer hat das Projekt beantragt?<br>\
Wer ist Hauptansprechperson? Bei WMDE-MAs immer (WMDE),<br>\
bei externen Partnern (PART) hinzufügen.")
return form
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
if hasattr(self, 'choice'):
context["choice"] = INTERN_CHOICES[self.choice]
return context
def done(self, form_list, **kwargs):
print('InternView.done() reached')
# gather data from all forms
data = {}
for form in form_list:
data = {**data, **form.cleaned_data}
if data['choice'] == 'LIT':
if data['selfbuy'] == 'TRUE':
data['selfbuy_give_data'] = 'False'
# write data to database
form = form.save(commit=False)
# we have to copy the data from the first form here
# this is ugly code. how can we copy this without explicit writing?
# i found no way to access the ModelForm.Meta.exclude-tupel
form.realname = data['realname']
# form.username = data['username']
form.email = data['email']
form.granted = True
form.granted_date = date.today()
if data['choice'] == 'LIT':
form.selfbuy_give_data = data['selfbuy_give_data']
form.save()
return done(self.request)
class ExternView(CookieWizardView): class ExternView(CookieWizardView):
'''This View is for Volunteers''' '''This View is for Volunteers'''