§
    ;jGA  ã                   óì   — d dl Z d dlZd dlZd dlZd dlmZ d dlmZ d dlm	Z	 d dl
mZmZ d dlmZ d dlmZ d dlmZ  ej        e¦  «        Zd	„ Zdd
„Zdd„Zd„ Zdd„Zd„ Zdd„Zdd„Zd„ Zd„ Zdd„Z dS )é    N)Údate)ÚObjectDoesNotExist)ÚContentFile)ÚContextÚTemplate)Útimezone)ÚDocument)ÚPtc                 óx  ‡
‡— ddl mŠ
mŠ ddlm} 	 | j        }n# t          $ r d }Y nw xY w|sdg g dddœS |j        pg }ˆfd„|D ¦   «         }ˆ
fd„|D ¦   «         }ˆ
fd	„|D ¦   «         }|j        pd 	                    ¦   «         }|j
        pd 	                    ¦   «         }t          |p|p|p|¦  «        }	|||||	dœS )
Nr   )ÚCOMPETENCIES_BY_CODEÚVALID_CODES)ÚStudentCompetenciesÚ F)Úcompet_personal_qualitiesÚcompet_ok_linesÚcompet_pk_linesÚcompet_additionalÚhas_competencies_sectionc                 ó   •— g | ]}|‰v ¯|‘Œ	S © r   )Ú.0Úcr   s     €õJ   C:\Users\NNHueet\Desktop\Ð”Ð¸Ð¿Ð»Ð¾Ð¼ Ð½Ð° Ð·Ð°ÐºÐ°Ð·\resume\generation.pyú
<listcomp>z,_competencies_for_resume.<locals>.<listcomp>"   s#   ø€ Ð2Ð2Ð2�1  kÐ!1Ð!1ˆQÐ!1Ð!1Ð!1ó    c                 óJ   •— g | ]}|                      d ¦  «        ¯‰|         ‘Œ S )ÚOK©Ú
startswith©r   r   r   s     €r   r   z,_competencies_for_resume.<locals>.<listcomp>#   ó0   ø€ ÐMÐMÐM¨A¸!¿,º,ÀtÑ:LÔ:LÐMÐ$ QÔ'ÐMÐMÐMr   c                 óJ   •— g | ]}|                      d ¦  «        ¯‰|         ‘Œ S )ÚPKr   r    s     €r   r   z,_competencies_for_resume.<locals>.<listcomp>$   r!   r   )Úportfolio.competencies_catalogr   r   Úportfolio.modelsr   Úcompetencies_recordr   Úselected_competency_codesÚpersonal_qualitiesÚstripÚadditional_competenciesÚbool)Úprofiler   ÚrecÚcodesÚvalidÚok_linesÚpk_linesÚpqÚextraÚhasr   r   s             @@r   Ú_competencies_for_resumer5      sM  øø€ ØPÐPÐPÐPÐPÐPÐPÐPØ4Ð4Ð4Ð4Ð4Ð4ðØÔ)ˆˆøÝð ð ð Øˆˆˆðøøøàð 
à)+Ø!Ø!Ø!#Ø(-ð
ð 
ð 	
ð Ô)Ð/¨R€EØ2Ð2Ð2Ð2˜Ð2Ñ2Ô2€EØMÐMÐMÐM°ÐMÑMÔM€HØMÐMÐMÐM°ÐMÑMÔM€HØ
Ô
 Ð
& B×	-Ò	-Ñ	/Ô	/€BØÔ(Ð.¨B×5Ò5Ñ7Ô7€EÝ
ˆrÐ2�XÐ2 Ð2¨UÑ
3Ô
3€Cà%'Ø#Ø#Ø"Ø$'ðð ð s   ’ š)¨)c                 óÐ  — d}| j         r&| j         j        }|�|                     |¦  «        }n|}| j        pd| j        pd| j        pdg}d                     d„ |D ¦   «         ¦  «                             ¦   «         }| j        pd| j        pd| j        pd|| j        pd| j	        r| j
        j        nd| j        pd| j        pd| j        pd| j        �t!          | j        ¦  «        nd|dœS )Nr   Ú c              3   ó   K  — | ]}|¯|V — Œ	d S ©Nr   ©r   Úps     r   ú	<genexpr>z%_serialize_profile.<locals>.<genexpr>>   s'   è è € Ð/Ð/˜q¨QÐ/˜Ð/Ð/Ð/Ð/Ð/Ð/r   )Ú
first_nameÚ	last_nameÚ
patronymicÚ	full_nameÚphoneÚemailÚbioÚstudent_groupÚ	specialtyÚaverage_gradeÚ	photo_url)ÚphotoÚurlÚbuild_absolute_urir>   r=   r?   Újoinr)   rA   Úuser_idÚuserrB   rC   rD   rE   rF   Ústr)r,   ÚrequestrG   rI   Úpartsr@   s         r   Ú_serialize_profilerQ   1   s!  € Ø€IØ„}ð ØŒmÔˆØÐØ×2Ò2°3Ñ7Ô7ˆIˆIàˆIàÔÐ˜RØÔÐ ˜bØÔÐ ˜bð€Eð
 —’Ð/Ð/ EÐ/Ñ/Ô/Ñ/Ô/×5Ò5Ñ7Ô7€IàÔ(Ð.¨BØÔ&Ð,¨"ØÔ(Ð.¨BØØ”Ð$ "Ø'.¤Ð>�”Ô#Ð#¸BØŒ{Ð ˜bØ Ô.Ð4°"ØÔ&Ð,¨"Ø7>Ô7LÐ7X�˜WÔ2Ñ3Ô3Ð3Ð^`Øðð ð r   c                 ó�  ‡‡‡‡ ‡!‡"— d„ |                      d¦  «        pg D ¦   «         }d„ |                      d¦  «        pg D ¦   «         }t          |¦  «        t          |¦  «        z  Št          |                      d¦  «        pg ¦  «        Š"t          | |¬¦  «        }t          | j                             ¦   «                              d¦  «        ¦  «        }t          | j                             ¦   «                              d¦  «        ¦  «        }t          | j                             ¦   «                              d	dd
¦  «        ¦  «        }	t          | j	                             ¦   «         ¦  «        }
t          | j
                             ¦   «                              d¦  «        ¦  «        }d„ |d         D ¦   «         Š ˆ fd„|
