B
    g%                 @   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l*m+Z+ d dl,Z,dd Z-dd Z.edd ddddd Z/dd Z0ed d dddd!d" Z1ed#d$d%d& Z2ed#d$d'd( Z3ed)d d#ddd*d+ Z4d,d- Z5d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)Order)CartNc             C   s   t  }ytt|}|jj|d}W n   d }Y nX |d k	rlt||rld|_|  t	
| d tdS t	| d tdS )N)pkTuH   Dziękujemy za weryfikację adresu e-mail. Teraz możesz się zalgować.zusers:loginu    Nieprawidłowy link aktywacyjny!zusers:profile)r   r   r   objectsgetr   check_token	is_activesaver   successr   error)requestuidb64tokenUseruiduser r,   (/var/www/pobierzsterownik/users/views.pyactivate   s    
r.   c             C   s   d}t d|jt| jtt|jt|| 	 r4dndd}t
|||gd}| rnt| td||d n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.)r4   )r   usernamer   r1   r   r   r   r   
make_token	is_securer   sendr   r$   r   r%   )r&   r+   to_emailZmail_subjectmessager4   r,   r,   r-   activateEmail+   s    r;   c             C   s   | j  S )N)is_authenticated)r+   r,   r,   r-   <lambda><       r=   zusers:profile)	login_urlredirect_field_namec             C   s   y| j d }W n   d}Y nX | jjr0t|S | jdkr| jd }| jd }t| ||d}|d k	r|jrt| | |j	j
}|rt|}t| }x | D ]\}}	|||	 qW t|S t| d tdS nt }
t| d	d
|
iS d S )Nnextz/users/profilePOSTr5   password)r5   rC   uD   Nazwa użytkownika lub hasło są nieprawidłowe! Spróbuj ponownie.zusers:loginzusers/login.htmlform)GETr+   r<   r   methodrB   r   r"   r   profileold_cartjsonloadsr   itemsdb_addr   r%   r   r   r   )r&   	next_pager5   rC   r+   Z
saved_cartZconverted_cartcartkeyvalueZ	LoginFormr,   r,   r-   
login_view<   s.    






rQ   c             C   s$   | j jrt| d t|  tdS )Nu   Pomyślnie wylogowano.zusers:login)r+   r<   r   r$   r   r   )r&   r,   r,   r-   logout_viewZ   s    rR   c             C   s   | j  S )N)r<   )r+   r,   r,   r-   r=   b   r>   c             C   sv   | j dkr`t| j}| rR|jdd}d|_|  t| ||jd t	dS t
| d nt }t| dd|iS )	NrB   F)commitr4   zusers:loginu   Błąd w formularzu.zusers/register.htmlrD   )rF   r   rB   is_validr#   r"   r;   cleaned_datar    r   r   warningr   )r&   ZRegisterFormr+   r,   r,   r-   register_viewb   s    

rW   zusers:login)r?   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date)r+   z-datepager      zusers/profile.html)ZuserNameorders)r+   is_staffr   r   allorder_byfilterrE   r    r   rY   r   
first_name)r&   r[   rY   	paginatorr,   r,   r-   profile_viewt   s    

rb   c             C   s   | j }| jdkrlt|| j}| r`|  t| |j| jd d}t| | t	
| d tdS t	| d t|}t| dd|iS )	NrB   new_password1)r5   rC   u   Hasło zostało zmienionezusers:profileu   Błąd w formularzu.zusers/password_change.htmlrD   )r+   rF   r   rB   rT   r#   r   r5   r   r   r$   r   rV   r   )r&   r+   PasswordChangeFormr,   r,   r-   password_change_view   s    

re   c             C   s   | j  S )N)r<   )r+   r,   r,   r-   r=      r>   c       	      C   s  | j dkrt| j}| r|jd }t jt|d	 }|rd}t
d|t| jtt|jt||  rtdndd}t|||jgd	}| rt| td
 nt| d tdS x<t|j D ]*\}}|dkr|d dkrt| d qqW t }t| dd|iS )NrB   r4   )r4   u   Reset hasłaz!users/reset_password_message.htmlr/   r0   )r+   r1   r*   r(   r2   )r3   u3   Wysłano wiadomość z linkiem resetującym hasło.u   Błąd wysyłania wiadomościzusers:loginZcaptchar   zThis field is required.u    Musisz przejść test ReCaptcha!zusers/password_reset.htmlrD   )rF   r   rB   rT   rU   r   r   r_   r   firstr   r   r1   r   r   r   r   r6   r7   r   r4   r8   r   r$   r   r%   r   listerrorsrK   r   )	r&   rD   
user_emailZassociated_usersubjectr:   r4   rO   r%   r,   r,   r-   password_reset_view   s0    


rk   c             C   s   t  }ytt|}|jj|d}W n   d }Y nX |d k	rt||r| jdkrt|| j	}|
 rd|_|  t| d tdS x"t|j D ]}t| | qW t|}t| dd|iS t| d t| d	 tdS )
N)r   rB   Tu?   Twoje hasło zostało zmienione. Teraz możesz się zalogować.zusers:loginzusers/password_reset.htmlrD   u   Link wygasł.u   Błąd. Przekierowanie...)r   r   r   r   r    r   r!   rF   r   rB   rT   r"   r#   r   r$   r   rg   rh   valuesr%   r   )r&   r'   r(   r)   r*   r+   rD   r%   r,   r,   r-   passwordResetConfirm   s*    

rm   )6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   Z	main.cartr   rI   r.   r;   rQ   rR   rW   rb   re   rk   rm   r,   r,   r,   r-   <module>   s4   !