
    uniE                         d dl mZ d dlmZ d dlZ ej
                  e      Z G d de      Z G d de      Z	 G d d	e      Z
y)
    )models)AbstractTimeStampModelNc                       e Zd ZdZ ej
                  d      Z ej
                  dd      Z ej                  d      Z	d Z
 G d d	      Zy
)
PermissionzWhat users can do   
max_lengthT)r	   uniquedefaultc                     | j                   S )N)nameselfs    @/var/www/html/dp2/backend_v2.1/server/apps/permissions/models.py__str__zPermission.__str__   s    yy    c                       e Zd ZdZdZdgZy)Permission.Metar   Permissionsr   N)__name__
__module____qualname__verbose_nameverbose_name_pluralordering r   r   Metar      s    #+8r   r   N)r   r   r   __doc__r   	CharFieldr   codenameBooleanField	is_activer   r   r   r   r   r   r      sL    6s+Dv3t<H###D1I r   r   c                      e Zd ZdZ ej
                  d      Z ej                  dd      Z ej                  dej                  d      Z ej                  edd	      Z ej                  d
      Zd Z G d d      Zy)RolezGroup of permissionsr   r   T)blanknullcompanies.Companyroles	on_deleterelated_name)r&   r,   r   c                 L    | j                   j                   d| j                   S )N - )companyr   r   s    r   r   zRole.__str__   s"    ,,##$C		{33r   c                   $    e Zd ZddgZdZdZddgZy)	Role.Metar   r/   r%   RolesNr   r   r   unique_togetherr   r   r   r   r   r   r   r1   "   s!    !9-%v&r   r   N)r   r   r   r   r   r    r   	TextFielddescription
ForeignKeyCASCADEr/   ManyToManyFieldr   permissionsr"   r#   r   r   r   r   r   r%   r%      s~    6s+D"&""D9Kf 3v~~\cdG(&((4gVK###D1I4' 'r   r%   c                   *    e Zd ZdZ ej
                  dej                  d      Z ej
                  dej                  d      Z ej
                  e	ej                  ddd	      Z ej                  d
dd      Z ej                  d
dd      Z ej                  ddd      Z ej                  ddd      Z ej                  d
dd      Z ej&                  dd      Z ej&                  dd      Z ej,                  dddd      Z ej,                  dddd      Z ej,                  dddd      Z ej,                  dddd      Z ej
                  dej                  ddd	      Zd Z fdZ fdZd Zd Z d Z! G d d      Z" xZ#S )UserCompanyRolez5Company membership with role and per-company identityz	core.Usercompany_rolesr*   r(   
user_rolesTuser_assignments)r+   r'   r&   r,   d   )r	   r'   r&   zcompany_members/)	upload_tor'   r&   2   )r'   r&   z*Whether the membership is currently active)r   r'   r&   	help_textFz*Whether this is the user's default companyz)Whether this is the company account ownerz<Whether the user is currently available for work/assignmentscreated_company_membershipsc                     | j                   r| j                   j                  nd}| j                  j                   d| j                  j                   d| S )NzNo Roler.   )roler   userusernamer/   )r   	role_names     r   r   zUserCompanyRole.__str__f   sD    &*iiDIINNY	))$$%S):):(;3ykJJr   c                     t         |           | j                  rc| j                  j                  | j                  k7  r?ddlm}  |dd| j                  j                   d| j                  j                   di      yy)z)Validate that role belongs to the companyr   )ValidationErrorrF   zRole "z" does not belong to company ""N)supercleanrF   r/   django.core.exceptionsrK   r   )r   rK   	__class__s     r   rN   zUserCompanyRole.cleanj   sn    99**dll:>!& 00Nt||O`O`Naabc#   ;9r   c                 D    | j                          t        |   |i | y)z3Override save to validate role-company relationshipN)rN   rM   save)r   argskwargsrP   s      r   rR   zUserCompanyRole.saves   s    

d%f%r   c                     | j                   r| j                   S t        | j                  d      r | j                  j                  j                  S y Nprofile)phonehasattrrG   rW   phone_numberr   s    r   resolve_phonezUserCompanyRole.resolve_phonex   s:    ::::499i(99$$111r   c                     | j                   r| j                   S t        | j                  d      r | j                  j                  j                   S y rV   )
first_namerY   rG   rW   r   s    r   resolve_first_namez"UserCompanyRole.resolve_first_name   s:    ????"499i(99$$///r   c                     | j                   r| j                   S t        | j                  d      r | j                  j                  j                   S y rV   )	last_namerY   rG   rW   r   s    r   resolve_last_namez!UserCompanyRole.resolve_last_name   s:    >>>>!499i(99$$...r   c                   $    e Zd ZddgZdZdZg dZy)UserCompanyRole.MetarG   r/   zUser Company RolezUser Company Roles)
updated_atrG   r/   Nr3   r   r   r   r   rc      s    !9-*24r   r   )$r   r   r   r   r   r7   r8   rG   r/   r%   SET_NULLrF   r    r]   r`   
ImageFieldimagerX   designationDateTimeField
invited_atleft_atr"   r#   
is_defaultis_owneris_available
created_byr   rN   rR   r[   r^   ra   r   __classcell__)rP   s   @r   r<   r<   *   s   ?6..$D
  f..!G
 6//'	D "!!St4HJ   Cd$GIF(:TREFTBE"&""cDIK &%%4t<J"f""D9G $##>I
 %$$>J
 #v""=H
 '6&&PL #""//2	JK&
5 5r   r<   )	django.dbr   coresite.mixinr   logging	getLoggerr   loggerr   r%   r<   r   r   r   <module>rv      sI     1 			8	$' '! '&i5, i5r   