D ¦   «         }ˆ fd„|
D ¦   «         }|                     d„ ¬¦  «         |                     d„ ¬¦  «         ||z   }t          |d         ¦  «        }d„ |D ¦   «         Šg }|	D ]a}|j        › d|j        › d|j        pd› �                     ¦   «         Št!          ˆfd„‰D ¦   «         ¦  «        }|                     ||f¦  «         Œb|                     d„ d¬¦  «         d„ |D ¦   «         }d„ t%          |¦  «        D ¦   «         Š!t'          |ˆ!fd„¬¦  «        }ˆfd„|D ¦   «         }ˆˆ"fd„}t'          ||d¬¦  «        }ˆfd„}t'          ||d¬¦  «        }ˆˆ"fd „}t'          ||d¬¦  «        }|||||||||‰"||t)          j        ¦   «                              ¦   «         t/          j        ¦   «                              d!¦  «        |                      d"d¦  «        d#œ}|                     t7          | ¦  «        ¦  «         |S )$u‹   ÐšÐ¾Ð½Ñ‚ÐµÐºÑ�Ñ‚ Ð´Ð»Ñ� ÑˆÐ°Ð±Ð»Ð¾Ð½Ð¾Ð²: ORM-Ð¾Ð±ÑŠÐµÐºÑ‚Ñ‹ Ð² Ñ�Ð¿Ð¸Ñ�ÐºÐ°Ñ… + Ð°ÐºÑ‚ÑƒÐ°Ð»ÑŒÐ½Ñ‹Ðµ ÐºÐ»ÑŽÑ‡Ð¸ Ð´Ð»Ñ� Ð°Ð´Ð°Ð¿Ñ‚Ð°Ñ†Ð¸Ð¸.c                 óP   — g | ]#}t          |¦  «                             ¦   «         ‘Œ$S r   ©rN   Úlower©r   Úks     r   r   z(build_resume_context.<locals>.<listcomp>P   s&   € ÐHÐHÐH A•�Q‘”—’‘”ÐHÐHÐHr   Úskillsc                 óP   — g | ]#}t          |¦  «                             ¦   «         ‘Œ$S r   rT   rV   s     r   r   z(build_resume_context.<locals>.<listcomp>Q   s&   € ÐLÐLÐL !�s�1‰vŒv�|Š|‰~Œ~ÐLÐLÐLr   ÚtechnologiesÚsoft_skills)rO   z-start_yearz-start_datez	-end_datez-idz-datec                 ó   — h | ]	}|j         ’Œ
S r   ©Úid)r   Úss     r   ú	<setcomp>z'build_resume_context.<locals>.<setcomp>]   s   € Ð>Ð>Ð> !˜œÐ>Ð>Ð>r   c                 ó&   •— g | ]}|j         ‰v ¯|‘ŒS r   r]   ©r   r_   Úmatched_skill_idss     €r   r   z(build_resume_context.<locals>.<listcomp>^   s&   ø€ ÐJÐJÐJ˜Q°´Ð8IÐ0IÐ0I�qÐ0IÐ0IÐ0Ir   c                 ó&   •— g | ]}|j         ‰v¯|‘ŒS r   r]   rb   s     €r   r   z(build_resume_context.<locals>.<listcomp>_   s&   ø€ ÐKÐKÐK˜!¨Q¬TÐ9JÐ-JÐ-J�AÐ-JÐ-JÐ-Jr   c                 ó4   — | j                              ¦   «         S r9   ©ÚnamerU   ©r_   s    r   ú<lambda>z&build_resume_context.<locals>.<lambda>`   s   €  q¤v§|¢|¡~¤~€ r   )Úkeyc                 ó4   — | j                              ¦   «         S r9   rf   rh   s    r   ri   z&build_resume_context.<locals>.<lambda>a   s   €  A¤F§L¢L¡N¤N€ r   Úprojectsc                 ó   — h | ]	}|j         ’Œ
S r   r]   r:   s     r   r`   z'build_resume_context.<locals>.<setcomp>e   s   € Ð3Ð3Ð3˜Q�A”DÐ3Ð3Ð3r   r7   r   c              3   ó(   •K  — | ]}|¯|‰v ¯d V — ŒdS ©é   Nr   ©r   ÚkwÚblobs     €r   r<   z'build_resume_context.<locals>.<genexpr>i   s,   øè è € Ð@Ð@˜"¨bÐ@°R¸4°Z°Z�A°Z°Z°Z°ZÐ@Ð@r   c                 ó   — | d         S )Nrp   r   )Úxs    r   ri   z&build_resume_context.<locals>.<lambda>k   s
   € ¨1¨Q¬4€ r   T)rj   Úreversec                 ó   — g | ]
}|d          ‘ŒS )r   r   r:   s     r   r   z(build_resume_context.<locals>.<listcomp>l   s   € Ð=Ð=Ð= A˜1˜Qœ4Ð=Ð=Ð=r   c                 ó$   — i | ]\  }}|j         |“ŒS r   r]   )r   Úir;   s      r   ú
<dictcomp>z(build_resume_context.<locals>.<dictcomp>n   s    € Ð=Ð=Ð=™˜˜AˆQŒT�1Ð=Ð=Ð=r   c                 ó:   •— ‰                      | j        d¦  «        S )Niç  )Úgetr^   )r;   Úorders    €r   ri   z&build_resume_context.<locals>.<lambda>p   s   ø€ ¨¯	ª	°!´$¸Ñ(<Ô(<€ r   c                 ó&   •— g | ]}|j         ‰v¯|‘ŒS r   r]   )r   r;   Úmatched_pidss     €r   r   z(build_resume_context.<locals>.<listcomp>r   s%   ø€ ÐQÐQÐQ˜A¸¼ÀLÐ8PÐ8P�aÐ8PÐ8PÐ8Pr   c                 óÒ   •‡— | j         › d| j        pd› d| j        pd› �                     ¦   «         Št	          ˆfd„‰D ¦   «         ¦  «        t	          ˆfd„‰D ¦   «         ¦  «        z   S )Nr7   r   c              3   ó(   •K  — | ]}|¯|‰v ¯d V — ŒdS ro   r   rq   s     €r   r<   z:build_resume_context.<locals>.ach_score.<locals>.<genexpr>v   ó,   øè è € Ð?Ð?˜¨RÐ?°B¸$°J°J�1°J°J°J°JÐ?Ð?r   c              3   óH   •K  — | ]}|                      ¦   «         ‰v ¯d V — ŒdS ro   ©rU   ©r   r_   rs   s     €r   r<   z:build_resume_context.<locals>.ach_score.<locals>.<genexpr>v   óB   øè è € ð F
ð F
Ø˜qŸwšw™yœy¨DÐ0Ð0ˆAÐ0Ð0Ð0Ð0ðF
ð F
r   )ÚtitleÚdescriptionÚorganizationrU   Úsum)Úars   Ú
kw_all_setÚsofts    @€€r   Ú	ach_scorez'build_resume_context.<locals>.ach_scoret   s    øø€ Ø”'ÐHÐH˜AœMÐ/¨RÐHÐH°!´.Ð2FÀBÐHÐH×NÒNÑPÔPˆÝÐ?Ð?Ð?Ð?˜zÐ?Ñ?Ô?Ñ?Ô?Å#ð F
ð F
ð F
ð F
ØðF
ñ F
ô F
ñ C
ô C
ñ 
ð 	
r   c                 ó–   •‡— | j         › d| j        › d| j        pd› �                     ¦   «         Št	          ˆfd„‰D ¦   «         ¦  «        S )Nr7   r   c              3   ó(   •K  — | ]}|¯|‰v ¯d V — ŒdS ro   r   rq   s     €r   r<   z:build_resume_context.<locals>.edu_score.<locals>.<genexpr>~   r‚   r   )ÚinstitutionrE   ÚdegreerU   rŠ   )Úedurs   rŒ   s    @€r   Ú	edu_scorez'build_resume_context.<locals>.edu_score|   sY   øø€ Ø”/ÐFÐF C¤MÐFÐF°C´JÐ4DÀ"ÐFÐF×LÒLÑNÔNˆÝÐ?Ð?Ð?Ð?˜zÐ?Ñ?Ô?Ñ?Ô?Ð?r   c                 óÊ   •‡— | j         › d| j        › d| j        › �                     ¦   «         Št	          ˆfd„‰D ¦   «         ¦  «        t	          ˆfd„‰D ¦   «         ¦  «        z   S )Nr7   c              3   ó(   •K  — | ]}|¯|‰v ¯d V — ŒdS ro   r   rq   s     €r   r<   z:build_resume_context.<locals>.exp_score.<locals>.<genexpr>„   r‚   r   c              3   óH   •K  — | ]}|                      ¦   «         ‰v ¯d V — ŒdS ro   r„   r…   s     €r   r<   z:build_resume_context.<locals>.exp_score.<locals>.<genexpr>„   r†   r   )ÚcompanyÚpositionrˆ   rU   rŠ   )Úexprs   rŒ   r�   s    @€€r   Ú	exp_scorez'build_resume_context.<locals>.exp_score‚   s–   øø€ Ø”+Ð@Ð@ ¤Ð@Ð@¨s¬Ð@Ð@×FÒFÑHÔHˆÝÐ?Ð?Ð?Ð?˜zÐ?Ñ?Ô?Ñ?Ô?Å#ð F
ð F
ð F
ð F
ØðF
ñ F
ô F
ñ C
ô C
ñ 
ð 	
r   z%d.%m.%YÚvacancy_summary)ÚstudentÚ	educationÚ
experiencerl   Úprojects_highlightÚprojects_otherrX   Úskills_highlightÚskills_otherr[   ÚachievementsÚkeywordsÚgenerated_dateÚgenerated_atrœ   )r|   ÚsetÚlistrQ   Ú
educationsÚallÚorder_byÚexperiencesrl   rX   r¤   Úsortr‡   rˆ   rZ   rU   rŠ   ÚappendÚ	enumerateÚsortedr   ÚtodayÚ	isoformatr   ÚnowÚstrftimeÚupdater5   )#r,   r¥   Úmatch_resultrO   Ú	kw_skillsÚkw_techr�   Úall_educationÚall_experienceÚall_projectsÚ
all_skillsÚall_achievementsÚrelevant_skillsÚother_skillsÚsorted_skillsÚmatched_projectsÚprojects_with_scoreÚprojectÚscoreÚsorted_all_projectsr    r¡   rŽ   Úsorted_achievementsr”   Úeducations_sortedr›   Úexperiences_sortedÚctxrs   rŒ   r   rc   r}   r�   s#                                @@@@@@r   Úbuild_resume_contextrË   N   sX  øøøøøø€ àHÐH¨(¯,ª,°xÑ*@Ô*@Ð*FÀBÐHÑHÔH€IØLÐL¨¯ª°^Ñ(DÔ(DÐ(JÈÐLÑLÔL€GÝ�Y‘”¥# g¡,¤,Ñ.€JÝ�—’˜]Ñ+Ô+Ð1¨rÑ2Ô2€Då  °'Ð:Ñ:Ô:€Gå˜Ô+×/Ò/Ñ1Ô1×:Ò:¸=ÑIÔIÑJÔJ€MÝ˜'Ô-×1Ò1Ñ3Ô3×<Ò<¸]ÑKÔKÑLÔL€NÝ˜Ô(×,Ò,Ñ.Ô.×7Ò7¸À]ÐTYÑZÔZÑ[Ô[€LÝ�g”n×(Ò(Ñ*Ô*Ñ+Ô+€JÝ˜GÔ0×4Ò4Ñ6Ô6×?Ò?ÀÑHÔHÑIÔIÐà>Ð> |°HÔ'=Ð>Ñ>Ô>ÐØJÐJÐJÐJ *ÐJÑJÔJ€OØKÐKÐKÐK˜zÐKÑKÔK€LØ×ÒÐ5Ð5ÐÑ6Ô6Ð6Ø×ÒÐ2Ð2ÐÑ3Ô3Ð3Ø# lÑ2€Må˜L¨Ô4Ñ5Ô5ÐØ3Ð3Ð"2Ð3Ñ3Ô3€LØÐØð 5ð 5ˆØ”-ÐTÐT 'Ô"5ÐTÐT¸Ô8LÐ8RÐPRÐTÐT×ZÒZÑ\Ô\ˆÝÐ@Ð@Ð@Ð@ 
Ð@Ñ@Ô@Ñ@Ô@ˆØ×"Ò" G¨UÐ#3Ñ4Ô4Ð4Ð4Ø×Ò  ¸ÐÑ>Ô>Ð>Ø=Ð=Ð)<Ð=Ñ=Ô=Ðà=Ð=¥Ð+;Ñ!<Ô!<Ð=Ñ=Ô=€EÝØÐ<Ð<Ð<Ð<ðñ ô Ðð RÐQÐQÐQÐ!4ÐQÑQÔQ€Nð
ð 
ð 
ð 
ð 
ð 
õ !Ð!1°yÈ$ÐOÑOÔOÐð@ð @ð @ð @ð @õ ˜}°)ÀTÐJÑJÔJÐð
ð 
ð 
ð 
ð 
ð 
õ   °IÀtÐLÑLÔLÐð Ø&Ø(Ø'Ø0Ø(ØØ+Ø$ØØ+ØÝœ*™,œ,×0Ò0Ñ2Ô2Ý œ™œ×/Ò/°
Ñ;Ô;Ø#Ÿ<š<Ð(9¸2Ñ>Ô>ðð €Cð" ‡J‚JÕ'¨Ñ0Ô0Ñ1Ô1Ð1Ø€Jr   c                 ó  — | j         pd                     ¦   «         }| j        pd}|                     ¦   «                              ¦   «                              d¦  «        p4t          t          j        d|d d…         t          j	        ¦  «        ¦  «        }|r¼|}|r|d|                     ¦   «         v rft          j
        d|dt          j	        ¬¦  «        d         }d	|                     ¦   «         vr't          j        dd
|› d�|dt          j	        ¬¦  «        }n|r	d
|› d�|z   }t          |¦  «        }|                     t          |¦  «        ¦  «        S d|› d|› d�}t          |¦  «        }	|	                     t          |¦  «        ¦  «        S )Nr   z	<!doctypez
<html[\s>]iô  z</head>rp   )ÚmaxsplitÚflagsr   z<stylez<style>z</style></head>)ÚcountrÎ   z</style>z‘<!DOCTYPE html>
<html lang="ru">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <style>z</style>
</head>
<body>
z
</body>
</html>)Ú
css_stylesr)   Úhtml_templateÚlstriprU   r   r+   ÚreÚsearchÚIÚsplitÚsubr   Úrenderr   )
Útemplate_objÚcontext_dictÚcssÚbody_tplÚ
looks_fullÚhtmlÚ	head_partÚtplÚ	full_htmlÚtemplates
             r   Úrender_resume_htmlrã   Ÿ   s¦  € ØÔ"Ð( b×
/Ò
/Ñ
1Ô
1€CØÔ)Ð/¨R€HØ—’Ñ"Ô"×(Ò(Ñ*Ô*×5Ò5°kÑBÔBð ÅdÝ
Œ	�- ¨$¨3¨$¤µ´Ñ6Ô6ñGô G€Jð ð 1ØˆØð 	2�9 §
¢
¡¤Ð,Ð,Ýœ ¨T¸AÅRÄTÐJÑJÔJÈ1ÔMˆIØ˜yŸšÑ0Ô0Ð0Ð0Ý”vØØ2˜cÐ2Ð2Ð2ØØÝœ$ðñ ô �øð ð 	2Ø*˜SÐ*Ð*Ð*¨TÑ1ˆDÝ�t‰nŒnˆØ�zŠz�' ,Ñ/Ô/Ñ0Ô0Ð0ð
ð
 ð
ð 
ð 
ð
ð 
ð 
€Iõ ˜	Ñ"Ô"€HØ�?Š?�7 <Ñ0Ô0Ñ1Ô1Ð1r   c                 ó,  — 	 ddl m} n:# t          t          f$ r&}t                               d|¦  «         Y d}~dS d}~ww xY w	  || |¬¦  «                             ¦   «         S # t          $ r&}t                               d|¦  «         Y d}~dS d}~ww xY w)uY   Ð’Ñ‹Ñ�Ð¾ÐºÐ¾Ðµ ÐºÐ°Ñ‡ÐµÑ�Ñ‚Ð²Ð¾; Ð½Ð° Windows Ñ‡Ð°Ñ�Ñ‚Ð¾ Ñ‚Ñ€ÐµÐ±ÑƒÐµÑ‚ GTK (libgobject).r   )ÚHTMLu9   WeasyPrint Ð½ÐµÐ´Ð¾Ñ�Ñ‚ÑƒÐ¿ÐµÐ½ Ð¿Ñ€Ð¸ Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ðµ: %sN)ÚstringÚbase_urlu/   WeasyPrint: Ð¾ÑˆÐ¸Ð±ÐºÐ° Ñ€ÐµÐ½Ð´ÐµÑ€Ð° PDF: %s)	Ú
weasyprintrå   ÚImportErrorÚOSErrorÚloggerÚinfoÚ	write_pdfÚ	ExceptionÚwarning)Úhtml_contentrç   rå   Úes       r   Ú_generate_pdf_weasyprintrò   Æ   sÊ   € ðØ#Ð#Ð#Ð#Ð#Ð#Ð#øÝ�Ð!ð ð ð Ý�ŠÐOÐQRÑSÔSÐSØˆtˆtˆtˆtˆtøøøøðøøøðØˆt˜<°(Ð;Ñ;Ô;×EÒEÑGÔGÐGøÝð ð ð Ý�ŠÐHÈ!ÑLÔLÐLØˆtˆtˆtˆtˆtøøøøðøøøs*   ‚	 ‰A š;»A ÁA# Á#
BÁ-BÂBc                 óº  — 	 ddl m} ddlm} n# t          $ r Y dS w xY w	  |¦   «         } || pd                     d¦  «        ¦  «        }|                     ||d¬¦  «        }t          |dd¦  «        rt           	                    d	¦  «         dS | 
                    ¦   «         }|r|ndS # t          $ r&}t           	                    d
|¦  «         Y d}~dS d}~ww xY w)u}   Ð§Ð¸Ñ�Ñ‚Ñ‹Ð¹ Python (ReportLab), Ñ€Ð°Ð±Ð¾Ñ‚Ð°ÐµÑ‚ Ð½Ð° Windows Ð±ÐµÐ· GTK; ÐºÐ°Ñ‡ÐµÑ�Ñ‚Ð²Ð¾ Ð¿Ñ€Ð¾Ñ‰Ðµ, Ñ‡ÐµÐ¼ Ñƒ WeasyPrint.r   )ÚBytesIO)ÚpisaNr   zutf-8)ÚdestÚencodingÚerru5   xhtml2pdf: err-Ñ„Ð»Ð°Ð³ Ð¿Ñ€Ð¸ Ð³ÐµÐ½ÐµÑ€Ð°Ñ†Ð¸Ð¸ PDFzxhtml2pdf: %s)Úiorô   Ú	xhtml2pdfrõ   ré   ÚencodeÚpisaDocumentÚgetattrrë   rï   Úgetvaluerî   )rð   rô   rõ   ÚoutÚsrcÚdocÚdatarñ   s           r   Ú_generate_pdf_xhtml2pdfr  Ô   s$  € ðØÐÐÐÐÐà"Ð"Ð"Ð"Ð"Ð"Ð"øÝð ð ð ØˆtˆtðøøøðØˆg‰iŒiˆØˆg�|Ð) r×1Ò1°'Ñ:Ô:Ñ;Ô;ˆØ×Ò ¨#¸ÐÑ@Ô@ˆÝ�3˜˜qÑ!Ô!ð 	Ý�NŠNÐRÑSÔSÐSØ�4Ø�|Š|‰~Œ~ˆØÐ%ˆtˆt Ð%øÝð ð ð Ý�Š�¨Ñ*Ô*Ð*Øˆtˆtˆtˆtˆtøøøøðøøøs*   ‚ �
œ¡A-B* ÂB* Â*
CÂ4CÃCc                 óâ   — t          | |¬¦  «        }|r|dfS t          | ¦  «        }|rt                               d¦  «         |dfS d}t          j                             d¦  «        r|dz  }d|fS )uÉ   
    PDF: Ñ�Ð½Ð°Ñ‡Ð°Ð»Ð° WeasyPrint, Ð·Ð°Ñ‚ÐµÐ¼ xhtml2pdf (fallback Ð±ÐµÐ· Ð½Ð°Ñ‚Ð¸Ð²Ð½Ñ‹Ñ… DLL Ð½Ð° Windows).
    Ð’Ð¾Ð·Ð²Ñ€Ð°Ñ‰Ð°ÐµÑ‚ (bytes | None, Ñ�Ð¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ðµ_Ð¾Ð±_Ð¾ÑˆÐ¸Ð±ÐºÐµ | None).
    ©rç   Nuˆ   PDF Ñ�Ñ„Ð¾Ñ€Ð¼Ð¸Ñ€Ð¾Ð²Ð°Ð½ Ñ€ÐµÐ·ÐµÑ€Ð²Ð½Ñ‹Ð¼ Ð´Ð²Ð¸Ð¶ÐºÐ¾Ð¼ xhtml2pdf (WeasyPrint Ð½ÐµÐ´Ð¾Ñ�Ñ‚ÑƒÐ¿ÐµÐ½ Ð¸Ð»Ð¸ Ð½Ðµ Ñ�Ð¿Ñ€Ð°Ð²Ð¸Ð»Ñ�Ñ�).u  PDF Ð½Ðµ Ñ�Ð¾Ð·Ð´Ð°Ð½: WeasyPrint Ð½ÐµÐ´Ð¾Ñ�Ñ‚ÑƒÐ¿ÐµÐ½ (Ñ‡Ð°Ñ�Ñ‚Ð¾ Ð¾Ñ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²ÑƒÐµÑ‚ libgobject / GTK Ð½Ð° Windows) Ð¸ Ñ€ÐµÐ·ÐµÑ€Ð²Ð½Ñ‹Ð¹ xhtml2pdf Ð½Ðµ Ñ�Ð¼Ð¾Ð³ Ð¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ñ‚ÑŒ HTML. Ð¡Ð¼. docs/WINDOWS_PDF_SETUP.md. Ð”Ð¾Ñ�Ñ‚ÑƒÐ¿Ð½Ñ‹ Ñ�ÐºÑ�Ð¿Ð¾Ñ€Ñ‚ HTML Ð¸ DOCX.Úwinuv    Ð�Ð° Windows Ð¼Ð¾Ð¶Ð½Ð¾ ÑƒÑ�Ñ‚Ð°Ð½Ð¾Ð²Ð¸Ñ‚ÑŒ GTK Runtime Ð´Ð»Ñ� WeasyPrint Ð¸Ð»Ð¸ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÑŒ HTML/DOCX.)rò   r  rë   rì   ÚsysÚplatformr   )rð   rç   ÚpdfÚmsgs       r   Úgenerate_pdf_fallbackr  ê   s§   € õ
 # <¸(Ð
CÑ
CÔ
C€CØ
ð Ø�DˆyÐå
! ,Ñ
/Ô
/€CØ
ð Ý�Šð  _ñ  	`ô  	`ð  	`Ø�DˆyÐð	Yð õ
 „|×Ò˜uÑ%Ô%ð HØð  Hñ  	HˆØ�ˆ9Ðr   c                 ó.   — t          | |¬¦  «        \  }}|S )Nr  )r  )Úhtml_stringrç   r	  Ú_errs       r   Úhtml_to_pdf_bytesr    s   € Ý% k¸HÐEÑEÔE�I€CˆØ€Jr   c                 óJ  — 	 ddl m} n# t          $ r Y dS w xY w	 t          ¦   «         }|j        d         }d|j        _        t          d¦  «        |j        _         || pdd¦  «        }| 	                    g d	¢¦  «        D ]Â}| 
                    d
