
    ;i                         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	 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Z e	       Zej*                  Zej.                  Z G d de      Z G d de      Zy
)    )settings)transaction)APIView)Response)get_user_model)send_new_user_email)CreateUserSerializerUpdateUserSerializerCompanyPermission)CompanyHistoryNc                   @    e Zd ZegZeZd Zej                  d        Z
y)RegistrationViewc                     t        d      gS )Ncreate_usersr   selfs    E/var/www/html/dp2/backend_v2.1/server/apps/core/views/registration.pyget_permissionsz RegistrationView.get_permissions       !.122    c                 p   t        j                  |j                  d         }|j                  j	                  d      |d   d<   |j	                  dg       D ch c]  }|d   	 }}|j
                  j                  sPt        |j
                  j                  j                  dd	            }|j                  |      st        d
did      S | j                  |      }|j                  d       |j                         }	d}
t        |	t!        |      |	j"                  |
       t        ddid      S c c}w )Ndataprofile_imageprofileimagecompany_roles
company_ididTflatdetail5You can only assign users to companies you belong to.  status)r   raise_exceptionz Welcome to the Dealership System)usercompany_idsgenerated_passwordsubjectmessagezQUser Created Successfully! Ask user to check email for Verification and Password.   )jsonloadsr   FILESgetr)   is_superuserset	companiesvalues_listissubsetr   serializer_classis_validsaver   list_generated_password)r   requestargskwargspayloadrr*   user_company_ids
serializerr)   r,   s              r   postzRegistrationView.post   s.   **W\\&12&-mm&7&7&H	7#07OR0PQ0P1q0PQ||(("7<<#9#9#E#EdQU#E#VW''(89VW 
 ***8
D1 4[)#77		
 kl
 	
/ Rs   D3N)__name__
__module____qualname__r   permission_classesr	   r8   r   r   atomicrD    r   r   r   r      s0    +,+3 
 
r   r   c                   @    e Zd ZegZeZd Zej                  d        Z
y)UserUpdateViewc                     t        d      gS )Nmanage_usersr   r   s    r   r   zUserUpdateView.get_permissions?   r   r   c                    	 t         j                  j                  |      }t        j                  |j                  j                  dd            }|j                  j                  d      }|r||d	   d
<   |j                  dg       D ch c]  }|d   	 }	}|j                  j                  sPt        |j                  j                  j                  dd            }
|	j                  |
      st	        ddid      S t        |j                   dd       }|j                  d	i       j                  d      }t        |j                   dd      xs d}t        |j                   dd      xs d}| d| j#                         }| j%                  ||d      }|j'                  d       |j)                          |Z||k7  rUt*        j                  j-                  |j                  j.                  |j                  dd|j0                  | d| d|        t	        ddid       S # t         j                  $ r t	        ddid      cY S w xY wc c}w )!N)r   r"   zUser not found.i  r%   r   z{}r   r   r   r   r   r   Tr    r#   r$   phone_number
first_name 	last_name )r   partialr'   updatedUserProfilez Phone number changed from z to )company
updated_byaction
model_name	object_iddetailsr-   zUser updated successfully.   )Userobjectsr2   DoesNotExistr   r/   r0   r   r1   r)   r3   r4   r5   r6   r7   getattrr   stripr8   r9   r:   r   createactive_companyr   )r   r=   user_idr>   r?   r)   r@   r   rA   r*   rB   	old_phone	new_phonefirstlast	full_namerC   s                    r   patchzUserUpdateView.patchB   s2   	G<<##w#/D **W\\--fd;<))/:*7GIw'07OR0PQ0P1q0PQ||(("7<<#9#9#E#EdQU#E#VW''(89VW 
 DLL.$?	KK	2.22>B	lB7=2t||["5;gQtf%++-	**4gt*L
D1 Y)%;""))33"<< (''$+%@4PY{[ *  $@A#NNK    	GX'89#FF	G Rs    H" 
I
""IIN)rE   rF   rG   r   rH   r
   r8   r   r   rI   rl   rJ   r   r   rL   rL   ;   s2    +,+3 (O (Or   rL   )django.confr   	django.dbr   rest_framework.viewsr   rest_framework.responser   django.contrib.authr   apps.core.utils.send_user_emailr   apps.core.serializersr	   r
   apps.permissions.permissionsr   apps.companies.modelsr   r/   r_   EMAIL_HOST_USERemailREACT_DOMAINreact_domainr   rL   rJ   r   r   <module>rz      s^      ! ( , . ? L : 0    $$%
w %
P0OW 0Or   