Files
application-form-7/__pycache__/app.cpython-310.pyc
T

137 lines
12 KiB
Plaintext
Raw Normal View History

2025-12-27 16:34:31 +01:00
o
ÌúOiADã@s:ddlZddlZddlZddlZddlmZddlmZddlmZm Z m
Z
m Z m Z m
Z
mZddlmZmZddlmZddlmZeeƒZej e¡eeƒZeejdƒjd d
d d Zd
dZddZddZddZddZ ddZ!ddZ"ddZ#ddZ$dd „Z%e &d!¡d"d#„ƒZ'e &d$¡d%d&„ƒZ(ej&d'd(gd)d*d+„ƒZ)e &d,¡d-d.„ƒZ*ej&d/d(gd)d0d1„ƒZ+e &d2¡d3d4„ƒZ,ej&d5d(gd)d6d7„ƒZ-e &d8¡d9d:„ƒZ.ej&d;d(gd)d<d=„ƒZ/ej&d>d(gd)d?d@„ƒZ0ej&dAd(gd)dBdC„ƒZ1e &dD¡dEdF„ƒZ2e &dG¡dHdI„ƒZ3edJkrej4d dKdSdS)LéN)Údatetime)ÚPath)ÚFlaskÚrender_templateÚrequestÚredirectÚurl_forÚflashÚsession)ÚMailÚMessage)Úsecure_filename)ÚConfigÚAPPLICATIONS_FOLDERT)Úexist_okcCstj tjd|¡S)z%Get the path to an application folderr)ÚosÚpathÚjoinÚappÚconfig©Ú
session_id©rú0/home/markus/workspace/application-form-7/app.pyÚget_application_pathsrcCótj t|ƒd¡S)z.Get the path to the application data YAML filez data.yaml©rrrrrrrrÚget_data_file_pathórcCr)z&Get the path to the attachments folderÚ attachmentsrrrrrÚget_attachments_pathrr cCsPt|ƒ}tj |¡r&t|ddd
}t |¡WdƒS1s!wYdS)z$Load application data from YAML fileÚutf-8©ÚencodingN)rrrÚexistsÚopenÚyamlÚ safe_load)rÚ data_fileÚfrrrÚload_application_data#s   ÿr+cCsht|ƒ}t|ƒjdddt|ƒ}t|ddd}tj||dddWdƒdS1s-wYdS) z"Save application data to YAML fileT©ÚparentsrÚwr"r#F)Ú
allow_unicodeÚdefault_flow_styleN)rrÚmkdirrr&r'Údump)rÚdataÚapp_pathr)r*rrrÚsave_application_data,s "ÿr5c
Ctd|dd}dtjdd}d|dtjdd |d
tjdd }zt||g|d }t |¡WdStyQ}ztj d
|¡WYd}~dSd}~ww)zSend email with resume linkÚresume_applicationT)rÚ _externalzIhre Bewerbung bei Ú COMPANY_NAMEz - Link zum Fortsetzenu<Guten Tag,
vielen Dank für Ihr Interesse an der Position "z" bei uM.
Sie können Ihre Bewerbung jederzeit über den folgenden Link fortsetzen:
um
Dieser Link bleibt gültig und Sie können Ihre Bewerbung jederzeit bearbeiten.
Mit freundlichen Grüßen
Ú
)ÚsubjectÚ
recipientsÚbodyzFailed to send email: NF) rrrr ÚmailÚsendÚ ExceptionÚloggerÚerror)ÚemailrÚjob_nameÚ resume_linkr:r<ÚmsgÚerrrÚsend_resume_email6s(þþû
ö

þrGcCsd}t ||¡duS)zValidate email formatz0^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$N)ÚreÚmatch)rBÚpatternrrrÚvalidate_emailQsrKcCs.d}t ||¡s
dSt dd|¡}t|ƒdkS)z#Validate international phone formatz^\+\d{1,3}[\s\d]{1,20}$Fz\sÚé)rHrIÚsubÚlen)ÚphonerJÚ digits_onlyrrrÚvalidate_phoneWs
  rRcCsTzt|ƒ}tjd|kotjdknott|ƒƒdkWSty)YdSw)zValidate birth yearÚMIN_BIRTH_YEARÚMAX_BIRTH_YEARéF)ÚintrrrOÚstrÚ
