
    '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  e       Z G d dej                        Zy	)
    )serializers)Company)get_user_model)UserCompanyRole)UserProfileSerializer)UserProfilec                       e Zd Z ej                  d      Z ej                   ej                         d      Z G d d      Zd Z	y)UpdateUserSerializerF)required)childr   c                       e Zd ZeZddgZy)UpdateUserSerializer.Metaprofilecompany_rolesN)__name__
__module____qualname__Usermodelfields     I/var/www/html/dp2/backend_v2.1/server/apps/core/serializers/updateuser.pyMetar      s    
r   r   c                 V   |j                  di       }|j                  dg       }|rOt        j                  j                  |      \  }}dD ]  }||v st	        ||||           |j                          |rt        j                  j                  |      }|D 	ci c]  }	|	j                  |	 }
}	|D ch c]  }|d   	 }}g }g }|D ]_  }|d   |d   }}||
v r2|
|   j                  |k7  s$||
|   _	        |j                  |
|          C|j                  t        |||             a |r!t        j                  j                  |dg       |rt        j                  j                  |       t        j                  j                  |      j                  |      j                          t        t         j                  j                  |	            }|j"                  j%                  |       |j&                  |vr|r|d
   nd |_        |j                          |S c c}	w c c}w )Nr   r   )user)
first_name	last_namephone_numberimage
company_idrole_id)r   r!   r"   )company_id__in)id__inr   )popr   objectsget_or_createsetattrsaver   filterr!   r"   appendbulk_updatebulk_createexcludedeletelistr   	companiessetactive_company_idactive_company)selfinstancevalidated_dataprofile_datar   r   _fieldexisting_rolesrexisting_mapcrnew_company_idsroles_to_updateroles_to_createcidridr1   s                     r   updatezUpdateUserSerializer.update   s   %)))R8&**?B?$,,:::IJGQML(GUL,?@ N LLN,44;;;JN5CD^ALL!O^LD:GH-Br,/-OH O O#l+R	]S,&#C(00C747S)1'..|C/@A#**?UXbe+fg $ ''33Oi[Q''33OD##***9AAQ`AahhjW__33?3KLI""9-))@:C)A,'; EHs   H!7H&N)
r   r   r   r   	DictFieldr   	ListFieldr   r   rD   r   r   r   r
   r
      sE    #k##U3G)K))#k##%M
 
*r   r
   N)rest_frameworkr   apps.companies.modelsr   django.contrib.authr   apps.permissions.modelsr   apps.userprofile.serializersr   apps.userprofile.modelsr   r   ModelSerializerr
   r   r   r   <module>rN      s1    & ) . 3 > /7;66 7r   