U
     TtjR  ã                   @   s®  d dl mZmZmZ d dlmZ ddlT ddlT d dlm	Z	 d dl
mZ d dl
mZ d dl
mZ d d	lmZmZmZ d d
lmZ d dlmZ d dlmZ d dlmZ d dlZd dlZd dlZd dlZd dlmZ dd„ Z dGdd„Z!dd„ Z"dd„ Z#dd„ Z$dd„ Z%dd„ Z&dd „ Z'd!d"„ Z(d#d$„ Z)d%Z*dHd'd(„Z+d)d*„ Z,d+d,„ Z-d-d.„ Z.d/d0„ Z/d1d2„ Z0dId3d4„Z1d5d6„ Z2d7d8„ Z3d9d:„ Z4d;d<„ Z5d=d>„ Z6d?d@„ Z7dAdB„ Z8dCdD„ Z9dEdF„ Z:dS )Jé    )ÚrenderÚget_object_or_404Úredirect)ÚQé   )Ú*)ÚHttpResponseRedirect)Úgettext_lazy)Úgettext)Úget_language)Ú	PaginatorÚ	EmptyPageÚPageNotAnInteger)Úmessages)Úvalidate_email)ÚValidationError)ÚHttpResponseN)Úslugifyc                 C   s>   | sdS t  ddt| ƒ¡}t  d|¡r*|S t  d|¡r:|S dS )u…  Kiá»ƒm tra sá»‘ Ä‘iá»‡n thoáº¡i phÃ­a SERVER â€” lá»›p cháº·n tháº­t, khÃ´ng thá»ƒ vÃ²ng qua nhÆ°
    kiá»ƒm tra báº±ng JavaScript á»Ÿ trÃ¬nh duyá»‡t. Tráº£ vá» sá»‘ Ä‘Ã£ lÃ m sáº¡ch náº¿u há»£p lá»‡,
    ngÆ°á»£c láº¡i tráº£ None. Cháº¥p nháº­n: 0xxxxxxxxx(x) hoáº·c +84xxxxxxxxx, cÃ³/khÃ´ng dáº¥u
    cÃ¡ch, cháº¥m, gáº¡ch, ngoáº·c (khá»›p Ä‘Ãºng vá»›i kiá»ƒm tra phÃ­a trÃ¬nh duyá»‡t).Nz	[\s.\-()]Ú z	\+84\d{9}z	0\d{9,10})ÚreÚsubÚstrÚ	fullmatch)ÚrawÚs© r   ú5/var/www/BmcWebsite/BMC-WEBSITE-DONE/BmcBase/views.pyÚ_phone_hop_le   s    r   ú/c                 C   s   t | j d¡p|ƒS )ue   Vá» láº¡i Ä‘Ãºng trang vá»«a gá»­i (Ä‘á»ƒ ngÆ°á»i dÃ¹ng tháº¥y thÃ´ng bÃ¡o lá»—i ngay táº¡i chá»—).ÚHTTP_REFERER)r   ÚMETAÚget)ÚrequestZmac_dinhr   r   r   Ú	_quay_lai&   s    r#   c                 C   sR   | j pd}tj |¡\}}t|ƒ}|s*d}t ¡ jd d… }|› d|› | ¡ › S )Nzuploaded-fileé
   ú-)	ÚnameÚosÚpathÚsplitextr   ÚuuidÚuuid4ÚhexÚlower)Úuploaded_fileÚoriginal_nameÚ	base_nameÚ	extensionZsafe_base_nameZunique_suffixr   r   r   Ú_build_safe_upload_name-   s    