ValueError)ÚyearÚyear_intrrrÚ
validate_yearcs$ÿ ÿr[cCs6zt|ƒ}tt|ƒƒtjdkWStyYdSw)zValidate ZIP codeÚMAX_ZIP_DIGITSF)rVrOrWrrrX)Úzip_codeÚzip_intrrrÚ validate_zipms  ÿr_cCs&d|vo| dd¡d ¡tjdvS)z"Check if file extension is allowedÚÚALLOWED_EXTENSIONS)ÚrsplitÚlowerrr)ÚfilenamerrrÚ allowed_filevsÿrfú/cCs ttdƒƒS)zRedirect to apply pageÚ page1_email)rrrrrrÚindex|s riz/applycCstj dd¡}td|dS)z0Page 1: Email capture and session initializationÚjobúOffene Positionzpage1_email.html©rC)rÚargsÚgetrrlrrrrhs rhz/apply/submit-emailÚPOST)Úmethodsc
Ctj dd¡ ¡}tj dd¡}t|ƒs!tddƒttd|dƒStt  
¡ƒ}|||d t   ¡ 
¡t   ¡ 
¡iigd
œ }t||ƒt|||ƒrLtd d ƒntd
dƒ|td<ttd|dƒS)z+Process email submission and create sessionrBrLrCrku1Bitte geben Sie eine gültige E-Mail-Adresse ein.rArh)rjé) rrBrCÚ current_pageÚ
created_atÚ
updated_atÚ
personal_infoÚmotivation_answersÚuploaded_fileszIEine E-Mail mit einem Link zum Fortsetzen wurde an Ihre Adresse gesendet.ÚsuccesszTWarnung: Die E-Mail konnte nicht gesendet werden. Bitte notieren Sie sich diese URL.ÚwarningÚapplication_idÚpage2_personalr)rÚformrnÚstriprKr rrrWÚuuidÚuuid4rÚnowÚ isoformatr5rGr
)rBrCrÚapp_datarrrÚ submit_email‰s,
 

÷
 
z/apply/<session_id>/personalcCó>t|ƒ}|stddƒttdƒƒStd||d| di¡dS)z"Page 2: Basic personal informationúBewerbung nicht gefunden.rArhzpage2_personal.htmlrCru©rrCr3©r+r rrrrn©rrrrrr{³ó
 
ýr{z#/apply/<session_id>/submit-personalc Cs&t|ƒ}|stddƒttdƒƒStj dd¡ ¡}tj dd¡ ¡}tj dd¡ ¡}tj dd¡ ¡}tj d d¡ ¡}tj d
d¡ ¡}tj d d¡ ¡}tj d d¡ ¡} g}
|rft|ƒt j
d
krk|
  d¡|rvt|ƒt j
d
kr{|
  d¡|r†t|ƒt j
d
kr|
  d¡|rt |ƒs|
  d¡|r¡t|ƒt j
d
kr¦|
  d¡|r¬t
|ƒs±|
  d¡|r·t|ƒsÉ|
  dt j
ddt j
dd¡| rÙt| ƒt j
d
krÙ|
  d¡|
rí|
D]} t| dƒqÝttd|dƒS|||||||| dœ|d<d|d<t ¡ ¡|d <t||ƒttd!|dƒS)"z'Process personal information submissionr…rArhÚnamerLÚ firstnameÚaddressr]ÚcityrPÚ
birth_yearÚ civil_statusÚMAX_STRING_LENGTHz=Name ist erforderlich und darf maximal 255 Zeichen lang sein.z@Vorname ist erforderlich und darf maximal 255 Zeichen lang sein.z@Adresse ist erforderlich und darf maximal 255 Zeichen lang sein.z;PLZ ist erforderlich und darf maximal 10 Ziffern lang sein.z>Stadt ist erforderlich und darf maximal 255 Zeichen lang sein.z_Telefonnummer ist erforderlich und muss im internationalen Format sein (z.B. +41 79 123 45 67).z/Geburtsjahr ist erforderlich und muss zwischen rSz und rTz liegen.z.Zivilstand darf maximal 255 Zeichen lang sein.r{r)rr]rrPrruérrrtÚpage3_motivation)r+r rrrr|rnr}rOrrÚappendr_rRr[rr€rr5) rrrr]rrPrÚerrorsrArrrÚsubmit_personalÁs\
 


 

 
 $
 
