o
    h}                     @   s,   d dl mZ d dlmZ G dd deZdS )    )AbstractUser)modelsc                       s   e Zd ZdZg dZejdedddZejdddZejd	ddd
Z	ejdddZ
ejddZejddZejddZG dd dZdd Zedd Zedd Zedd Zdd Zd! fdd	Z fdd Z  ZS )"Userz2Extended User model with role-based access control))adminAdmin)stakeholderStakeholder)memberMember   r	   z'User role determines access permissions)
max_lengthchoicesdefault	help_textT)r   blank2   )r   r   null   )auto_now_add)auto_nowF)r   c                   @   s,   e Zd ZdZejdgdejdgdgZdS )z	User.Meta	auth_userrole)fieldsmembership_numberN)__name__
__module____qualname__db_tabler   Indexindexes r    r    +/var/www/html/ictaz-jobs/accounts/models.pyMeta   s
    r"   c                 C   s   |    d|   dS )Nz ())get_full_nameget_role_displayselfr    r    r!   __str__&   s   zUser.__str__c                 C   
   | j dkS )Nr   r   r&   r    r    r!   is_admin)      
zUser.is_adminc                 C   r)   )Nr   r*   r&   r    r    r!   is_stakeholder-   r,   zUser.is_stakeholderc                 C   r)   )Nr	   r*   r&   r    r    r!   	is_member1   r,   zUser.is_memberc                 C   s    | j  d| j }| p| jS )zBReturn the first_name plus the last_name, with a space in between. )
first_name	last_namestripusername)r'   	full_namer    r    r!   r$   5   s   zUser.get_full_nameNc                    s"   | dr
| js
dS t ||S )z5Override to restrict admin access to only admin userszadmin.F)
startswithr+   superhas_perm)r'   permobj	__class__r    r!   r7   :   s   zUser.has_permc                    s   |dkr	| j s	dS t |S )z<Override to restrict admin module access to only admin usersr   F)r+   r6   has_module_perms)r'   	app_labelr:   r    r!   r<   @   s   zUser.has_module_perms)N)r   r   r   __doc__ROLE_CHOICESr   	CharFieldr   phone_numberr   organizationDateTimeField
created_at
updated_atBooleanFieldis_verifiedr"   r(   propertyr+   r-   r.   r$   r7   r<   __classcell__r    r    r:   r!   r      s4    


r   N)django.contrib.auth.modelsr   	django.dbr   r   r    r    r    r!   <module>   s    