r2   c                 C   s   t j | jpd¡S )Nr   )r'   r(   Úbasenamer&   )r.   r   r   r   Ú_extract_original_upload_name7   s    r4   c                 C   sb  | j  d¡}tj ¡ d d… }tjjdd d¡d d… }tjjdd d¡d d… }tjjdd d¡d d… }tjjdd d¡d d… }tj ¡ d d… }tj ¡ }|rBtj t	|d	t	|d
B t	|dB ¡ 
¡ }	|	 ¡ }
|
dkr|	 ¡ }|rtd|jdS |
dkr*||	|
dœ}t| d|ƒS |g ddœ}t| d|ƒS |||||||dœ}t| d|ƒS )NÚqé	   õ   thuá»‘c sÃ¢u©Úloaiz-idõ   thuá»‘c trá»« bá»‡nhõ   thuá»‘c cá»õ   thuá»‘c sinh trÆ°á»Ÿng©Zten__icontains)Zten_en__icontains)Zmo_ta_ngan__icontainsr   Úproduct_detail)Ú
product_idr   )Zsearch_queryÚsearch_resultsÚresult_countzBmcBase/search_results.html)ÚproductsÚ	thuocsausÚthuoctrubenhsÚthuoccosÚthuocsinhtruongsÚbinh_bomÚnewszBmcBase/index.html)ÚGETr!   ÚSanPhamÚobjectsÚallÚfilterÚorder_byÚSanPhamBinhBomÚTinTucr   ÚdistinctÚcountÚfirstr   Úpkr   )r"   ÚqueryrB   rC   rD   rE   rF   ZbinhbomZallnewsr@   rA   ÚproductÚcontextr   r   r   Úindex:   sR    
ÿþÿ

ýýúrX   c                 C   s
   t | dƒS )NzBmcBase/about.html©r   ©r"   r   r   r   Úaboutn   s    r[   c                 C   s€   t j ¡ }t|dƒ}| j d¡}z| |¡}W n< tk
rL   | d¡}Y n  tk
rj   | |j	¡}Y nX d|i}t
| d|ƒS )Né   Úpager   ÚnotificationszBmcBase/noti.html)ÚThongBaorK   rL   r   rI   r!   Úget_pager   r   Ú	num_pagesr   )r"   Únotifications_listÚ	paginatorÚpage_numberr^   rW   r   r   r   Únotiq   s    

 ÿre   c                 C   s   t j ¡ }d|i}t| d|ƒS )NZlist_of_newszBmcBase/news.html)rP   rK   rL   r   )r"   rH   rW   r   r   r   rH   …   s    
rH   c                 C   s    t t|d}d|i}t| d|ƒS )N©rT   rH   zBmcBase/news_detail.html)r   rP   r   )r"   Znews_idrH   rW   r   r   r   Únews_detail‹   s    rg   c                 C   s6   | sg S t  d| ¡}|sg S dd„ | d¡ d¡D ƒS )uö   TrÃ­ch cÃ¡c khu vá»±c náº±m trong ngoáº·c cá»§a tiÃªu Ä‘á» job, tÃ¡ch theo '/'.
    VD: 'WAREHOUSE ASSISTANT (LONG AN/BINH DINH)' -> ['LONG AN', 'BINH DINH'].
    Dá»±a vÃ o ÄÃšNG pattern hiá»‡n cÃ³ '... (KHU Vá»°C)', khÃ´ng Ä‘á»•i dá»¯ liá»‡u.z\(([^)]*)\)c                 S   s   g | ]}|  ¡ r|  ¡ ‘qS r   )Ústrip)Ú.0Úxr   r   r   Ú
