o
    pvhW;                     @   s  d dl mZmZ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mZmZmZ d dl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mZmZmZm Z  dd Z!edddd Z"edddd Z#edddd Z$G dd deZ%G dd deZ&G dd deZ'G dd deZ(edddd Z)edddd  Z*eddd!d" Z+eddd#d$ Z,eddd%d& Z-eddd'd( Z.eddd)d* Z/eddd+d$ Z,eddd,d- Z0eddd.d/ Z1eddd0d1 Z2eddd2d3 Z3eddd4d5 Z4d6S )7    )renderredirectget_object_or_404)login_required)loginlogoutauthenticate)messages)PasswordResetViewPasswordResetDoneViewPasswordResetConfirmViewPasswordResetCompleteView)reverse_lazy)AuthenticationFormPasswordResetFormUserChangeFormUserCreationForm)UserGroup   )CustomUserCreationFormCustomUserChangeForm	GroupFormGroupPermissionFormEditProfileFormc                 C   s   ddl m } | jdkrMt| | jd}| rF| }t| | |j rB|j	 j
}|dkr2tdS |dkr:tdS |d	v rBtd
S td
S t| d nt }|| jd}t| d|S )Nr   )datetimePOST)dataSaleszsales:make_sale
Supervisorzsales:dashboard)ManagerAdministrator	dashboardz/Invalid username or password. Please try again.)formcurrent_yearzauthapp/login.html)r   methodr   r   is_validget_userr   groupsexistsfirstnamer   r	   errornowyearr   )requestr   r#   user
user_groupcontext r3   )/var/www/html/hyperkenya/authapp/views.py
user_login   s*   


r5   z/auth/login/)	login_urlc                 C   f   t t|d}| jdkr%t| j|d}| r$|  t| d t	dS nt|d}t
| d||dS )N)pkr   instancez"User profile updated successfully.	user_listzauthapp/user_edit.html)r#   r0   r   r   r%   r   r   r&   saver	   successr   r   )r/   r8   r0   r#   r3   r3   r4   	user_edit/   s   

r?   c                 C   s   t |  tdS )Nr   )r   r   r/   r3   r3   r4   user_logout?   s   rA   c                 C   s
   t | dS )Nzauthapp/profile.html)r   r@   r3   r3   r4   profileE   s   
rB   c                   @   s    e Zd ZdZedZdZdZdS )CustomPasswordResetViewzauthapp/password_reset.htmlpassword_reset_donez!authapp/password_reset_email.htmlz"authapp/password_reset_subject.txtN)__name__
__module____qualname__template_namer   success_urlemail_template_namesubject_template_namer3   r3   r3   r4   rC   J   s
    rC   c                   @      e Zd ZdZdS )CustomPasswordResetDoneViewz authapp/password_reset_done.htmlNrE   rF   rG   rH   r3   r3   r3   r4   rM   P       rM   c                   @   s   e Zd ZdZedZdS )CustomPasswordResetConfirmViewz#authapp/password_reset_confirm.htmlpassword_reset_completeN)rE   rF   rG   rH   r   rI   r3   r3   r3   r4   rP   S   s    rP   c                   @   rL   )CustomPasswordResetCompleteViewz$authapp/password_reset_complete.htmlNrN   r3   r3   r3   r4   rR   W   rO   rR   c              
   C   s  t j }tj }t }i }| jdkrNd| jv rKt| j| j}| rI|j	dd}|	  | j
d}|j| |	  t| d tdS nd| jv r| jd	}tt |d
}t| j| j|d}	|	 r|	j	dd}
|
	  | j
d}|
j| |
	  t| d tdS t| d nd| jv rN| jd	}tt |d
}| jdst| d tdS zu| jd|j|_| jdd|_| jdd|_| jdd|_d| jv |_| jjrd| jv |_d| jv |_d| jv r|| jkrd|_|	  | j
d}|j| d| jv rt| d|j d t| d|j d tdW S  tyM } zt| dt|  tdW  Y d }~S d }~ww |D ]}|j |vr`t|d||j < qP||||d }t!| d!|S )"Nr   add_userF)commitr(   User added successfullyr;   	edit_useruser_ididr9   User updated successfullyz+Error updating user. Please check the form.advanced_edit_userzauth.change_userz)You do not have permission to edit users.username
first_name 	last_nameemail	is_activeis_staffis_superuserlock_accountreset_passwordz$Password reset will be required for z on next login.zUser z0 has been updated successfully with all changes.zError updating user: )usersadd_user_formedit_user_formsavailable_groupszauthapp/user_list.html)"r   objectsallr   r   r%   r   FILESr&   r=   getlistr(   setr	   r>   r   getr   r   r,   r0   has_permr\   r]   r_   r`   ra   rc   rb   info	ExceptionstrrY   r   )r/   rf   ri   rg   rh   new_userselected_groupsrW   user_instanceedit_user_formupdated_userer0   r2   r3   r3   r4   r;   \   s   




