
    yh	                     ^    d dl mZ d dlmZ  G d de      Z G d de      Z G d de      Zy	)
    )models)AbstractTimeStampModelc                       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
      Zd Z fdZ fdZ G d d      Z xZS )UserCompanyRolez!User's role in a specific companyz	core.Usercompany_rolesr*   r(   
user_rolesTuser_assignments)r+   r'   r&   r,   r   c                     | 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__*   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   )ValidationErrorrA   zRole "z" does not belong to company ""N)supercleanrA   r/   django.core.exceptionsrF   r   )r   rF   	__class__s     r   rI   zUserCompanyRole.clean.   sn    99**dll:>!& 00Nt||O`O`Naabc#   ;9r   c                 D    | j                          t        |   |i | y)z3Override save to validate role-company relationshipN)rI   rH   save)r   argskwargsrK   s      r   rM   zUserCompanyRole.save7   s    

d%f%r   c                   $    e Zd ZddgZdZdZddgZy)UserCompanyRole.MetarB   r/   zUser Company RolezUser Company RolesNr3   r   r   r   r   rQ   <   s!    !9-*2I&r   r   )r   r   r   r   r   r7   r8   rB   r/   r%   SET_NULLrA   r"   r#   r   rI   rM   r   __classcell__)rK   s   @r   r<   r<   #   s    +6[FNNQ`aDf 3v~~\hiG6TV__4tbtuD###D1IK&
' 'r   r<   N)	django.dbr   coresite.mixinr   r   r%   r<   r   r   r   <module>rV      s2     1' '! '"', 'r   