<listcomp>™   s      z"_trich_khu_vuc.<locals>.<listcomp>r   r   )r   ÚsearchÚgroupÚsplit)Útieu_deÚmr   r   r   Ú_trich_khu_vuc   s    rq   )u   TIáº¾NGZENGLISHZCHINESEZSPEAKINGZJAPANESEZKOREANu   NGOáº I NGá»®Fc                    sR   | pd  ¡ } | sdS |  ¡ ‰ t‡ fdd„tD ƒƒr6dS |rN|  dd¡ dd¡} | S )	Nr   c                 3   s   | ]}|ˆ kV  qd S )Nr   )ri   Úk©Úur   r   Ú	<genexpr>©   s     z_chuan_kv.<locals>.<genexpr>zLONG ANu   ÄÚDu   Ä‘Úd)rh   ÚupperÚanyÚ_TU_NGON_NGUÚreplace)r   Úis_enr   rs   r   Ú	_chuan_kv¤   s    r}   c                 C   sÀ  t tƒ p
dƒ}| d¡}|r dnd}| j d¡p2d ¡ }| j d¡pFd ¡ }| j d¡d	k}tj ¡ }i }|D ]<}	t	t
|	|ƒp€dƒD ]$}
t|
|d
}| |tƒ ¡ |
¡ q„qnt| ¡ ƒ}|}|rÖ|jf |› d|iŽ}|r&t| |tƒ ¡ƒ|hB }tƒ }|D ]}|tf |› d|iŽO }qþ| |¡}| ¡ }|r:|}nft|dƒ}| j d¡}z| |¡}W n@ tk
r~   | d¡}Y n" tk
rž   | |j¡}Y nX |||||||dœ}t| d|ƒS )NÚviÚenÚ
tieu_de_enro   r5   r   Úkhu_vucZtat_caÚ1)r|   Z__icontainsé   r]   r   )ÚcareersÚkhu_vuc_listr   r5   rU   Ú
xem_tat_caÚtong_ket_quazBmcBase/careers.html)r   r   Ú
startswithrI   r!   rh   ÚCareersrK   rL   rq   Úgetattrr}   Ú
setdefaultÚsetÚaddÚsortedÚkeysrM   r   rR   r   r`   r   r   ra   r   )r"   Úlangr|   Úfieldr5   r   r†   Zall_jobsZraw_theo_chuanÚcr   Zchuanr…   Zcareers_listÚaliasesZ	dieu_kienÚar‡   r„   rc   rd   rW   r   r   r   r„   °   sT    



ù	r„   c                 C   s    t t|d}d|i}t| d|ƒS )Nrf   ÚcareerzBmcBase/career.html)r   r‰   r   )r"   Z	career_idr•   rW   r   r   r   r•   ë   s    r•   c                 C   s
   t | dƒS )NzBmcBase/contact.htmlrY   rZ   r   r   r   Úcontactð   s    r–   c                 C   s    t t|d}d|i}t| d|ƒS )Nrf   ÚpostzBmcBase/noti_post.html)r   r_   r   )r"   Zpost_idr—   rW   r   r   r   Ú	noti_postó   s    r˜   c                 C   s   | j  dd¡}t| dƒS )Nr   r   zBmcBase/image_display.html)rI   r!   r   )r"   Z	str_paramr   r   r   Údisplay_image  s    r™   c           	      C   s¶   t j ¡  d¡}tj ¡ }|r>tt|d}t jj|d d¡}t|dƒ}| j 	d¡}z| 
|¡}W n< tk
r€   | 
d¡}Y n  tk
rž   | 
|j¡}Y nX ||dœ}t| d|ƒS )	Nú
-ngay_dangrf   ©Úthe_loair$   r]   r   )r^   Ú
categorieszBmcBase/blog.html)ÚKienThucrK   rL   rN   ÚTheLoaiBaiVietr   rM   r   rI   r!   r`   r   r   ra   r   )	r"   Zid_the_loairb   r   Zten_the_loairc   rd   r^   rW   r   r   r   Úblog  s"    

