o
    x;f(                     @   s  d dl mZ d dl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 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 d dlZd dlmZ d dlmZ G dd dejZG dd dejZG dd dejZG dd dejZ G dd dejZ!G dd dejZ"G dd dejZ#G dd dejZ$G dd  d ejZ%G d!d" d"ejZ&G d#d$ d$ejZ'G d%d& d&ejZ(	 d'd( Z)d)d* Z*d+d, Z+d-d. Z,G d/d0 d0ejZ-G d1d2 d2ejZ.G d3d4 d4ejZ/dS )5    )models)now)datetimedate)User)MinValueValidatorMaxValueValidator)timezone)RichTextField)slugify)RichTextUploadingField)reverse)CKEditorUploadingWidgetN)ValidationError)gettext_lazyc                   @   .   e Zd ZejddZG dd dZdd ZdS )ArticleCategories<   
max_lengthc                   @      e Zd ZdgZdZdS )zArticleCategories.MetacategoryzArticles - CategoriesN__name__
__module____qualname__orderingverbose_name_plural r   r   #/var/www/html/kck/kck2021/models.pyMeta       r    c                 C      | j S Nr   selfr   r   r   __str__      zArticleCategories.__str__Nr   r   r   r   	CharFieldr   r    r'   r   r   r   r   r          r   c                       s   e Zd ZejddZejdddZejddZ	ejdddZ
e Ze Zejejd	Zejd
dZejeddZG dd dZdd Z fddZdd Z  ZS )Article   r   T)r   db_indexzstatic/img/blog/	upload_toKCK)r   defaultr2   F)editablearticleCategories)related_namec                   @   r   )zArticle.Metaz-date_addedArticlesNr   r   r   r   r   r    )   r!   r    c                 C   s   | j  d| j d| j dS )N |  )idtitle
date_addedr%   r   r   r   r'   .   s   zArticle.__str__c                    s@   | j st| j| _t | _t | _tt	| j
|i | d S r#   )r:   r   r;   slugr	   r   r<   updated_datesuperr,   saver&   argskwargs	__class__r   r   r@   4   s
   

zArticle.savec                 C      t dd| jidS )Nzkck:readblog	slug_namerC   )r   r=   r%   r   r   r   get_absolute_url;      zArticle.get_absolute_url)r   r   r   r   r*   r;   	SlugFieldr=   
ImageField	thumbnailauthor	TextFieldintror   bodyDateTimeFieldr   r   r<   r>   ManyToManyFieldr   
categoriesr    r'   r@   rI   __classcell__r   r   rD   r   r,      s    r,   c                   @   r   )
Department2   r   c                   @   r   )zDepartment.MetaagencyzCareers - DepartmentsNr   r   r   r   r   r    @   r!   r    c                 C   r"   r#   )rX   r%   r   r   r   r'   E   r(   zDepartment.__str__N)r   r   r   r   r*   rX   r    r'   r   r   r   r   rV   =   r+   rV   c                   @   s.   e Zd ZejddZdd ZG dd dZdS )JobTyperW   r   c                 C   r"   r#   namer%   r   r   r   r'   K   r(   zJobType.__str__c                   @      e Zd ZdZdS )zJobType.MetazCareers - Job TypeNr   r   r   r   r   r   r   r   r    N       r    N)r   r   r   r   r*   r[   r'   r    r   r   r   r   rY   H   s    rY   c                       s   e Zd ZejedddZejddZej	e
ejddZejddZejdd	Zejejdd
ZG dd dZdd Z fddZ  ZS )CareerTcareersblankr6      r   
agencyName	on_deleter6   #r3   )r2   rb   c                   @   r   )zCareer.MetajobNameCareersNr   r   r   r   r   r    Y   r!   r    c                 C   s   | j  d| j d| j S Nr8   )r:   rh   	timeAddedr%   r   r   r   r'   ^   s   zCareer.__str__c                    s*   | j st | _tt| j|i | d S r#   )r:   r	   r   rk   r?   r_   r@   rA   rD   r   r   r@   a   s   
zCareer.save)r   r   r   r   rS   rY   jobTypesr*   rh   
ForeignKeyrV   CASCADE
departmentjobLocationURLFieldlink	DateFieldr   r   rk   r    r'   r@   rU   r   r   rD   r   r_   Q   s    r_   c                   @   r   )Jobr-   r   c                   @   r   )zJob.MetaspecializationzProjects - JobsNr   r   r   r   r   r    i   r!   r    c                 C   r"   r#   )ru   r%   r   r   r   r'   m   r(   zJob.__str__N)r   r   r   r   r*   ru   r    r'   r   r   r   r   rt   f   s    rt   c                   @   s   e Zd ZejddZejdddZe Z	e
 ZejdddZejddZejedd	d