r;   c                 C   r7   )NrX   r   r9   rZ   r;   zauthapp/edit_user.html)r#   user_objr<   )r/   rW   r0   r#   r3   r3   r4   rV         

rV   c                 C   P   | j dkrt| j}| r|  t| d tdS nt }t| dd|iS )Nr   rU   r;   zauthapp/add_user.htmlr#   )	r%   r   r   r&   r=   r	   r>   r   r   r/   r#   r3   r3   r4   rS         

rS   c                 C      t j }t| dd|iS Nzauthapp/group_list.htmlr(   r   rj   rk   r   r/   r(   r3   r3   r4   
group_list      
r   c                 C   r7   )NrX   r   r9   Group updated successfullyr   zauthapp/edit_group.html)r#   	group_objr   r   r%   r   r   r&   r=   r	   r>   r   r   r/   group_idgroupr#   r3   r3   r4   
edit_group   r{   r   c                 C   r|   )Nr   zGroup added successfullyr   zauthapp/add_group.htmlr#   	r%   r   r   r&   r=   r	   r>   r   r   r}   r3   r3   r4   	add_group   r~   r   c                 C   s(   t t|d}|  t| d tdS )NrX   zUser deleted successfullyr;   )r   r   deleter	   r>   r   )r/   rW   r0   r3   r3   r4   delete_user   s   r   c                 C   r   r   r   r   r3   r3   r4   r   	  r   c                 C   r|   )Nr   zGroup created successfullyr   zauthapp/group_create.htmlr#   r   r}   r3   r3   r4   group_create  s   

r   c                 C   r7   )NrX   r   r9   r   r   zauthapp/group_edit.html)r#   r   r   r   r3   r3   r4   
group_edit  s   

r   c                 C   sB   t t|d}| jdkr|  t| d tdS t| dd|iS )NrX   r   zGroup deleted successfullyr   z!authapp/group_delete_confirm.htmlr   )r   r   r%   r   r	   r>   r   r   )r/   r   r   r3   r3   r4   group_delete,  s   
r   c                 C   sj   t t|d}| jdkr't| j|d}| r&|  t| d t	d|dS nt|d}t
| d||dS )	NrX   r   r9   z Permissions updated successfullygroup_detail)r   zauthapp/group_detail.html)r   r#   )r   r   r%   r   r   r&   r=   r	   r>   r   r   r   r3   r3   r4   r   7  s   

r   c                 C   s  | j dkrt| j| j| jd}| r| }d| jv r| jd }dd l}ddlm	} ddl
m} |j|jd}|j|dd	 |j|jd
 }d|j | }	|jd|	}
|j|d|j d}dd l}||ddD ]}z|| W qq   Y qq||
|}|| jd< t| d tdS t| d nt| jd}d }d| jv rddlm	} |j | jd  }||d}t| d|S )Nr   r9   profile_picturer   )settings)default_storageprofile_picturesT)exist_okr   user_z.**z+Your profile has been updated successfully.edit_profilez Please correct the errors below.)r#   profile_picture_urlzauthapp/edit_profile.html)r%   r   r   rl   r0   r&   r=   osdjango.confr   django.core.files.storager   pathjoin
MEDIA_ROOTmakedirssplitextr+   rY   globreplaceremovesessionr	   r>   r   r,   	MEDIA_URLr   )r/   r#   r0   r   r   r   r   
upload_dirfile_extensionfilename	file_pathold_file_pathr   old_file
saved_pathr   r2   r3   r3   r4   r   F  sF   




r   N)5django.shortcutsr   r   r   django.contrib.auth.decoratorsr   django.contrib.authr   r   r   django.contribr	   django.contrib.auth.viewsr
   r   r   r   django.urlsr   django.contrib.auth.formsr   r   r   r   django.contrib.auth.modelsr   r   formsr   r   r   r   r   r5   r?   rA   rB   rC   rM   rP   rR   r;   rV   rS   r   r   r   r   r   r   r   r   r   r3   r3   r3   r4   <module>   s\     



g





	





