
    ?{i                     "   d dl Z d dl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 d dlmZmZ d d	lmZ d d
lmZ  e       Zej,                  Zej0                  Z ej4                  e      ZdZd Zd Z G d de      Z  G d de      Z!y)    N)settings)transaction)APIView)Response)get_user_model)send_new_user_email)CreateUserSerializerUpdateUserSerializerAnyPermission)CompanyHistoryz5You can only assign users to companies you belong to.c                 R    | j                  dg       D ch c]  }|d   	 c}S c c}w )Ncompany_roles
company_id)get)payloadrs     E/var/www/html/dp2/backend_v2.1/server/apps/core/views/registration.py_get_company_idsr      s+    %,[["%EF%EAlO%EFFFs   $c                 z   | j                   j                  d      xs i }t        |d      r|j                         j	                  d      }t        |t              rt        j                  |      n|}t        |t              si }| j                  j                  d      }|r|j                  di        ||d   d<   |S )Ndatareadzutf-8profile_imageprofileimage)r   r   hasattrr   decode
isinstancestrjsonloadsdictFILES
setdefault)requestrawr   r   s       r   _get_payloadr'      s    
,,

6
"
(bCsFhhj(!+C!5djjo3Ggt$MM%%o6M9b)&3	7#N    c                   >    e Zd Zg ZeZd Zej                  d        Z	y)RegistrationViewc                     t        dd      gS )Ncreate_userscreate_dealerships_adminsr   selfs    r   get_permissionsz RegistrationView.get_permissions3   s    +
 	
r(   c                    t        |      }t        j                  |       t        |      }|j                  j
                  sTt        |j                  j                  j                  dd            }|j                  |      st        dt        id      S | j                  |d|i      }|j                  d	       |j                         }d
}	t        |dd      }
t!        |t#        |      |
|	       t        ddid      S )NidTflatdetail  statusr%   )r   contextraise_exceptionz Welcome to the Dealership System_generated_passwordzUse Your Current Password)usercompany_idsgenerated_passwordsubjectmessagezQUser Created Successfully! Ask user to check email for Verification and Password.   )r'   loggerinfor   r=   is_superuserset	companiesvalues_listissubsetr   NOT_BELONGING_RESPONSEserializer_classis_validsavegetattrr   list)r/   r%   argskwargsr   r>   user_company_ids
serializerr=   r@   r?   s              r   postzRegistrationView.post;   s    w'G&w/||(("7<<#9#9#E#EdQU#E#VW''(8956 
 **( + 

 	D1 4$!'
 	[)1		
 kl
 	
r(   N)
__name__
__module____qualname__permission_classesr	   rK   r0   r   atomicrT    r(   r   r*   r*   /   s-    +
 (
 (
r(   r*   c                   >    e Zd Zg ZeZd Zej                  d        Z	y)UserUpdateViewc                     t        dd      gS )Nmanage_usersedit_dealerships_adminsr   r.   s    r   r0   zUserUpdateView.get_permissionsj   s    )
 	
r(   c                    	 t         j                  j                  |      }t        |      }t        |      }|j                  j                  sTt        |j                  j                  j                  dd            }|j                  |      st        dt        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d|i      }|j'                  d       |j)                          |j                  j*                  xs7 |j*                  xs) |j                  j-                  d      j/                         }|
H|	|
k7  rC|rAt0        j                  j3                  ||j                  dd|j4                  | d|	 d|
        t        ddid      S # t         j                  $ r( t	        |       t	        |       t        ddid      cY S w xY w)N)r2   r5   zUser not found.i  r7   r2   Tr3   r6   phone_numberr   
first_name 	last_name r%   )r   partialr9   r:   updatedUserProfilez Phone number changed from z to )company
updated_byaction
model_name	object_iddetailsrA   zUser updated successfully.   )Userobjectsr   DoesNotExistprintr   r'   r   r=   rE   rF   rG   rH   rI   rJ   rN   r   striprK   rL   rM   active_companyorder_byfirstr   creater2   )r/   r%   user_idrP   rQ   r=   r   r>   rR   	old_phone	new_phonerw   last	full_namerS   ri   s                   r   patchzUserUpdateView.patchs   s2   	G<<##w#/D w'&w/||(("7<<#9#9#E#EdQU#E#VW''(8956 
 DLL.$?	KK	2.22>B	lB7=2t||["5;gQtf%++-	**(	 + 

 	D1 LL'' 22NN##D)//1 	  Y)%;""))"<< (''$+%@4PY{[ *  $@A#NNa    	G$K&MX'89#FF	Gs    H 8I IN)
rU   rV   rW   rX   r
   rK   r0   r   rY   r~   rZ   r(   r   r\   r\   f   s/    +
 3O 3Or(   r\   )"r    logging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   rp   EMAIL_HOST_USERemailREACT_DOMAINreact_domain	getLoggerrU   rC   rJ   r   r'   r*   r\   rZ   r(   r   <module>r      s        ! ( , . ? 7 0   $$			8	$P G$5
w 5
nAOW AOr(   