a
    Yûiz  ã                   @   s|   d dl mZmZmZ d dlmZ G dd„ deƒZG dd„ deeƒZG dd„ dejƒZ	G d	d
„ d
ejƒZ
G dd„ dejƒZdS )é    )ÚAbstractBaseUserÚBaseUserManagerÚPermissionsMixin)Úmodelsc                   @   s    e Zd Zddd„Zddd„ZdS )ÚUserManagerNc                 K   sF   |st dƒ‚|  |¡}| jf d|i|¤Ž}| |¡ |j| jd� |S )Nu   Email Ð¾Ð±Ñ�Ð·Ð°Ñ‚ÐµÐ»ÐµÐ½Úemail)Úusing)Ú
ValueErrorÚnormalize_emailÚmodelÚset_passwordÚsaveÚ_db)Úselfr   ÚpasswordÚextra_fieldsÚuser© r   ú!D:\diplom_project\users\models.pyÚcreate_user   s    

zUserManager.create_userc                 K   s8   |  dd¡ |  dd¡ |  dd¡ | j||fi |¤ŽS )NÚis_staffTÚis_superuserÚroleÚadmin)Ú
setdefaultr   )r   r   r   r   r   r   r   Úcreate_superuser   s    zUserManager.create_superuser)N)N)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r   r      s   
	r   c                   @   s†   e Zd ZdZejddd�Zejdeddd�Zej	dd	d
�Z
ej	ddd
�Zejddd�Zeƒ ZdZg ZG dd„ dƒZdd„ Zdd„ ZdS )ÚUser))Ústudentõ   Ð¡Ñ‚ÑƒÐ´ÐµÐ½Ñ‚)Úparentõ   Ð Ð¾Ð´Ð¸Ñ‚ÐµÐ»ÑŒ)Úteacherõ   ÐŸÑ€ÐµÐ¿Ð¾Ð´Ð°Ð²Ð°Ñ‚ÐµÐ»ÑŒ)Zacademic_staffu   Ð£Ñ‡ÐµÐ±Ð½Ð°Ñ� Ñ‡Ð°Ñ�Ñ‚ÑŒ)r   u   Ð�Ð´Ð¼Ð¸Ð½Ð¸Ñ�Ñ‚Ñ€Ð°Ñ‚Ð¾Ñ€TZEmail)ÚuniqueÚverbose_nameé   r    u   Ð Ð¾Ð»ÑŒ©Ú
max_lengthÚchoicesÚdefaultr'   u   Ð�ÐºÑ‚Ð¸Ð²ÐµÐ½©r,   r'   Fu   ÐŸÐµÑ€Ñ�Ð¾Ð½Ð°Ð»u   Ð”Ð°Ñ‚Ð° Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð°Ñ†Ð¸Ð¸)Úauto_now_addr'   r   c                   @   s   e Zd ZdZdZdS )z	User.Metaõ   ÐŸÐ¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»ÑŒu   ÐŸÐ¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ð¸N©r   r   r   r'   Úverbose_name_pluralr   r   r   r   ÚMeta&   s   r2   c                 C   s   | j S )N)r   ©r   r   r   r   Ú__str__*   s    zUser.__str__c                 C   sR   t | dƒr&| jr&| jj› d| jj› �S t | dƒrL| jrL| jj› d| jj› �S | jS )Nr    ú r$   )Úhasattrr    Ú	last_nameÚ
first_namer$   r   r3   r   r   r   Úget_full_name-   s
    zUser.get_full_nameN)r   r   r   ZROLE_CHOICESr   Ú
