
    ?{ib                         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  e       Z G d d	ej                         Zy
)    )serializers)get_user_model)CompanyType)PhoneUniquenessService)UserCompanyRole)sync_companiesset_active_company)UserProfilec                       e Zd Z ej                  d      Z ej                   ej                         d      Z G d d      Z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                 .   |j                  di       }|j                  d      }|r<	 t        j                  || j                  r| j                  j                  nd        |S |S # t
        $ r'}t        j                  ddt        |      ii      d }~ww xY w)Nr   phone_number)exclude_user_id)	getr   assert_uniqueinstanceid
ValueErrorr   ValidationErrorstr)selfattrsprofile_datar   es        r   validatezUpdateUserSerializer.validate   s    yyB/#''7
&44 8<DMM$4$44 u  !11&A 3  s   9A$ $	B-"BBc                 V   | j                   j                  d      }t        |xr |j                  j                        }g }|r4|j                  j
                  j                  t        j                        }|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)                  |       |r?t        j                  j                  |      j+                  |
      j-                          na|r_t        j                  j                  |t        j                  |j/                  dd            j+                  |
      j-                          t1        |       t3        |       |S c c}w c c}w )Nrequest)company__company_typer   r   )user)
first_name	last_namer   image
company_idrole_id)r/   r3   r4   )company_id__inT)flat)r/   r.   r5   )contextr    boolr/   is_superuserr   filterr   
DEALERSHIPpopr
   objectsget_or_createsetattrsaver   r3   r4   appendbulk_updatebulk_createexcludedeletevalues_listr   r	   )r'   r"   validated_datar-   is_super_admingroup_admin_membershipsr)   r   r   _fieldexisting_rolesrexisting_mapcrnew_company_idsroles_to_updateroles_to_createcidrids                       r   updatezUpdateUserSerializer.update0   s   ,,""9-gC',,*C*CD"$&-ll&@&@&G&G&1&<&< 'H '# &)))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#**'!)'*$') $ ''33Oi[Q''33OD''..! / '#2  &(*#++22%.9.D.D'>'J'J(!% (K ( 3  g'6  fh8$x( m EHs   J!-J&N)r   r   r   r   	DictFieldr   	ListFieldr   r   r+   rU   r   r   r   r   r      sK    #k##U3G)K))#k##%M
 
(Lr   r   N)rest_frameworkr   django.contrib.authr   apps.companies.constantsr   apps.core.servicesr   apps.permissions.modelsr   apps.permissions.servicesr   r	   apps.userprofile.modelsr
   r   ModelSerializerr   r   r   r   <module>r`      s8    & . 0 5 3 H / m;66 mr   