d¬¦  «        }|sŒ|j                             ¦   «         }|dk    r|                     |d¬¦  «         ŒS|dk    r|                     |d¬¦  «         Œq|dk    r|                     |d¬¦  «         Œ�|dk    r|                     |d¬¦  «         Œ­|                     |¦  «         ŒÃt          j        ¦   «         }|                     |¦  «         |                     d¦  «         |                     ¦   «         S # t&          $ r Y dS w xY w)uu   Ð“ÐµÐ½ÐµÑ€Ð¸Ñ€ÑƒÐµÑ‚ DOCX Ð¸Ð· HTML (fallback Ð±ÐµÐ· Ð¾Ñ„Ð¾Ñ€Ð¼Ð»ÐµÐ½Ð¸Ñ� WeasyPrint, Ñ€Ð°Ð±Ð¾Ñ‚Ð°ÐµÑ‚ Ð½Ð° Windows).r   )ÚBeautifulSoupNÚNormalÚCalibrié   r   zhtml.parser)Úh1Úh2Úh3r;   Úlir7   T)r)   r  ©Úlevelr  rp   r  é   r  úList Bullet©Ústyle)Úbs4r  ré   r	   ÚstylesÚfontrg   r
   ÚsizeÚfind_allÚget_textrU   Úadd_headingÚadd_paragraphrù   rô   ÚsaveÚseekÚreadrî   )	rð   r  Údocumentr  ÚsoupÚtagÚtextrg   Úbufs	            r   Úgenerate_docx_from_htmlr/    sà  € ðØ%Ð%Ð%Ð%Ð%Ð%Ð%øÝð ð ð ØˆtˆtðøøøðÝ‘:”:ˆØ” Ô)ˆØ#ˆŒ
