a
    .i                     @   s   d dl Z d dlmZ e jd eee jjj 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mZ d d
lmZ d dlmZ d dlmZ dd Zdd Zdd Zdd Zedkreed d d  dS )    N)Path)SatbotPriority)SatbotState)
SatbotType)datetime)relativedelta)app)Satbot)Frame)
DB_SESSION)CONFIGc                  C   sf   t  J tjtjtjktjtjkB tjtj	kB tj
tjk } W d    n1 sX0    Y  | S )N)r   Zapp_contextr	   queryfilterstater   INITIALZSTARTEDERRORtyper   GENERATE_GRIDall)satbots r   k/var/www/staging/api/virtual_environments/venv/lib/python3.9/site-packages/scripts/services/update_grids.pyget_current_satbots   s    



&r   c              
   C   s   dD ]}t |  }|ttjd tjt t	dd k B tj
| |  tj
 }|d ur| | |j
 | d|j
 W  d      S W d    q1 s0    Y  qd S )NstandardZruralhr   )months-)r   beginr   r
   r   Zgrids_updated_atis_r   nowr   idin_Zorder_byfirstappend)current_framesdatabase
db_sessionframer   r   r   	get_frame   s    Br*   c                 C   s   t | }|d u rdS td  R}t d|i}ttj|tjt	j
|d}|| |  |  W d    n1 sx0    Y  td|  dS )NFZusersframe-id)r   
parametersr   prioritycreated_by_idzCreated Satbot for frame T)r*   r   r   r	   Zencoded_parametersr   r   r   r   r   ZLOWaddcommitcloseprint)r&   r.   frame_idr(   Zencoded_paramssatbotr   r   r   spawn_satbot'   s     
&r5   c           
      C   s   t  }tdd |D }td d d | }|dkrtd| d g g g d	}|D ]&}|jd
 d\}}|| | qTt|D ]}t|| }	|	std  qqntd d S )Nc                 S   s    g | ]}|j jtjjkr|qS r   )r   valuer   r   ).0r4   r   r   r   
<listcomp>@       zmain.<locals>.<listcomp>r   update_grids_scriptZmax_satbotsr   z	Creating z Satbotsr   r+   r   z#No more frames without recent gridszCNo Satbots created as the queue already contains the maximum number)	r   lenr   r2   Zdecoded_parameterssplitr%   ranger5   )
r.   Zcurrent_satbotscountZ	to_creater&   r4   r'   r3   _Zspawnedr   r   r   main=   s    
r@   __main__r   r:   r.   ) syspathlibr   pathinsertstr__file__resolveparentZ%main.services.satbots.satbot_priorityr   Z"main.services.satbots.satbot_stater   Z!main.services.satbots.satbot_typer   r   Zdateutil.relativedeltar   r   Zmain.models.users.satbotr	   Zmain.models.insar.framer
   setupr   configr   r   r*   r5   r@   __name__r   r   r   r   <module>   s$    	