EmailFieldr   Ú	CharFieldr   ÚBooleanFieldÚ	is_activer   ÚDateTimeFieldZ
created_atr   ÚobjectsÚUSERNAME_FIELDÚREQUIRED_FIELDSr2   r4   r9   r   r   r   r   r      s   r   c                   @   s  e Zd Z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
d�Zejdd�Zejdejd	d	ddd�Zejdd�Zej	dd	d	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eddd�Zej	dd	d d�Zejd	d!d"�Zd#d$„ ZG d%d&„ d&ƒZd'S )(ÚStudent))Úacademicu   Ð�ÐºÐ°Ð´ÐµÐ¼Ð¸Ñ‡ÐµÑ�ÐºÐ°Ñ�)Zsocialu   Ð¡Ð¾Ñ†Ð¸Ð°Ð»ÑŒÐ½Ð°Ñ�)Únoneu   Ð�Ðµ Ð¿Ð¾Ð»ÑƒÑ‡Ð°ÐµÑ‚r    r/   ©Ú	on_deleteÚrelated_namer'   éd   õ   Ð¤Ð°Ð¼Ð¸Ð»Ð¸Ñ�©r*   r'   õ   Ð˜Ð¼Ñ�Tõ   ÐžÑ‚Ñ‡ÐµÑ�Ñ‚Ð²Ð¾©r*   Úblankr'   õ   Ð”Ð°Ñ‚Ð° Ñ€Ð¾Ð¶Ð´ÐµÐ½Ð¸Ñ�©r'   z
core.GroupZstudentsu   Ð“Ñ€ÑƒÐ¿Ð¿Ð°)rF   ÚnullrN   rG   r'   u   Ð“Ð¾Ð´ Ð¿Ð¾Ñ�Ñ‚ÑƒÐ¿Ð»ÐµÐ½Ð¸Ñ�é2   u%   Ð�Ð¾Ð¼ÐµÑ€ Ñ�Ñ‚ÑƒÐ´ÐµÐ½Ñ‡ÐµÑ�ÐºÐ¾Ð³Ð¾)r*   r&   rQ   rN   r'   Fu   Ð Ð°Ð±Ð¾Ñ‚Ð°ÐµÑ‚r-   éÿ   u   ÐœÐµÑ�Ñ‚Ð¾ Ñ€Ð°Ð±Ð¾Ñ‚Ñ‹u#   ÐŸÐ¾Ð»ÑƒÑ‡Ð°ÐµÑ‚ Ñ�Ñ‚Ð¸Ð¿ÐµÐ½Ð´Ð¸ÑŽr(   rC   u   Ð¢Ð¸Ð¿ Ñ�Ñ‚Ð¸Ð¿ÐµÐ½Ð´Ð¸Ð¸r)   õ   Ð¢ÐµÐ»ÐµÑ„Ð¾Ð½õ
   Ð�Ð´Ñ€ÐµÑ�©rN   r'   c                 C   s   | j › d| j› �S ©Nr5   ©r7   r8   r3   r   r   r   r4   J   s    zStudent.__str__c                   @   s   e Zd ZdZdZdS )zStudent.Metar!   u   Ð¡Ñ‚ÑƒÐ´ÐµÐ½Ñ‚Ñ‹Nr0   r   r   r   r   r2   M   s   r2   N)r   r   r   ZSCHOLARSHIP_CHOICESr   ÚOneToOneFieldr   ÚCASCADEr   r;   r7   r8   Úmiddle_nameÚ	DateFieldÚ
birth_dateÚ
ForeignKeyÚSET_NULLÚgroupÚIntegerFieldZenrollment_yearZstudent_id_numberr<   Zhas_jobZ	job_placeZreceives_scholarshipZscholarship_typeÚphoneÚ	TextFieldÚaddressr4   r2   r   r   r   r   rB   5   s"   rB   c                   @   s¨   e Z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	d
�Zejdd�Zejddd�Zejdddd
�Zejdddd
�Zejdd�Zdd„ ZG dd„ dƒZdS )ÚTeacherr$   r/   rE   rH   rI   rJ   rK   TrL   rM   rO   rP   u   Ð”Ð¾Ð»Ð¶Ð½Ð¾Ñ�Ñ‚ÑŒrS   u   ÐšÐ°Ñ„ÐµÐ´Ñ€Ð°r(   rT   u'   Ð”Ð°Ñ‚Ð° Ð¿Ñ€Ð¸Ñ‘Ð¼Ð° Ð½Ð° Ñ€Ð°Ð±Ð¾Ñ‚Ñƒc                 C   s   | j › d| j› d| j› d�S )Nr5   z (ú))r7   r8   Úpositionr3   r   r   r   r4   ]   s    zTeacher.__str__c                   @   s   e Zd ZdZdZdS )zTeacher.Metar%   u   ÐŸÑ€ÐµÐ¿Ð¾Ð´Ð°Ð²Ð°Ñ‚ÐµÐ»Ð¸Nr0   r   r   r   r   r2   `   s   r2   N)r   r   r   r   rY   r   rZ   r   r;   r7   r8   r[   r\   r]   rg   Z
departmentrb   Z	hire_dater4   r2   r   r   r   r   re   R   s   re   c                   @   sš   e Z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	d
�Zejdd�Zejddd�Zejddd�Zejeddd�Zdd„ ZG dd„ dƒZdS )ÚParentr"   r/   rE   rH   rI   rJ   rK   TrL   rM   rO   rP   r(   rT   rU   rV   Úparentsu   Ð”ÐµÑ‚Ð¸)rG   r'   c                 C   s   | j › d| j› �S rW   rX   r3   r   r   r   r4   o   s    zParent.__str__c                   @   s   e Zd ZdZdZdS )zParent.Metar#   u   Ð Ð¾Ð´Ð¸Ñ‚ÐµÐ»Ð¸Nr0   r   r   r   r   r2   r   s   r2   N)r   r   r   r   rY   r   rZ   r   r;   r7   r8   r[   r\   r]   rb   rc   rd   ÚManyToManyFieldrB   Úchildrenr4   r2   r   r   r   r   rh   e   s   rh   N)Údjango.contrib.auth.modelsr   r   r   Ú	django.dbr   r   r   ÚModelrB   re   rh   r   r   r   r   Ú<module>   s   !