o
    ug#                     @   s~  d dl mZ d dlmZmZ d dlmZmZmZm	Z	 d dl
mZ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m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"m#Z# d dl$m%Z% d dl&m'Z' d dl(m)Z) dd Z*dd Z+edd ddddd Z,dd Z-edd dddd d! Z.ed"d#d$d% Z/ed"d#d&d' Z0ed(d d"ddd)d* Z1d+d, Z2dS )-    )HttpResponseRedirect)renderredirect)authenticateloginlogoutget_user_model)login_requireduser_passes_test)messages)get_current_site)format_html   )CustomLoginFormCustomRegisterFormCustomPasswordChangeFormCustomPasswordResetForm)Q)	Paginator)account_activation_token)force_bytes	force_str)urlsafe_base64_encodeurlsafe_base64_decode)render_to_string)EmailMessage)Orderc                 C   s|   t  }ztt|}|jj|d}W n   d }Y |d ur4t||r4d|_|  t	
| d tdS t	| d tdS )NpkTuH   Dziękujemy za weryfikację adresu e-mail. Teraz możesz się zalgować.users:loginu    Nieprawidłowy link aktywacyjny!users:profile)r   r   r   objectsgetr   check_token	is_activesaver   successr   error)requestuidb64tokenUseruiduser r.   &I:\VCS\pobierzsterownik\users\views.pyactivate   s   r0   c                 C   s   d}t d|jt| jtt|jt|| 	 rdndd}t
|||gd}| r8t| td||d d S t| td	|d
 d S )NzAktywuj swoje kontoz#users/activate_account_message.htmlhttpshttpr-   domainr,   r*   protocoltou   Zarejestrowano użytkownikia <strong>{user_name}</strong>. Sprawdź e-mail: <b>{email}</b> i kliknij w link w wiadomości w celu aktywacji konta. <b>Uwaga:</b> Sprawdź folder ze spamem.)Z	user_nameemailu[   Wystąpił problem z wysłaniem wiadomości na e-mail: {email}, sprawdź czy jest poprawny.r8   )r   usernamer   r4   r   r   r   r   
make_token	is_securer   sendr   r&   r   r'   )r(   r-   to_emailZmail_subjectmessager8   r.   r.   r/   activateEmail)   s   r@   c                 C      | j  S Nis_authenticatedr-   r.   r.   r/   <lambda>:       rF   r    N)	login_urlredirect_field_namec                 C   s   z| j d }W n   d}Y | jjrt|S | jdkrF| jd }| jd }t| ||d}|d ur<|jr<t| | t|S t	
| d tdS t }t| d	d
|iS )Nnextz/users/profilePOSTr:   passwordr:   rL   uD   Nazwa użytkownika lub hasło są nieprawidłowe! Spróbuj ponownie.r   zusers/login.htmlform)GETr-   rD   r   methodrK   r   r$   r   r   r'   r   r   r   )r(   	next_pager:   rL   r-   Z	LoginFormr.   r.   r/   
login_view:   s"   



rR   c                 C   s$   | j jr
t| d t|  tdS )Nu   Pomyślnie wylogowano.r   )r-   rD   r   r&   r   r   )r(   r.   r.   r/   logout_viewR   s   rS   c                 C   rA   rB   rC   rE   r.   r.   r/   rF   Z   rG   c                 C   sv   | j dkr0t| j}| r)|jdd}d|_|  t| ||jd t	dS t
| d nt }t| dd|iS )	NrK   F)commitr8   r      Błąd w formularzu.zusers/register.htmlrN   )rP   r   rK   is_validr%   r$   r@   cleaned_datar"   r   r   warningr   )r(   ZRegisterFormr-   r.   r.   r/   register_viewZ   s   

rY   r   )rH   c                 C   sh   | j jrtj d}ntjj| j dd}| jdd}t	|d}|
|}t| d| j j|dS )NdaterE   pager      zusers/profile.html)ZuserNameorders)r-   is_staffr   r!   allorder_byfilterrO   r"   r   r[   r   
first_name)r(   r]   r[   	paginatorr.   r.   r/   profile_viewl   s   

rd   c                 C   s   | j }| jdkr6t|| j}| r0|  t| |j| jd d}t| | t	
| d tdS t	| d t|}t| dd|iS )	NrK   new_password1rM   u   Hasło zostało zmienioner    rU   zusers/password_change.htmlrN   )r-   rP   r   rK   rV   r%   r   r:   r   r   r&   r   rX   r   )r(   r-   PasswordChangeFormr.   r.   r/   password_change_viewz   s   

rg   c                 C   rA   rB   rC   rE   r.   r.   r/   rF      rG   c           	      C   s  | j dkrt| j}| rb|jd }t jt|d	 }|r^d}t
d|t| jtt|jt||  r:dndd}t|||jgd	}| rXt| td
 tdS t| d tdS t|j D ]\}}|dkr~|d dkr~t| d qiqit }t| dd|iS )NrK   r8   r9   u   Reset hasłaz!users/reset_password_message.htmlr1   r2   r3   r6   u3   Wysłano wiadomość z linkiem resetującym hasło.u   Błąd wysyłania wiadomościr   Zcaptchar   zThis field is required.u    Musisz przejść test ReCaptcha!users/password_reset.htmlrN   )rP   r   rK   rV   rW   r   r!   ra   r   firstr   r   r4   r   r   r   r   r;   r<   r   r8   r=   r   r&   r   r'   r   listerrorsitemsr   )	r(   rN   
user_emailZassociated_usersubjectr?   r8   keyr'   r.   r.   r/   password_reset_view   s6   


rp   c                 C   s   t  }ztt|}|jj|d}W n   d }Y |d ur_t||r_| jdkrSt|| j	}|
 rCd|_|  t| d tdS t|j D ]}t| | qJt|}t| dd|iS t| d t| d	 tdS )
Nr   rK   Tu?   Twoje hasło zostało zmienione. Teraz możesz się zalogować.r   rh   rN   u   Link wygasł.u   Błąd. Przekierowanie...)r   r   r   r!   r"   r   r#   rP   r   rK   rV   r$   r%   r   r&   r   rj   rk   valuesr'   r   )r(   r)   r*   r+   r,   r-   rN   r'   r.   r.   r/   passwordResetConfirm   s*   
rr   )3django.httpr   django.shortcutsr   r   django.contrib.authr   r   r   r   django.contrib.auth.decoratorsr	   r
   django.contribr   django.contrib.sites.shortcutsr   django.utils.htmlr   formsr   r   r   r   django.db.models.query_utilsr   django.core.paginatorr   tokensr   django.utils.encodingr   r   django.utils.httpr   r   django.template.loaderr   django.core.mailr   Zmain.modelsr   r0   r@   rR   rS   rY   rd   rg   rp   rr   r.   r.   r.   r/   <module>   s<    




 