ŒÝ˜R™&œ&ˆŒ
Œàˆ}˜\Ð/¨R°Ñ?Ô?ˆØ—=’=Ð!>Ð!>Ð!>Ñ?Ô?ð 	-ð 	-ˆCØ—<’< ¨4�<Ñ0Ô0ˆDØð ØØ”8—>’>Ñ#Ô#ˆDØ�tŠ|ˆ|Ø×$Ò$ T°Ð$Ñ3Ô3Ð3Ð3Ø˜’�Ø×$Ò$ T°Ð$Ñ3Ô3Ð3Ð3Ø˜’�Ø×$Ò$ T°Ð$Ñ3Ô3Ð3Ð3Ø˜’�Ø×&Ò& t°=Ð&ÑAÔAÐAÐAà×&Ò& tÑ,Ô,Ð,Ð,åŒj‰lŒlˆØ�Š�cÑÔÐØ�Š�‰ŒˆØ�xŠx‰zŒzÐøÝð ð ð Øˆtˆtðøøøs   ‚	 ‰
–›E8F Æ
F"Æ!F"c           	      óò  ‡— t          ¦   «         Š‰j        d         }d|j        _        t	          d¦  «        |j        _        | d         }‰                     |                     d¦  «        pdd¦  «         |                     d¦  «        r‰                     d	|d         › �¦  «         |                     d
¦  «        r‰                     d|d
         › �¦  «         |                     d¦  «        r‰                     d|d         › �¦  «         |                     d¦  «        r‰                     d|d         › �¦  «         |                     d¦  «        r‰                     d|d         › �¦  «         |                     d¦  «        r‰                     |d         ¦  «         |                      d¦  «        �r‰                     dd¬¦  «         |                      d¦  «        r‰                     d| d         z   ¦  «         |                      d¦  «        pg }|r3‰                     dd¬¦  «         |D ]}‰                     |d¬¦  «         Œ|                      d¦  «        pg }|r3‰                     dd¬¦  «         |D ]}‰                     |d¬¦  «         Œ|                      d ¦  «        r‰                     d!| d          z   ¦  «         ˆfd"„} |d#|                      d$¦  «        ¦  «          |d%|                      d&¦  «        ¦  «         |                      d'¦  «        pg }|rŠ‰                     d(d¬¦  «         |D ]p}|j	        › d)�}	|j
        r|	d*z  }	n|	t          |j        pd*¦  «        z  }	|j        › d+|j        › d,|	› d-�}|j        r|d.|j        › �z  }‰                     |¦  «         Œq|                      d/¦  «        pg }
