o
    gi                     @  s   d dl mZ d dlmZmZ d dlZd dlmZmZmZm	Z	m
Z
mZmZmZmZmZmZ d dlmZ d dlmZ dd	d
ZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZdS )    )annotations)datetimedateN)ColumnStringDateDateTimeTextBooleanFloat
ForeignKeyIntegerUniqueConstraintIndex)relationship)Basereturnstrc                   C  s   t t S )N)r   uuiduuid4 r   r   8/var/www/html/flask_server/apps/leave_form_app/models.py_uuid   s   r   c                   @  s   e Zd ZdZdZeedddZeedddZeed	ddZ	ee
ddd
ZeedddZeedejejdZedddeddeddfZdS )RolePositionMapu\   
    8.1 role_position_map
    Mapea un position de AroFlo a un role lógico de la app.
    role_position_map@   Tprimary_key   Fnullable    r    defaultr    r#   onupdatepositionname!uq_role_position_map_positionname)nameix_role_position_map_roleroleix_role_position_map_is_enabled
is_enabledN)__name__
__module____qualname____doc____tablename__r   r   
positionidr&   r*   r
   r,   updated_by_useridr   r   utcnow
updated_atr   r   __table_args__r   r   r   r   r      s    
r   c                   @  sj   e Zd ZdZdZeedddZeedddZee	ddd	Z
ee	ddd	Zee	ddd	Zed
dfZdS )AppAdminz]
    8.2 app_admins
    Lista de usuarios con permisos administrativos dentro de la app.
    
app_adminsr   Tr   r   Fr   r"   ix_app_admins_emailemailN)r-   r.   r/   r0   r1   r   r   useridr:   r
   can_map_rolescan_upload_to_aroflois_super_adminr   r6   r   r   r   r   r7   5   s    r7   c                   @  s  e Zd ZdZdZeeddedZeedddZ	eed	ddZ
eed	ddZeed	ddZeed	ddZeed	ddZeeddZeed
ddZeeddZeeddZeeddZeeddZeedddZeeddZeeddZeed	ddZeed	ddZeeddddZeed
dddZeeddZ eeddddZ!eede"j#dZ$eede"j#e"j#dZ%e&ddddZ'e&ddddZ(e)dde)dde)dde)dde)ddfZ*dS ) LeaveRequestuC   
    8.3 leave_requests
    Request principal (días u horas).
    leave_requests$   Tr   r#   r   Fr   r      r!   NTr"   pendingr$   LeaveAttachmentleavezall, delete-orphan)back_populatescascadeLeaveUploadJob!ix_leave_requests_employee_useridemployee_userid ix_leave_requests_manager_useridmanager_useridix_leave_requests_orgnameemployee_orgnameix_leave_requests_decisionmanager_decisionix_leave_requests_created_at
created_atN)+r-   r.   r/   r0   r1   r   r   r   
request_idrL   employee_emailemployee_namerP   employee_positionnametype_overhead_namer	   reasonmoder   
hours_dater   hours_amount
start_dateend_daterN   commentscontact_detailsbu_nametracking_nameworktyperR   r   manager_decision_atstatusr   r4   rT   r5   r   attachmentsupload_jobsr   r6   r   r   r   r   r?   H   sV    r?   c                   @  s   e Zd ZdZdZeeddedZeede	dddZ
eed	ddZeed
ddZeedddZeeddZeed
ddZeedejdZedddZeddfZdS )rF   zB
    8.4 leave_attachments
    Adjuntos ligados a un request.
    leave_attachmentsrA   TrB   leave_requests.request_idFr   r      i   r"   r?   rg   rH   ix_leave_attachments_request_idrU   N)r-   r.   r/   r0   r1   r   r   r   attachment_idr   rU   filenamemimestorage_pathr	   commentfilterr   r   r4   rT   r   rG   r   r6   r   r   r   r   rF      s    rF   c                   @  s   e Zd ZdZdZeeddedZeede	dddZ
eed	ddZeed
ddZeeddZeeddZeeddZeeddZeedejdZedddZeddeddeddfZdS )rJ   uc   
    8.5 leave_upload_jobs
    Auditoría de ejecuciones UI automation (create y upload docs).
    leave_upload_jobsrA   TrB   rj   Fr   r   rC   r"   r?   rh   rl   ix_leave_upload_jobs_request_idrU   "ix_leave_upload_jobs_run_by_useridrun_by_useridix_leave_upload_jobs_created_atrT   N)r-   r.   r/   r0   r1   r   r   r   job_idr   rU   rw   rf   r	   ui_create_cmd_snapshotui_create_stdoutui_upload_docs_cmd_snapshotui_upload_docs_stdoutr   r   r4   rT   r   rG   r   r6   r   r   r   r   rJ      s"    rJ   c                   @  sH   e Zd ZdZdZeedddZeedddZe	dde	dd	fZ
d
S )BuTrackingMapu]   
    8.6 bu_tracking_map
    Solo si la relación BU <-> Tracking no la traes de AroFlo.
    bu_tracking_mapr   Tr   ix_bu_tracking_map_burb   ix_bu_tracking_map_trackingrc   N)r-   r.   r/   r0   r1   r   r   rb   rc   r   r6   r   r   r   r   r~      s    r~   c                   @  sH   e Zd ZdZdZeedddZeedddZ	ee
ded	d
d
dZdS )LeaveOrgDefaultuj   
    8.7 leave_org_defaults
    Defaults por organización (para no mantener settings user por user).
    leave_org_defaultsr   Tr   Fgffffff@r"   i     N)r-   r.   r/   r0   r1   r   r   orgnamer   default_daily_hoursr   r   default_leave_start_dater   r   r   r   r      s    r   c                   @  sP   e Zd ZdZdZeedddZeeddZ	ee
ddZeedejejdZd	S )
LeaveUserSettingzF
    8.8 leave_user_settings
    Override por usuario (opcional).
    leave_user_settingsr   Tr   r   Fr$   N)r-   r.   r/   r0   r1   r   r   r;   r   daily_hoursr   leave_start_dater   r   r4   r5   r   r   r   r   r      s    r   )r   r   )
__future__r   r   r   r   
sqlalchemyr   r   r   r   r	   r
   r   r   r   r   r   sqlalchemy.ormr   	config.dbr   r   r   r7   r?   rF   rJ   r~   r   r   r   r   r   r   <module>   s   4
G