ZejddZG dd dZdd ZdS )Projectzmedia/r/   r   Fr   rb      d   r   job_specra   Tauto_now_addc                   @   r   )zProject.MetadateTimeProjectsNr   r   r   r   r   r    z   r!   r    c                 C   r"   r#   r;   r%   r   r   r   r'   ~   r(   zProject.__str__N)r   r   r   r   rL   rM   r*   r;   rK   r=   r   rQ   missionlocationrS   rt   jobTyperR   r}   r    r'   r   r   r   r   rv   p   s    rv   c                   @   s\   e Zd ZejeejddZejdddZ	ej
dddZejdd	Zd
d ZG dd dZdS )ProjectImagesimagere   zproject/Tr0   rb   ry   Frw   auto_nowc                 C   s   | j  d| jj S rj   )r:   projectr;   r%   r   r   r   r'      s   zProjectImages.__str__c                   @   r\   )zProjectImages.MetazProjects - ImagesNr]   r   r   r   r   r       r^   r    N)r   r   r   r   rm   rv   rn   r   rL   r   r*   descriptionrR   
created_atr'   r    r   r   r   r   r      s    r   c                   @   r   )LegalCategory@   r   c                   @   r   )zLegalCategory.Metar   zLegal - CategoriesNr   r   r   r   r   r       r!   r    c                 C   r"   r#   r$   r%   r   r   r   r'      r(   zLegalCategory.__str__Nr)   r   r   r   r   r      s    r   c                   @   r   )Companyr-   r   c                   @   r   )zCompany.Metar[   zLegal - CompaniesNr   r   r   r   r   r       r!   r    c                 C   r"   r#   rZ   r%   r   r   r   r'      r(   zCompany.__str__N)r   r   r   r   r*   r[   r    r'   r   r   r   r   r      r+   r   c                       s   e Zd ZejdddZejddZe Z	ej
ddZej
ddZejeejdd	Zejeejd
dddZdd ZG dd dZ fddZdd Z  ZS )Legalr   Frw   T)uniquer{   r   legal_categoryre   	companies)rf   r6   rb   nullc                 C   r"   r#   r   r%   r   r   r   r'      r(   zLegal.__str__c                   @   r\   )z
Legal.MetazLegal - TermsNr]   r   r   r   r   r       r^   r    c                    s`   | j rtjj| j d}|j| jkrt| j| _nt| j| _t | _	t
t| j|i | d S )N)pk)r   r   objectsgetr;   r   r=   r	   r   updatedr?   r@   )r&   rB   rC   	old_legalrD   r   r   r@      s   
z
Legal.savec                 C   s4   | j rtd| j j | jddS tdd| jidS )Nzkck:legal_with_company)company_namer=   rH   zkck:legal_without_companyr=   )companyr   r[   lowerr=   r%   r   r   r   rI      s   zLegal.get_absolute_url)r   r   r   r   r*   r;   rK   r=   r   rQ   rR   createdr   rm   r   rn   r   r   r   r'   r    r@   rI   rU   r   r   rD   r   r      s,    r   c                   @   r   )IdentityStatusr-   r   c                   @   r   )zIdentityStatus.MetastatuszIdentity - StatusNr   r   r   r   r   r       r!   r    c                 C   r"   r#   r   r%   r   r   r   r'      r(   zIdentityStatus.__str__N)r   r   r   r   r*   r   r    r'   r   r   r   r   r      r+   r   c                 C   sF   | j }t d}|dd }| d| }d| d| d| S )Nz%Y%m%d%H%M%S.z	identity//)phoner   r   strftimesplit)instancefilenamefolder_namer   r   extnew_filenamer   r   r   unique_upload_path   s
   r   c                 C      t | |dS )Nfrontr   r   r   r   r   r   front_image_upload_path      r   c                 C   r   )Nbackr   r   r   r   r   back_image_upload_path   r   r   c                 C   r   )Nselfier   r   r   r   r   selfie_image_upload_path   r   r   c                       s   e Zd ZejddddZejdddZejeddZ	eje
ddZejeddZejddZejddZeeZejdd	Zejdd
ZG dd dZdd Zdd Z fddZdd Z  ZS )IdentityRegister   TF)r   r   r4   rw   r   )rb   r3   r{   r   c                   @   r   )zIdentityRegister.Metareference_codeIdentityNr   r   r   r   r   r      r!   r    c                 C   r"   r#   )r   r%   r   r   r   r'     r(   zIdentityRegister.__str__c                 C   s$   | j r| jstdtdid S d S )Nr[   z3Nama wajib di-isi untuk memenuhi proses verifikasi.)verifiedr[   r   r   r%   r   r   r   clean  s   zIdentityRegister.cleanc           	         s   | j s+tjd }|r|jnd}|d }| jdd  }dt|d d| | _	| 
  tt| j|i | | j sPtjjdd	\}}| j| d S d S )
Nz-idr      SEMIX   -zBelum disemakr   )r   r   r   order_byfirstr:   r   strzfillr   r   r?   r@   statusesexistsr   get_or_createadd)	r&   rB   rC   last_instancelast_id
primary_idlast_three_digitsdefault_status_rD   r   r   r@     s   
zIdentityRegister.savec                 C   rF   )Nzkck:identity_register_statusr   rH   )r   r   r%   r   r   r   rI   %  rJ   z!IdentityRegister.get_absolute_url)r   r   r   r   r*   r   r   rL   r   r   r   r   r   r   rO   r[   BooleanFieldr   rS   r   r   rR   r   r   r    r'   r   r@   rI   rU   r   r   rD   r   r      s     
r   c                   @   sF   e Zd ZejeejdZejeejdZ	ej
ddZG dd dZdS )IdentityRegisterChangeLogrf   Tr{   c                   @   s   e Zd ZdgZdS )zIdentityRegisterChangeLog.Metaz
-timestampN)r   r   r   r   r   r   r   r   r    -  s    
r    N)r   r   r   r   rm   r   rn   identity_registerr   userrR   	timestampr    r   r   r   r   r   (  s
    r   c                   @   s>   e Zd ZejeejdZejdddZ	e
 Zedd ZdS )ReuploadTokenr   r   T)r   r   c                 C   s   t  | jk S r#   )r	   r   
expires_atr%   r   r   r   is_valid6  s   zReuploadToken.is_validN)r   r   r   r   rm   r   rn   r   r*   tokenrR   r   propertyr   r   r   r   r   r   1  s    r   )0	django.dbr   django.utils.timezoner   r   r   django.contrib.auth.modelsr   django.core.validatorsr   r   django.utilsr	   ckeditor.fieldsr
   django.utils.textr   ckeditor_uploader.fieldsr   django.urlsr   ckeditor_uploader.widgetsr   uuiddjango.core.exceptionsr   django.utils.translationr   Modelr   r,   rV   rY   r_   rt   rv   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   <module>   sD     	


12	