|
r£‰                     d0d¬¦  «         |
D ]‰}‰                     |j        › d+|j        › �d1¬¦  «         |j
        rd*n|j        rt          |j        ¦  «        nd*}‰                     |j        › d.|› �¦  «         ‰                     |j        pd2¦  «         ŒŠd3D ]¾\  }}|                      |¦  «        pg }|sŒ‰                     |d¬¦  «         |D ]…}‰                     |j        d1¬¦  «         ‰                     |                     ¦   «         ¦  «         ‰                     |j        pd2¦  «         |j        r‰                     d4|j        › �¦  «         Œ†Œ¿|                      d5¦  «        pg }|r]‰                     d6d¬¦  «         |D ]C}‰                     |j        › d.|j        › d,|j        › d-�|j        r
d+|j        › �nd2z   ¦  «         ŒDt7          j        ¦   «         }‰                     |¦  «         |                     d¦  «         |                     ¦   «         S )7uŒ   DOCX Ð½Ð°Ð¿Ñ€Ñ�Ð¼ÑƒÑŽ Ð¸Ð· Ñ�Ñ‚Ñ€ÑƒÐºÑ‚ÑƒÑ€Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ð¾Ð³Ð¾ ÐºÐ¾Ð½Ñ‚ÐµÐºÑ�Ñ‚Ð° (Ð¿Ñ€ÐµÐ´Ð¿Ð¾Ñ‡Ñ‚Ð¸Ñ‚ÐµÐ»ÑŒÐ½ÐµÐµ HTML-Ð¿Ð°Ñ€Ñ�Ð¸Ð½Ð³Ð°).r  r  r  r�   r@   u   Ð ÐµÐ·ÑŽÐ¼Ðµr   rB   zEmail: rA   u   Ð¢ÐµÐ»ÐµÑ„Ð¾Ð½: rD   u   Ð“Ñ€ÑƒÐ¿Ð¿Ð°: rE   u   Ð¡Ð¿ÐµÑ†Ð¸Ð°Ð»ÑŒÐ½Ð¾Ñ�Ñ‚ÑŒ: rF   u   Ð¡Ñ€ÐµÐ´Ð½Ð¸Ð¹ Ð±Ð°Ð»Ð»: rC   r   u7   Ð›Ð¸Ñ‡Ð½Ñ‹Ðµ ÐºÐ°Ñ‡ÐµÑ�Ñ‚Ð²Ð° Ð¸ ÐºÐ¾Ð¼Ð¿ÐµÑ‚ÐµÐ½Ñ†Ð¸Ð¸rp   r  r   u   Ð›Ð¸Ñ‡Ð½Ñ‹Ðµ ÐºÐ°Ñ‡ÐµÑ�Ñ‚Ð²Ð°: r   u(   ÐžÐ±Ñ‰Ð¸Ðµ ÐºÐ¾Ð¼Ð¿ÐµÑ‚ÐµÐ½Ñ†Ð¸Ð¸ (ÐžÐš)r  r  r  r   u>   ÐŸÑ€Ð¾Ñ„ÐµÑ�Ñ�Ð¸Ð¾Ð½Ð°Ð»ÑŒÐ½Ñ‹Ðµ ÐºÐ¾Ð¼Ð¿ÐµÑ‚ÐµÐ½Ñ†Ð¸Ð¸ (ÐŸÐš)r   u5   Ð”Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ñ‹Ðµ ÐºÐ¾Ð¼Ð¿ÐµÑ‚ÐµÐ½Ñ†Ð¸Ð¸: c                 ó¬   •— |sd S ‰                      | d¬¦  «         |D ]4}‰                     d|j        › d|                     ¦   «         › �¦  «         Œ5d S )Nrp   r  u   â€¢ õ    â€” )r%  r&  rg   Úget_level_display)r‡   Ú
skill_listÚskr  s      €r   Úadd_skills_blockz1build_docx_from_context.<locals>.add_skills_blockX  sy   ø€ Øð 	ØˆFØ�Š˜ QˆÑ'Ô'Ð'Øð 	Mð 	MˆBØ×ÒÐK R¤WÐKÐK°2×3GÒ3GÑ3IÔ3IÐKÐKÑLÔLÐLÐLð	Mð 	Mr   u5   ÐšÐ»ÑŽÑ‡ÐµÐ²Ñ‹Ðµ Ð½Ð°Ð²Ñ‹ÐºÐ¸ (Ð¿Ð¾ Ð²Ð°ÐºÐ°Ð½Ñ�Ð¸Ð¸)r¢   u   ÐŸÑ€Ð¾Ñ‡Ð¸Ðµ Ð½Ð°Ð²Ñ‹ÐºÐ¸r£   rž   u   ÐžÐ±Ñ€Ð°Ð·Ð¾Ð²Ð°Ð½Ð¸Ðµu   â€”u   Ð½.Ð².z, z (ú)r2  rŸ   u   ÐžÐ¿Ñ‹Ñ‚z	Heading 3r   ))u'   ÐŸÑ€Ð¾ÐµÐºÑ‚Ñ‹ (Ñ€ÐµÐ»ÐµÐ²Ð°Ð½Ñ‚Ð½Ñ‹Ðµ)r    )u   Ð”Ñ€ÑƒÐ³Ð¸Ðµ Ð¿Ñ€Ð¾ÐµÐºÑ‚Ñ‹r¡   u   Ð¢ÐµÑ…Ð½Ð¾Ð»Ð¾Ð³Ð¸Ð¸: r¤   u   Ð”Ð¾Ñ�Ñ‚Ð¸Ð¶ÐµÐ½Ð¸Ñ�) r	   r   r!  rg   r
   r"  r%  r|   r&  Ú
