a
    :]ri                     @   s   d dl mZmZmZ d dl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mZ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 d dlmZ d dl m!Z! G dd dej"Z#d	S )    )DATABASECONFIG
DB_SESSION)	ColumnStringFloatIntegerARRAY	TIMESTAMPBoolean
ForeignKeytext)relationship   )UtcNowEnumSqlalchemyTypeStringEnumSqlalchemyType)
SatbotType)SatbotState)SatbotPriorityN)JSON)datetime)EventCategory)
EventStorec                   @   s$  e Zd ZdZdZededdZedee	ddZ
ededdZed	eeddZed
eZedeZedeeZedeeZededde ddZedeZededdZededdZedd Zedd Zedd Zd&ddZ edd Z!ed d! Z"ed"d# Z#ed$d% Z$dS )'SatbotsatbotsidT)Zprimary_keytypeF)nullable
parametersstateprogresspidprioritylog
created_atUTC)timezone)Zserver_defaultr   created_by_id
started_atfinished_atc              
   C   s\   | j | jj| jj| jjd| jj| jjd| j| jj	| j
| jd| jrT| jdnddS )N)primary_fieldstitledownloadable)namer,   %Y-%m-%d %H:%M:%S )r   r   r    r   r#   r!   r%   r*   )r   r   r+   r,   r-   r    r.   r   r#   to_dictr!   r%   strftimer*   self r5   h/var/www/staging/api/virtual_environments/venv/lib/python3.9/site-packages/main/models/satbots/satbot.pyto_dict_minimal    s    
zSatbot.to_dict_minimalc                 C   sH   | j }| j| j|r|jnd | jr,| jdnd| jp6d| j| jj	dB S )Nr/   r0   )r"   
created_byr)   
time_takenr$   cannot_be_urgent)
r8   r7   r"   Zto_dict_namer)   r2   r9   r$   r   r:   )r4   r8   r5   r5   r6   r1   -   s    zSatbot.to_dictc                 C   s   | j s
d S | j}|st }|| j  }i }t| d\|d< }t|d\|d< }t|d\|d< |d< dd	 | D }d
|}| js|d S |S )NiQ daysi  hours<   minutessecondsc                 S   sB   g | ]:\}}|d krt | dt |dkr6|dd n| qS )r       N)round).0r.   valuer5   r5   r6   
<listcomp>I       z%Satbot.time_taken.<locals>.<listcomp>z, z...)r)   r*   r   utcnowdivmodtotal_secondsitemsjoin)r4   end_timedeltaoutput	remainingr5   r5   r6   r9   9   s    

zSatbot.time_takenNc                 C   s   |r|| _ t }d| j d| jj d| j j d| j  }|jtj	jkrXt
 | _|| _|jtjjtjjfv r|| _|d| j 7 }td| j|tjd| jid|id	 |r| jpg | | _|r|| _| jj|  | jj  d S )
NzSatbot z (z) r@   z after ZAPIr   message)
user_agentZuser_id	timestampcategoryZprivate_dataZpublic_data)r    r   rH   r   r   r,   emojirE   r   ZSTARTEDosgetpidr"   r)   FINISHEDERRORr*   r9   r   r(   r   ZSATBOTr$   r!   querysessionaddcommit)r4   r    r$   r!   rS   bodyr5   r5   r6   updateN   s4    (
zSatbot.updatec                 C   s*   t d d  d| j }tj|dd |S )Nr   working_directoryz/satbotT)exist_ok)r   r   rV   makedirs)r4   	directoryr5   r5   r6   r`   r   s    zSatbot.working_directoryc                 C   sV   | j jrR| j tjkr4| jdr*td  S td  S | j tjtjfv rRtd d S d S )NZorder_idZorder_download_base_directoryZdownload_base_directoryr   Zbackups_directory)	r   r-   r   ZGENERATE_DATAr   getr   EXPORT_DATADATABASE_BACKUPr3   r5   r5   r6   download_directoryx   s    

zSatbot.download_directoryc                 C   s   | j tjkrH| jdrdnd}d| jd d| d| jd dS | j tjkrt| jd	 d| jd
 dS d| j dS )Nzinclude-dispsZdispsZpointszregion-region-z%Y-%m-%dz.zipz%Y-%m-%d--%H-%M-%Sz
--databaseZsatbotz	-data.zip)	r   r   re   r   rd   r%   r2   rf   r   )r4   rT   r5   r5   r6   	file_name   s    ( zSatbot.file_namec                 C   s   ddl m} || jS )Nr   )	find_user)Zmain.services.users_helperrk   r(   )r4   rk   r5   r5   r6   r8      s    zSatbot.created_by)NNN)%__name__
__module____qualname__Z__tablename__Z__bind_key__r   r   r   r   r   r   r   r   r   r    r!   r"   r   r#   r	   r   r$   r
   r   r%   r(   r)   r*   propertyr7   r1   r9   r_   r`   rg   rj   r8   r5   r5   r5   r6   r      s:   






$



r   )$setupr   r   r   Z
sqlalchemyr   r   r   r   r	   r
   r   r   r   Zsqlalchemy.ormr   Z services.custom_sqlalchemy_typesr   r   r   Zservices.satbots.satbot_typer   Zservices.satbots.satbot_stater   Z services.satbots.satbot_priorityr   rV   Zsqlalchemy.dialects.postgresqlr   r   Zmain.services.enums.userr   Zmain.services.event_storer   ZModelr   r5   r5   r5   r6   <module>   s   ,