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)primary_keytypeF)nullable
parametersstateprogresspidprioritylog
created_atUTC)timezone)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!   r0   r    r$   to_dictr"   r&   strftimer,   self r7   ;/var/www/staging/api/app_home/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 )Nr1   r2   )r#   
created_byr+   
time_takenr%   cannot_be_urgent)
r:   r9   r#   to_dict_namer+   r4   r;   r%   r   r<   )r6   r:   r7   r7   r8   r3   -   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).0r0   valuer7   r7   r8   
<listcomp>I       z%Satbot.time_taken.<locals>.<listcomp>z, z...)r+   r,   r   utcnowdivmodtotal_secondsitemsjoin)r6   end_timedeltaoutput	remainingr7   r7   r8   r;   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) rC   z after APIr   message)
user_agentuser_id	timestampcategoryprivate_datapublic_data)r!   r   rK   r   r   r.   ZemojirH   r   ZSTARTEDosgetpidr#   r+   FINISHEDERRORr,   r;   r   r*   r   SATBOTr%   r"   querysessionaddcommit)r6   r!   r%   r"   rX   bodyr7   r7   r8   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   r\   makedirs)r6   	directoryr7   r7   r8   rg   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 )Norder_idorder_download_base_directoryZdownload_base_directoryr   Zbackups_directory)	r   r/   r   GENERATE_DATAr    getr   EXPORT_DATADATABASE_BACKUPr5   r7   r7   r8   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dispspointszregion-region-z%Y-%m-%dz.zipz%Y-%m-%d--%H-%M-%Sz
--databasesatbotz	-data.zip)	r   r   ro   r    rn   r&   r4   rp   r   )r6   rY   r7   r7   r8   	file_name   s    ( zSatbot.file_namec                 C   s   ddl m} || jS )Nr   )	find_user)Zmain.services.users_helperrw   r*   )r6   rw   r7   r7   r8   r:      s    zSatbot.created_by)NNN)%__name__
__module____qualname____tablename____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,   propertyr9   r3   r;   rf   rg   rq   rv   r:   r7   r7   r7   r8   r      s:   






$



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