start_yearÚ
is_currentrN   Úend_yearr‘   rE   r’   r™   r˜   Úend_dateÚ
start_daterˆ   r‡   Úget_project_type_displayrZ   Úresultr   r‰   rù   rô   r'  r(  r)  )rÚ   r  r_   ÚoksÚlineÚpksr6  rª   rñ   Úyearsr­   ru   ÚendÚlabelrj   Úplistr;   r¤   r‹   r.  r  s                       @r   Úbuild_docx_from_contextrF  -  sç  ø€ å
‰*Œ*€CØŒJ�xÔ €EØ€E„J„OÝ˜‘f”f€E„J„Oà�YÔ€AØ‡O‚O�A—E’E˜+Ñ&Ô&Ð8¨.¸!Ñ<Ô<Ð<Ø‡u‚uˆW�~„~ð 2Ø×ÒÐ0 A g¤JÐ0Ð0Ñ1Ô1Ð1Ø‡u‚uˆW�~„~ð ;Ø×ÒÐ9¨Q¨w¬ZÐ9Ð9Ñ:Ô:Ð:Ø‡u‚uˆ_ÑÔð AØ×ÒÐ?¨1¨_Ô+=Ð?Ð?Ñ@Ô@Ð@Ø‡u‚uˆ[ÑÔð KØ×ÒÐI¸¸;¼ÐIÐIÑJÔJÐJØ‡u‚uˆ_ÑÔð LØ×ÒÐJ°a¸Ô6HÐJÐJÑKÔKÐKØ‡u‚uˆU�|„|ð $Ø×Ò˜!˜Eœ(Ñ#Ô#Ð#à×ÒÐ2Ñ3Ô3ñ Ø�ŠÐQÐYZˆÑ[Ô[Ð[Ø×ÒÐ7Ñ8Ô8ð 	Ø×ÒØ1°LÐA\Ô4]Ñ]ñô ð ð ×ÒÐ0Ñ1Ô1Ð7°RˆØð 	=Ø�OŠOÐFÈaˆOÑPÔPÐPØð =ð =�Ø×!Ò! $¨mÐ!Ñ<Ô<Ð<Ð<Ø×ÒÐ0Ñ1Ô1Ð7°RˆØð 	=Ø�OŠOÐ\ÐdeˆOÑfÔfÐfØð =ð =�Ø×!Ò! $¨mÐ!Ñ<Ô<Ð<Ð<Ø×ÒÐ/Ñ0Ô0ð 	Ø×ÒØGÈ,ÐWjÔJkÑkñô ð ðMð Mð Mð Mð Mð ÐÐLÈl×N^ÒN^Ð_qÑNrÔNrÑsÔsÐsØÐÐ0°,×2BÒ2BÀ>Ñ2RÔ2RÑSÔSÐSà×!Ò! +Ñ.Ô.Ð4°"€JØð $Ø�ŠÐ0¸ˆÑ:Ô:Ð:Øð 		$ð 		$ˆAØ”|Ð(Ð(Ð(ˆEØŒ|ð 5Ø˜Ñ!��à�˜QœZÐ3¨8Ñ4Ô4Ñ4�Ø”mÐ>Ð> q¤{Ð>Ð>°eÐ>Ð>Ð>ˆDØŒxð +ØÐ* ¤Ð*Ð*Ñ*�Ø×Ò˜dÑ#Ô#Ð#Ð#à×"Ò" <Ñ0Ô0Ð6°B€KØð 3Ø�Š˜
¨!ˆÑ,Ô,Ð,Øð 	3ð 	3ˆAØ×Ò ¤Ð:Ð:¨q¬yÐ:Ð:À+ÐÑNÔNÐNØœlÐ]�(�(ÀAÄJÐ1\µ°Q´Z±´°ÐT\ˆCØ×Ò ¤Ð9Ð9°CÐ9Ð9Ñ:Ô:Ð:Ø×Ò˜aœmÐ1¨rÑ2Ô2Ð2Ð2ðð Mð M‰
ˆˆsð × Ò  Ñ%Ô%Ð+¨ˆØð 	ØØ�Š˜ QˆÑ'Ô'Ð'Øð 	Mð 	MˆAØ×Ò˜aœg¨[ÐÑ9Ô9Ð9Ø×Ò˜a×8Ò8Ñ:Ô:Ñ;Ô;Ð;Ø×Ò˜aœmÐ1¨rÑ2Ô2Ð2ØŒ~ð MØ×!Ò!Ð"K¸1¼>Ð"KÐ"KÑLÔLÐLøð	Mð  ×#Ò# NÑ3Ô3Ð9°r€LØð Ø�ŠÐ.°aˆÑ8Ô8Ð8Øð 	ð 	ˆAØ×ÒØ”7Ð6Ð6 ¤Ð6Ð6¨Q¬VÐ6Ð6Ð6Ø,-¬NÐBÐ(˜œÐ(Ð(Ð(ÀñDñô ð ð õ
 Œ*‰,Œ,€CØ‡H‚HˆS�M„M€MØ‡H‚HˆQ�K„K€KØ�8Š8‰:Œ:Ðr   c                 ó(  — |pd| _         t          ||¬¦  «        \  }}|r8d| j        pd› d�}| j                             |t          |¦  «        d¬¦  «         n|rt                               d|¦  «         d	}	 t          |¦  «        }n,# t          $ r t           
                    d