ø

r•z/apply/<session_id>/motivationcCr„)z.Page 3: Motivation and qualification questionsr…rArhzpage3_motivation.htmlrCrvr†r‡rˆrrrrr‰rz%/apply/<session_id>/submit-motivationcCst|ƒ}|stddƒttdƒƒStj dd¡ ¡}tj dd¡ ¡}tj dd¡ ¡}tj dd¡ ¡}g}|rNt|ƒt j
d krN|  d
t j
d d ¡|ret|ƒt j
d kre|  d t j
d d ¡|r|t|ƒt j
d kr||  d
t j
d d ¡|r“t|ƒt j
d kr“|  dt j
d d ¡|r§|D]}t|dƒq—ttd|dƒS||||dœ|d<d|d<t  
¡ ¡|d<t||ƒttd|dƒS)z'Process motivation questions submissionr…rArhÚ current_jobrLÚ
motivationÚqualificationsÚsalaryÚMAX_TEXT_AREA_LENGTHz:Die Beschreibung Ihrer beruflichen Situation darf maximal z Zeichen lang sein.z)Die Motivationsbeschreibung darf maximal z,Die Qualifikationsbeschreibung darf maximal u)Die Gehaltsvorstellungen dürfen maximal rr)rr—r˜r™rvrUrrrtÚ page4_upload)r+r rrrr|rnr}rOrrr“rr€rr5)rrrr—r˜r™r”rArrrÚsubmit_motivations<
  
ü
z/apply/<session_id>/uploadcCsFt|ƒ}|stddƒttdƒƒStd||d| dg¡tjddS) zPage 4: Document uploadr…rArhzpage4_upload.htmlrCrwÚ MAX_FILES)rrCrwÚ max_files)r+r rrrrnrrrˆrrrrEs
 
ürz/apply/<session_id>/upload-filec Ct|ƒ}|stddƒttdƒƒSt| dg¡ƒtjdkr2tdtjdddƒttd|d ƒSd
tj vrDtd dƒttd|d ƒStj d
}|j
d kr[td dƒttd|d ƒSt |j
ƒsmtd
dƒttd|d ƒS|  dt
j¡| ¡}|  d¡|tjdkrtddƒttd|d ƒSt|j
ƒ}t ¡ d¡}|d|}t|ƒ}t|ƒjdddt
j ||¡}| |¡d|vrÅg|d<|d ||t ¡ ¡|dœ¡t ¡ ¡|d<t||ƒtddƒttd|d ƒS)zHandle file uploadr…rArhrwruSie können maximal z Dokumente hochladen.rrÚfileuKeine Datei ausgewählt.rLuKUngültiger Dateityp. Erlaubte Formate: PDF, DOC, DOCX, TXT, JPG, JPEG, PNGrÚ
MAX_FILE_SIZEu.Die Datei ist zu groß. Maximale Größe: 4 MBz
%Y%m%d_%H%M%SÚ_Tr,)Ú
original_nameÚ stored_nameÚ uploaded_atÚsizertzDatei erfolgreich hochgeladen.rx)r+r rrrOrnrrrÚfilesrerfÚseekrÚSEEK_ENDÚtellr
rr€Ústrftimer rr1rrÚsaver“rr5) rrÚ file_sizereÚ timestampÚunique_filenameÚattachments_pathÚ file_pathrrrÚ upload_fileTsT
 











ü

z0/apply/<session_id>/remove-file/<int:file_index>cCt|ƒ}|stddƒttdƒƒS| dg¡}d|kr#t|ƒkrWnn2||}tj t |ƒ|d¡}tj 
|¡r?t  |¡|  |¡t
 ¡ ¡|d<t||ƒtdd ƒntd
dƒttd |d ƒS)
zRemove an uploaded filer…rArhrwrrtzDatei erfolgreich entfernt.rxzDatei nicht gefunden.rr)r+r rrrnrOrrrr r%ÚremoveÚpoprr€rr5)rÚ
file_indexrrwÚ file_infor°rrrÚ remove_file—s