
    <xi                         d dl Z d dlmZ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mZ d d	lmZ d d
lmZmZ d dlmZ  e j2                  e      Z G d dej8                        Zy)    N)IntegrityErrortransaction)timezone)viewsets)ValidationError)CompanyType)DealershipSerializerDealershipCreateSerializer)UserCompanyRoleRole)CompanyPermission)set_active_companysync_companies)LimitOffsetPaginationc                   V    e Zd ZeZg ZegZd Zd Z	d Z
ej                  d        Zd Zy)DealershipViewSetc                 N    | j                   dv rt        d      gS t        d      gS )Ncreateupdatepartial_updatedestroy#dealership_group_create_dealerships!dealership_group_view_dealerships)actionr   selfs    M/var/www/html/dp2/backend_v2.1/server/apps/companies/views/dealership_view.pyget_permission_classesz(DealershipViewSet.get_permission_classes   s-    ;;KK%&KLMM!"EFGG    c                 ~    | j                   j                  j                  j                  t        j
                        S )Ncompany_type)requestuser	companiesfilterr   
DEALERSHIPr   s    r   get_querysetzDealershipViewSet.get_queryset    s3    ||  **11$// 2 
 	
r    c                 6    | j                   dv rt        S t        S )Nr   )r   r
   r	   r   s    r   get_serializer_classz&DealershipViewSet.get_serializer_class%   s    ;;KK--##r    c                    	 |j                  t        j                        }t        j                  j                  |      j                         }|st        j                  d       y | j                  j                  }g }t        j                  j                  ||j                  ||j                  j                  |j                  j                   t#        j$                         dddd|j                  j&                  |j(                  |d      \  }}|j+                  |       t-        |       t/        ||       y # t0        $ r/}dt3        |      j5                         v rt7        d	d
i      |d }~ww xY w)Nr"   )companyzGet No RoleTF)role
first_name	last_name
invited_at	is_active
is_defaultis_owneris_availablephonedesignation
created_by)r%   
company_iddefaultsuniquename+A dealership with this name already exists.)saver   r(   r   objectsr'   firstloggerwarningr$   r%   r   get_or_createidprofiler/   r0   r   nowphone_numberr<   appendr   r   r   strlowerr   )	r   
serializerinstancer.   r%   memberships
membershipcreatedes	            r   perform_createz DealershipViewSet.perform_create*   sQ   2	!(33 ' H <<&&  ' eg  .<<$$DK"1"9"9"G"G#;;!%!8!8 $ 6 6!) $!&$#' LL55"&)) "&! #H #J. z*4 t[1 	3q6<<>)%I'   G	s   A%D< (CD< <	E4*E//E4c                     	 |j                  t        j                         y # t        $ r/}dt	        |      j                         v rt        ddi      |d }~ww xY w)Nr"   r;   r<   r=   )r>   r   r(   r   rI   rJ   r   )r   rK   rP   s      r   perform_updatez DealershipViewSet.perform_update`   sd    		OO(33    	3q6<<>)%I'   G	s    # 	A*AAN)__name__
__module____qualname__r	   serializer_classpermission_classesr   pagination_classesr   r)   r+   r   atomicrQ   rS    r    r   r   r      sG    +/0H


$
 3 3j
r    r   )logging	django.dbr   r   django.utilsr   rest_frameworkr   rest_framework.exceptionsr   apps.companies.constantsr   apps.companies.serializersr	   r
   apps.permissions.modelsr   r   apps.permissions.permissionsr   apps.permissions.servicesr   r   utils.paginationsr   	getLoggerrT   rA   ModelViewSetr   r[   r    r   <module>ri      sR     1 ! # 5 0
 : : H 3 
		8	$T-- Tr    