¦  «         d	}Y nw xY w|st          |¦  «        }|r7d| j        pd› d�}| j                             |t          |¦  «        d¬¦  «         |                      ¦   «          |S )u   Ð¡Ð¾Ñ…Ñ€Ð°Ð½Ñ�ÐµÑ‚ HTML, PDF (ÐµÑ�Ð»Ð¸ WeasyPrint Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿ÐµÐ½) Ð¸ DOCX. Ð’Ð¾Ð·Ð²Ñ€Ð°Ñ‰Ð°ÐµÑ‚ Ð¾ÑˆÐ¸Ð±ÐºÑƒ PDF Ð¸Ð»Ð¸ None.r   r  Úresume_Únewz.pdfF)r'  u%   WeasyPrint / PDF Ð¿Ñ€Ð¾Ð¿ÑƒÑ‰ÐµÐ½: %sNuM   DOCX Ð¸Ð· ÐºÐ¾Ð½Ñ‚ÐµÐºÑ�Ñ‚Ð° Ð½Ðµ Ñ�Ñ„Ð¾Ñ€Ð¼Ð¸Ñ€Ð¾Ð²Ð°Ð½, Ð¿Ñ€Ð¾Ð±ÑƒÐµÐ¼ HTMLz.docx)rð   r  r^   Úpdf_filer'  r   rë   rï   rF  rî   Ú	exceptionr/  Ú	docx_file)	Úinstancer  rÚ   rç   Ú	pdf_bytesÚpdf_errÚname_pdfÚ
docx_bytesÚ	name_docxs	            r   Úsave_generated_filesrS  —  sP  € à'Ð-¨2€HÔå.¨{ÀXÐNÑNÔNÑ€IˆwØð IØ7˜Xœ[Ð1¨EÐ7Ð7Ð7ˆØÔ×Ò˜x­°YÑ)?Ô)?ÀeÐÑLÔLÐLÐLØ	ð IÝ�ŠÐ>ÀÑHÔHÐHà€JðÝ,¨\Ñ:Ô:ˆ
ˆ
øÝð ð ð Ý×ÒÐhÑiÔiÐiØˆ
ˆ
ˆ
ðøøøð ð :Ý,¨[Ñ9Ô9ˆ
Øð PØ9˜hœkÐ2¨UÐ9Ð9Ð9ˆ	ØÔ×Ò 	­;°zÑ+BÔ+BÈÐÑOÔOÐOð ‡M‚M�O„O€Oà€Ns   Á8B Â&B1Â0B1r9   )!rù   ÚloggingrÓ   r  Údatetimer   Údjango.core.exceptionsr   Údjango.core.files.baser   Údjango.templater   r   Údjango.utilsr   Údocxr	   Údocx.sharedr
   Ú	getLoggerÚ__name__rë   r5   rQ   rË   rã   rò   r  r  r  r/  rF  rS  r   r   r   ú<module>r^     s˜  ðØ 	€	€	€	Ø €€€Ø 	€	€	€	Ø 
€
€
€
Ø Ð Ð Ð Ð Ð à 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø .Ð .Ð .Ð .Ð .Ð .Ø -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ø !Ð !Ð !Ð !Ð !Ð !Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à	ˆÔ	˜8Ñ	$Ô	$€ðð ð ð@ð ð ð ð:Nð Nð Nð Nðb$2ð $2ð $2ðNð ð ð ðð ð ð,ð ð ð ð0ð ð ð ð
#ð #ð #ðLgð gð gðTð ð ð ð ð r   