þr    c           	      C   s   t j ¡ }| j d¡pd ¡ }|rrtj t|dt|dB t|dB t|dB t|dB t|dB ¡ 	¡  
d	¡}n
tj ¡ }t|ƒ}t|d
ƒ}| j d¡}z| |¡}W n< tk
rÆ   | d¡}Y n  tk
rä   | |j¡}Y nX ||||dœ}t| d|ƒS )Nr5   r   r=   )Zten_tieng_anh__icontains)Zmo_ta__icontains)Zmo_ta_tieng_anh__icontains)Znoi_dung__icontains)Znoi_dung_tieng_anh__icontainsrš   r$   r]   r   )r@   Útotal_resultsr   rU   z BmcBase/blog_search_results.html)rŸ   rK   rL   rI   r!   rh   rž   rM   r   rQ   rN   ÚnoneÚlenr   r`   r   r   ra   r   )	r"   r   rU   Zsearch_results_listr¡   rc   rd   r@   rW   r   r   r   Úblog_search;  sD    
ÿþýüûÿù	

ür¤   c           
      C   sä   t t|d}|jjdd d¡d d… }d }| jdkrft| jd}| ¡ rl|j	dd	}||_
| 	¡  ntƒ }|j ¡ }g }|D ].}|tjj|d
j|jd d¡d d… 7 }q~t|ƒdkrÆ|d d… }||||||dœ}	t| d|	ƒS )Nrf   T)Útrang_thai_da_duyetrš   r$   ÚPOST)ÚdataF)Úcommitr›   r   é   )Úbai_vietr   Údanh_sach_bai_viet_cung_chu_deÚdanh_sach_binh_luanÚbinh_luan_moiÚbinh_luan_formzBmcBase/blog_post.html)r   rž   Úcac_binh_luanrM   rN   ÚmethodZBinhLuanFormr¦   Úis_validÚsaverª   rœ   rL   rK   ÚexcluderT   r£   r   )
r"   Zid_bai_vietrª   r¬   r­   r®   r   r«   ÚcategoryrW   r   r   r   Ú	blog_poste  s0    


,ú	rµ   c                 C   sP   |  ¡ }| j |› d¡dkr(|d|fS t|dƒ | j |› d¡¡}|d|fS )uœ  PhÃ¢n trang 12/trang cho Má»˜T tab sáº£n pháº©m, HOáº¶C tráº£ háº¿t khi ?<ten>_all=1.

    Tráº£ (items, xem_tat_ca, tong): template vá»«a hiá»ƒn thá»‹ items vá»«a dá»±ng nÃºt
    "Xem táº¥t cáº£"/"Xem theo trang" vÃ  bá»™ Ä‘áº¿m tá»•ng. Gom 6 khá»‘i phÃ¢n trang láº·p
    trÆ°á»›c Ä‘Ã¢y vá» má»™t chá»—. get_page tá»± xá»­ lÃ½ page rá»—ng/khÃ´ng há»£p lá»‡ nÃªn khÃ´ng
    cáº§n try/except nhÆ° báº£n cÅ©.
    Z_allr‚   Tr\   Z_pageF)rR   rI   r!   r   r`   )r"   Z	danh_sachÚtenZtongÚitemsr   r   r   Ú_phan_trang_san_pham‹  s
    
r¸   c                 C   sÖ   t | tj ¡ dƒ\}}}t | tjjdddƒ\}}}t | tjjdddƒ\}}}	t | tjjdddƒ\}
}}t | tjjd	dd
ƒ\}}}t | tj ¡ dƒ\}}}|||||||||	|
||||||||dœ}t| d|ƒS )NrB   r7   r8   rC   r:   rD   r;   rE   r<   rF   rG   )rB   Úproducts_allÚproducts_tongrC   Úthuocsaus_allÚthuocsaus_tongrD   Úthuoctrubenhs_allÚthuoctrubenhs_tongrE   Úthuoccos_allÚthuoccos_tongrF   Úthuocsinhtruongs_allÚthuocsinhtruongs_tongrG   Úbinh_bom_allÚbinh_bom_tongzBmcBase/products.html)r¸   rJ   rK   rL   rM   rO   r   )r"   rB   r¹   rº   rC   r»   r¼   rD   r½   r¾   rE   r¿   rÀ   rF   rÁ   rÂ   rG   rÃ   rÄ   rW   r   r   r   rB   š  sd      ÿ
  ÿ
  ÿ
  ÿ
  ÿ
  ÿ
            úrB   c                 C   s   t t|d}t| dd|iƒS )Nrf   zBmcBase/product.htmlrV   )r   rJ   r   ©r"   r?   rV   r   r   r   r>   ´  s    r>   c                 C   s   t t|d}t| dd|iƒS )Nrf   zBmcBase/products-binhbom.htmlrV   )r   rO   r   rÅ   r   r   r   Úproduct_binhbom¸  s    rÆ   c                 C   sl  | j dkrb| j d¡pd ¡ }| j d¡p.d ¡ }| j d¡}| j d¡}| j d¡pZd ¡ }| j d¡}t|ƒ}g }|sŠ| td	ƒ¡ |r |s | td
ƒ¡ |rÔzt|ƒ W n" t	k
rÒ   | tdƒ¡ Y nX |sê|sê| tdƒ¡ |r|D ]}	t
 | |	¡ qôt| dƒS t|||pd||d}
|rRt|ƒ|
_t|ƒ}|
jj||dd |
 ¡  tdƒS t| dƒS )Nr¦   r&   r   ÚemailÚphoneÚ	user_typeÚmessagez
file-inputu   Vui lÃ²ng nháº­p há» vÃ  tÃªn.u'   Sá»‘ Ä‘iá»‡n thoáº¡i khÃ´ng há»£p lá»‡.u   Email khÃ´ng há»£p lá»‡.uP   Cáº§n Ã­t nháº¥t sá»‘ Ä‘iá»‡n thoáº¡i hoáº·c email Ä‘á»ƒ chÃºng tÃ´i liÃªn há»‡.z	/lien-he/)r¶   rÇ   Úso_dien_thoaiÚloai_khach_hangÚnoi_dungF)r²   r   z	form.html)r°   r¦   r!   rh   ÚFILESr   ÚappendÚ_r   r   r   Úerrorr#   Ú
FormLienHer4   Úoriginal_file_namer2   Úfiler²   r   r   )r"   r&   rÇ   Z	phone_rawrÉ   rÊ   Ú
attachmentrÈ   Zloirp   Ú
submissionZ	safe_namer   r   r   Úform_submit¼  sL    
û
r×   c                 C   sr   | j dkrht| j d¡ƒ}| j d¡p(d ¡ }|sLt | tdƒ¡ t| dƒS t	||d}| 
¡  tdƒS t| d	ƒS )
Nr¦   Zphone_numberZproduct_namer   u>   Sá»‘ Ä‘iá»‡n thoáº¡i khÃ´ng há»£p lá»‡. VÃ­ dá»¥: 0912 345 678z
/products/)ÚsdtÚtenSpr   zproducts.html)r°   r   r¦   r!   rh   r   rÑ   rÐ   r#   ÚFormTuVanSanPhamr²   r   r   )r"   rØ   ZnameProductrÖ   r   r   r   Úform_submit_productê  s    

þrÛ   c                 C   s
   t | dƒS )NzBmcBase/404.htmlrY   rZ   r   r   r   rÑ   ÿ  s    rÑ   )r   )F)N);Zdjango.shortcutsr   r   r   Údjango.db.modelsr   ÚmodelsÚformsÚdjango.httpr   Údjango.utils.translationr	   r
   rÐ   r   Údjango.core.paginatorr   r   r   Údjango.contribr   Zdjango.core.validatorsr   Údjango.core.exceptionsr   r   Úrandomr   r'   r*   Údjango.utils.textr   r   r#   r2   r4   rX   r[   re   rH   rg   rq   rz   r}   r„   r•   r–   r˜   r™   r    r¤   rµ   r¸   rB   r>   rÆ   r×   rÛ   rÑ   r   r   r   r   Ú<module>   sX   

4
;%
*&.