U
    Yi=@                    @   s  d dl T d dlmZ d dlmZ d dlmZ d dlZd dlZd dlZd dlm	Z	 d dlm
Z
 d dlmZmZ d dlZd d	lmZ d dl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 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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l%m%Z% d dl&Z&d dl'Z'd dl(m)Z) dd Z*d d! Z+dS )"    )*)octave)storage)send_webhook_dataN)credentials)db)ImageImageFilter)gen_report_new)	merge_sar)find_sar)	merge_dem)find_dem)send_moni_noti)send_error_noti)
gmap_image)gmap_image_large)date	timedelta)send_expiring_noti)send_expired_noti)get_weather_data)sendfailedreport)
map_coords)search_new_sentinel)gen_geotiff2)	firestore)get_land_use)make_dir)send_html_emailc                    s`  t d}zt|ddi W n* tk
rH } zt| W 5 d}~X Y nX t t	 }|
dtd }ddd	d
dddddg	}| |krF| dkr|dkrtdddd}i }	| D ]2\}
}|
|krtdd|
dd|	|
< qnH| dkr8|dkr8tdd| dd}| |i}	n| |dii}	ni }	tdt|	| | dd dd dd }dd dd  fdd	d d! d"d# d$d% d&d' d(d) 	
fd*d+}|	 D ]v\}
}|
  } d,}|}z(| D ]\}}|| |||| qW n2 tk
rV } ztd-t  W 5 d}~X Y nX qdS ).z
    Function to process/generate a field satellite images

    :param uid: (string) user id
    :param fieldid: (string) field id
    :param session_type: (string) expected values - main, api, bulk
    :return: None
    zservicekey.jsondatabaseURLz,https://farmbase-b2f7e-31c0c.firebaseio.com/N%Y%m%dZSentinelSettings4snQYQZqQx3SmVbRztmEqYn5Mkcz2KZQ7TZIYXnXN0b07OtrL1hlyYij1CeMGYvLXrGR5ZThxZ46iV7vY8sa2TCXcp5VIsfhHZrh0nm2VsgBtcGy2mFFHQdEtiSbn2hbYQAwwoIdYVi024fPRPyszwLOjweG1qbpiCx3CFQo1KYThGMoIlISJG4mVXArK6Y5QPDh1ipRHhCOFIDV2pxgg7Nfz1ufZBmV2PaidMonitoredFieldsPMFFTzuid_list-len, uid, fieldidc                 S   s  t | dd  }t | dd }t | d d }|}|dk rt|dkrt|dkrZd| d }nd| d }|d }|}nb|dk r|dkr|dkrd| d }nd| d }d}|d }n"|dkr|d }n|d }|}|}|dkrd}|dkrd}|dk rd	t| }nt|}|dk r&d	t| }nt|}|dk rFd	t| }nt|}|dk rfd	t| }nt|}t|}|d
 | d
 t| }t|d
 | d
 t| }	t|| t| }
|d }|	d }	||	fS )N            r         
   0-	T00:00:00	T23:59:59intstrrequested_datelatestsenseddayZcurrent_dateZcurrent_monthZcurrent_year
start_year
start_datestart_monthZ	from_dateZto_datel_date rA   */home/ankuromar296_gmail_com/server2024.pyget_to_and_from_date_radar   sX    





z.server2024.<locals>.get_to_and_from_date_radarc                 S   s  t | dd  }t | dd }t | d d }|}|dk rt|dkrt|dkrZd| d }nd| d }|d }|}nb|dk r|dkr|dkrd| d }nd| d }d}|d }n"|dkr|d }n|d }|}|}|dkrd}|dkrd}|dk rd	t| }nt|}|dk r&d	t| }nt|}|dk rFd	t| }nt|}|dk rfd	t| }nt|}t|}|d
 | d
 t| }t|d
 | d
 t| }	t|| t| }
|d }|	d }	||	fS )Nr,   r-      r/   r   r0   r1   r2   r3   r4   r5   r6   r7   r:   rA   rA   rB   get_to_and_from_date   sX    





z(server2024.<locals>.get_to_and_from_datec                 S   s@   | d d }| dd }| dd  }|d | d | | }|S )Nr-   r,   r4   rA   )Zyyyymmddtimer=   r?   r>   Znew_daterA   rA   rB   format_date/  s
    zserver2024.<locals>.format_datec                 S   s   t dd| |d }t }|dk	rdtj|d}t|j|j	|j
}|| j}nd}|dk rtd||f dS d	S dS )
z
        Checks if a field has already been processed in the last 5 days.

        :param UID (str): User ID
        :param FieldID (str): Field ID

        :return: (bool) True/False
        r*   r+   	LatestDayNr!   rD   zfarm recently processed: TF)r   	referencechildgetr   todaydatetimestrptimeZyearZmonthZdaydaysprint)uidfieldidZ
latest_dayrL   Zlatest_dateZ
today_dateZday_diffrA   rA   rB   is_data_already_processed6  s(    

z-server2024.<locals>.is_data_already_processedc                 S   s   t | |}td| |S )a  
        Tells if we should process a field based on its subscription, api credits, pause/expire status.

        :param UID (str): User ID
        :param FieldID (str): Field ID

        :return: (dict) {'process_field': bool, 'process_as': int, 'credits_needed': int*, 'visits_needed': int*, user_obj: dict, org_api_obj: dict}
            - 'process_field': True if we should process the field, False otherwise
            - 'process_as': 0 - pag, 1 - sub, 2 - api
        zshould process data result)process_field_flagprocess_fieldrP   )rQ   rR   resultrA   rA   rB   shall_we_process_dataU  s    
z)server2024.<locals>.shall_we_process_datac                    s  |d }|d }	|d }
|d }|d }d}d}t dd	| | }d
}d
}d
}d
}d
}d
}d}z|d }W nV tk
r } z8z|d }W n& tk
r } zd}W 5 d}~X Y nX W 5 d}~X Y nX d}z|d }W n( tk
r } zd}W 5 d}~X Y nX d}z(t d| }|d }|d }W n, tk
rb } zd}d}W 5 d}~X Y nX z|d }W n( tk
r } zd}W 5 d}~X Y nX | dkrd}n>| dkrd}n.| dkrd}n| dkrd}nd|krd}z|d }W n( tk
r } zd }W 5 d}~X Y nX z|d! }W n( tk
rR } zd
}W 5 d}~X Y nX zH|d" }| }|dkrvd} n d
} d
}!d
}"d}#d
}$d
}%d
}&d}'d}W nH tk
r } z(d}d
} d
}!d
}"d}#d
}$d
}%d
}&d}'W 5 d}~X Y nX d}(| dk
r$d
}!d
}"d
}$d
}%d
}&d
})d
}*z|d# }#W n( tk
rD } zd}#W 5 d}~X Y nX z|d$ }'W n( tk
rz } zd}'W 5 d}~X Y nX |d% }+|d& },|,}-z |d' }.|.dkrd}%nd
}%W n( tk
r } zd
}%W 5 d}~X Y nX z$|d( }/t|/d
krd
}&nd}&W n( tk
r& } zd
}&W 5 d}~X Y nX z|d) }0t|1})W nf tk
r } zFz|d* }1t|1})W n, tk
r } zd
}1d
})W 5 d}~X Y nX W 5 d}~X Y nX zJ|d# }#|# D ]0\}2}3|2}4|*d }*t|4t|kr|4}|}5qd
}6W n( tk
r } zd}6W 5 d}~X Y nX d
}7zJ|d+ }8|# D ]0\}2}3|2}4|7d }7t|4t|kr.|4}|}q.d
}6W n( tk
r } zd}6W 5 d}~X Y nX d
}9zJ|d, }:|# D ]0\}2}3|2}4|9d }9t|4t|kr|4}|}qd
}6W n( tk
r } zd}6W 5 d}~X Y nX d
};zB|d$ }'|' D ],\}2}3|2}<|;d };t|<t|kr|<}qW n( tk
rv } zd}=W 5 d}~X Y nX d-}>t|}?|?d. }?t	j	
|?d/}@|@dd0 }@|@dd1 }A|@d2d3 }B|@d4d0 }Cdd1 }Dd1d5 }Ed5d }Ftt|At|Bt|C}Gtt|Dt|Et|F}H|H|G }I|Ij}J|*d5|) d kr|Jd6|) kr|)d7krd}&t dd	| |d(d8 t|  n*t dd	| |d(  d
}&d5|) |* d9k rd6|) |J d0k r|)d7krt dd	| |d:d n(t dd	| |d:d- |dkrVd
}d
}d
}d
}nd
}d
}d
}|dkrpd
}z|d; }KW n( tk
r } zd}KW 5 d}~X Y nX t||&|%|6|  tt| d1k
r |&d
k
r |%d
k
r | dk	r||&d
k	r|t| ||||&|%||||	|}L|Ld< }t| |||||&|%||||	|
}Mt| ||||&|%||||	|}N|Nd< }t| |||||&|%||||	|
}Oni }Od=|Od>< |Od<< |O}Pt|Od< } } d}$|Od> }Qzt d?|Q }RW n> tk

r } zt d?t|Q| W 5 d}~X Y nX |Rdk
rd@}R|R|PdA< nd
}|'dk
r4d
}Sn4|d$ }'|' D ]"\}2}3|2}<|<|k
rDd}" 
qh
qD|#dk
rxd}nF|d# }#|# D ]4\}2}3|2}4|4|k
rtdB t|4| d}! 
q
q|}Tz*|dC }U|Udk
s|UdDk
rd}Vnd
}VW n( tk
r } zd
}VW 5 d}~X Y nX |Vdkr|dE }W|dF }X|dkr@d}Yn:z|dG  }YW n( tk
rx } zd}YW 5 d}~X Y nX |&d
krt|W|X| | t|!t|  t|" t|$ t|% t|& }Zd}tdH|Z  |ZdIkr|&d
krt|W|X| | t| | t }[z|d: }\|\dkr&t|  W n( tk
rP } zd}W 5 d}~X Y nX dJ}]z|dK }]W n( tk
r } zdJ}]W 5 d}~X Y nX |PdL }^|PdE }W|PdF }X|PdM }_|PdN }`|PdO }a|PdP }b|PdQ }cz,|dR }d|dS }e|d}f|e}g|dT }f|dU }gW n tk
r~ } zfz8t|^t|W dV t|_t|X dV  }d}e|d|e }f}gW n( tk
rl } zd}W 5 d}~X Y nX W 5 d}~X Y nX |^|Wk r|^}h|W}^|h}W|_|Xk r|^}h|X}_|h}Xt|,}it|,dW }i|i|Pd&< tj| st|  |Qd=d
k r z&| dX t| dX dY }jt !|j}kW n tk
r } zt| t"|W|^|X|_|`|a|b|c|| |,\}l}m}f}gt dd	| |dZ|l t dd	| |d[|m t dd	| |dT|f t dd	| |dU|g W 5 d}~X Y nX z&| dX t| dX d\ }jt !|j}kW n tk
r } zt| t#|W|^|X|_|`|a|b|c|| |,\}n}o}d}et dd	| |d]|n t dd	| |d^|o t dd	| |dR|d t dd	| |dS|e W 5 d}~X Y nX |Qd=d
kr:| d_ }pnTd`}p|pdad
k rdb|Pdc< db|Pdd< db|Pde< db|Pdf< ||Pdg< ||Pd!< |P}pd
}qd
}rndh}pt$j%didj}sdk}tzdldmdndodpdqdrdsdtdudvdwdxdydzd{d|d}d~ddg}udddddddddddddg}vdddddddg}wdddddddddddddddddddddddddddg}x|vD ]}y|u&|y qB|xD ]}y|u&|y qXg }z|uD ]}y|z&|y qr|vD ]}y|z&|y qW n0 tk
r } zt| d}W 5 d}~X Y nX t|| |'dd}t|t|kr|&d
kr|%d
krz|PdL }^|PdE }W|PdF }X|PdM }_t(| ||+||^|W|_|X}{d|  dX | dX | d }|| dX | d }}|s)|t}~|~*||}|+|} W n4 tk
r } ztt,-  d}W 5 d}~X Y nX t|t|krf|&d
krf|%d
krft dd	| |d+t|d z|PdL }^|PdE }W|PdF }X|PdM }_t.| ||+||^|W|_|X}{dpdqg}|D ]\}d|  dX | dX | dX | }| dX | dX | d }|s)|t}~|~*|}|+| qbt(| ||+||^|W|_|X}{d|  dX | dX | d }|| dX | d }}|s)|t}~|~*||}|+|} t }[|dd}W n0 tk
rd } zt| d}W 5 d}~X Y nX |pd`d
k r\|pdhd
kr|p'dhd} t dd	| |d$|d t/|  |pdd
kr|p'dd} |Vdkr|s)|t}~|dd}t0| ||d|e|||,|d||W|X|^|_g|+dd
d
|}|}|'dd}|'dd}|'dXd}| dX | d }|~*d|  dX | dX | d }|| |||||~ t1|[|||||| t dd	| |d$|| t/|  |pdd
kr<|p'dd} t dd	| |d$|d t/|  |pd_d
kr|p'd_d} 	n|p'd`d} d
}q|}d}d
}|qdVk rt2t|^t|W }t2t|_t|X }t3| ||+||^|W|_|X|]|z|- zndpdqg}|D ]\}d|  dX | dX | dX | }| dX | dX | d }|s)|t}~|~*|}|+| qW n4 tk
rh } ztt,-  d}W 5 d}~X Y nX | ||\}}|f}d|g}e|Vdkr|dd
k s|UdDkr\|zD ]}|d }t4|P| || qz|zD ]}|dkr|dk n|dkrd}| dX | dX | }d|  dX | dX | dX | }|~*|}z|+| W n( tk
rh } zd}W 5 d}~X Y nX qW n( tk
r } zd}W 5 d}~X Y nX |dd}t0| ||d|e|||-|d
||W|X|^|_g|+d|||}|s)|t}~|uD ]}|}|dlkrd}n8|dmkr
d}n(|dádJkr$|d }n|dkr2d}| dX | dX | d }d|  dX | dX | dX | }|~*|}z|+| W n( tk
r } zd}W 5 d}~X Y nX q| dX | d }d|  dX | dX | d }|~*|}z|+| W n( tk
r } zd}W 5 d}~X Y nX |}|'dd}|'dd}|'dXd}| dX | d }|~*d|  dX | dX | d }| dX | d t| d | d }|| |||||~ |dks| dkrz^|dk	rt dd	| |d#|| t5|d|d|d|d*d
| ||
 W n0 tk
rV } ztt,-  W 5 d}~X Y nX n~|dd}t0| ||d|e|||-|d
||W|X|^|_g|+d|||}|s)|t}~|uD ]}|dlkr|dk n(|dmkrd}n|dádJkr|d }| dX | dX | d }d|  dX | dX | dX | }|~*|}z|+| W n( tk
r\ } zd}W 5 d}~X Y nX q| dX | d }d|  dX | dX | d }|~*|}z|+| W n( tk
r } zd}W 5 d}~X Y nX |}|'dd}|'dd}|'dXd}|'dd}| dX | d }|~*d|  dX | dX | d }|| |||||~ z^|dk	rt dd	| |d#|| t5|d|d|d|d*d
| ||
 W n0 tk
r } ztt,-  W 5 d}~X Y nX t dd	| |d<| |dk	r:t dd	| |d#|| t6| || z2t|}t|}7| 8|}|9d|i W n( tk
r } zd}W 5 d}~X Y nX |dks| dkrt:| |d|ddd n|Vdkr|dd}t0| ||d|e|||,|d||W|X|^|_g|+d|||}|}|'dd}|'dd}|'dXd}| dX | d }|s)|t}~|~*d|  dX | dX | d }|| |||||~ t1|[|||||| t dd	| |d$|| t/|  dS )z<
        Main function of satellite data processing
        ZClientIDZClientSecretZWMSIDZRVIIDZDEMIDNr/   r*   r+   r   ZyesZFieldDescriptionZFieldAddressZFarmZ	farmonautZ
WhitelabelZWhitelabelEmailsZEmailZPasswordZLanguageenZHC1KG5a2e1ZhXaPMpEcylZmeMYM2Zarr"   Zter&   ZuzZ8aGkNQm166bmk8cjHVHtwGli2DD2zpa,hi,enZbiopixelzfr,arznot availablePlantDistanceZPaidZ
SensedDaysZ
FailedDaysZCoordinatesZ	FieldAreaZPausedExpiredZTotalPaidMonthsPaymentTypeZSARDaysZDEMDaysZno  z%Y-%m-%d %H:%M:%S.%fr2   r-   rD         r,      1   ZExpiringZTTGDatarH   ZNotAZMGRSZLatestTileDatesZ11ZPreviousDayz&alreadyy done processing for this dateZGenTifZabs_yesZFieldMinLatZFieldMinLongZWeatherz	pattern: Z010100ZCropCodeZFieldMaxLatZFieldMaxLongZ
TileMaxLatZ
TileMinLatZTileMaxLongZTileMinLongZ	CenterLatZ
CenterLongZCenterLatLargeZCenterLongLarge   i'  /z_static_map_large.pngZFieldLatLenLargeZFieldLongLenLargez_static_map.pngZFieldLatLenZFieldLongLenZfailed4Z
successfulZfailed   ZStartPixelLatZEndPixelLatZStartPixelLongZEndPixelLongZFieldIDZfailed0zfarmbase-b2f7e)Zprojectzfarmbase-b2f7e.appspot.comZtciZetcindviZeviZrviZrsmndwiZndreZvariZsocZsaviZndmiZevapoZaviZbsiZsiZdemZhybrid_blindZvssiZlulcZlaiZ	soc_cmap2Z
ndre_cmap2Z
ndvi_cmap2Z	evi_cmap2Z
ndwi_cmap2Z
vari_cmap2Z
savi_cmap2Z	avi_cmap2Z	bsi_cmap2Zsi_cmap2Z
ndmi_cmap2Z
vssi_cmap2Z	lai_cmap2ztci.tifz
hybrid.tifzetci.tifzndvi.tifzevi.tifzsoc.tifndre.tifzvari.tifZndvi_pieZevi_pieZndwi_pieZndre_pieZvari_pieZsavi_pieZavi_pieZbsi_pieZsi_pieZsoc_pieZndmi_pieZvssi_pieZlai_pieZndvi_linegraphZevi_linegraphZndwi_linegraphZndre_linegraphZvari_linegraphZsavi_linegraphZavi_linegraphZbsi_linegraphZsi_linegraphZsoc_linegraphZndmi_linegraphZvssi_linegraphZweather_linegraphZlai_linegraphr4    PaidMonitoredFields/z/demz/dem.pngz.pngZNAZfailed1 _,z/report.htmlZfailed2ZIndiaz.tifzTCI.tifzETCI.tifZTCIZETCIZpieZchartZmask_imgZmaskz/mask_img.pngz/mask_report_.pdfZFarmerz''z_report.htmlZLatestSensedDay);r   rI   rJ   rK   	Exceptionlowerr8   floatitemsrM   Zfromtimestampstrftimer   rO   setr   deleterP   r   r   r   r   r9   r   r   Zmake_gen_mapsr   ospathexistsmakedirsfindr   openr   r   r   ZClientappendreplacer   Z
get_bucketblobupload_from_filename	traceback
format_excr   r   r
   r   absr   r   r   r   Z
collectionZdocumentupdater   )rQ   langrR   ZfromdateZtodatesentinelSettingsradar_from_dateradar_to_dateZclientIDZclientSecretZwmsIDZrviIDZdemID	imagedatewes1fier<   ZlatestfaileddayZlatest_rvi_dayZlatest_dem_dayZlast_latest_rvi_dayZlast_latest_dem_dayZreport_return_objZ	f_addresse
whitelabelZwhitelabelObjZwhitelabelEmailZwhitelabelPasswordZfieldDescriptionrY   Z
field_paidZhas_paidZimgdate_in_senseddays_flagZimgdate_in_faileddays_flagZ
senseddaysZbig_query_performedZpausedexpiredZ
faileddaysZtrialprocessedZtotalpaidmonthsZtotalsenseddaysZcoordinatesZ	fieldareaZ
field_areaZppZeeZtmpZtpmuvZ
sensed_dayZlast_sensed_dayZ	new_fieldZtotalsardaysZsar_daysZtotaldemdaysZdem_daysZtotalfaileddaysZ
failed_dayZaswadqZtrialenabledZ
intfieldidZ	orderdateZ	orderyearZ
ordermonthZorderdayZ	todayyearZ
todaymonthZtodaydayZf_dater@   ZdeltaZndaysZttgDataZreq_json_sarZreq_json_landZreq_json_demZreq_jsonnew_string_jsonZmgrsZprevious_dayZfrq1ZimageidZgen_tifZgenerate_tifsZfieldminlatZfieldminlongZweather_dataZc_codeZattachmentsZexpiringZcropTypeZfieldmaxlatZfieldmaxlongZ
tilemaxlatZ
tileminlatZtilemaxlongZtileminlongZ	centerlatZ
centerlongZcenterlat_largeZcenterlong_largeZtempZfieldarea_sqmZimg_nameZimZlatlen_largeZlonglen_largeZlatlenZlonglenresult_statusZaqw2Z
diff_countZstorage_clientZbucket_nameZimages_arrayZimages_array2Zimages_array3Zimages_array4ZimgNameZ	tif_arrayZaqppZdestination_blob_name_demZdem_file_namebucketr   Zs1_imgsZtemp_imgZdestination_blob_name_rviZrvi_file_nameZ	useremailffZdoc_name_htmlZp_dateZc_latZp_coordsZfieldlatlenZfieldlonglenZimgsZimgrg   rh   Z	imageNameZtifNameZimageAddressZimageDestinationZoriginalNamedoc_nameZcity_refZwywy)current_uidd1dbFget_indicesmakeFieldImagesupload_reportsrA   rB   satellite_dataf  sL
   
(







(



J,














(





	





	





      


















	

      



"






	
      





      	z"server2024.<locals>.satellite_datac                 S   s   t | }|S )N)r   Zmonitored_field2022)r   r   rA   rA   rB   r     s    
z#server2024.<locals>.makeFieldImagesc                 S   s   t dd| |dd| }t dd| |dd| }d}t|d }t|d }||fS )Nr*   r+   ZHealthrg   rh   r/   d   )r   rI   rJ   rK   rr   )rQ   rR   Z	latestdayrg   rh   r   rA   rA   rB   r     s@    


zserver2024.<locals>.get_indicesc                 S   s   d S ]}|dkrj|d | d | d t| d | d }	|d| d | d | d }
|
|	 n`|d | d | d t| d | d }	|d| d | d | d	 | d }
|
|	 |d
 }qd S )Nrm   r   re   rn   rl   ro   rj   z/report.pdfz/reportr/   )splitr9   r   r   )Z	all_langsrQ   r   r   r   rR   r   Zlang_numZsingle_langr   r   rA   rA   rB   r     s      		
z"server2024.<locals>.upload_reportsc                  S   s&   t j  } | tdd }|d}|S )z\
        Returns the current date string as YYYYMMDD in IST (Indian Standard Time).
        iJ  )Zminutesr!   )rM   Zutcnowr   rt   )Zutc_nowZist_nowZformatted_daterA   rA   rB   !get_today_date_in_ist_as_yyyymmdd  s    

z5server2024.<locals>.get_today_date_in_ist_as_yyyymmddc           	   
   S   sp  t dd| |d }|p,d}zt|}W n& tk
r` } zd}W 5 d}~X Y nX d}t dd| |d }|pd}zt|}W n& tk
r } zd}W 5 d}~X Y nX |dkrlt|dks|dkrl|dkrd	}nbz$t|| d
 d d d d }W n< tk
rV } z|d
 d d d d }W 5 d}~X Y nX zd}ttt d t| |krd}t dd| | }z&t dd| |	| W n( tk
r } zd}W 5 d}~X Y nX t dd| |
  W dS W nN tk
rj } z.d}t dd| |
  W Y dS d}~X Y nX dS )zb
        Returns True if field is non-sub, expired and been more than a day since created
        r*   r+   rZ   r   Nr/   r[   r`   i \&r_      <   r\   r   ZDeletedFields)r   rI   rJ   rK   r8   rp   rr   roundrF   ru   rv   )	rQ   rR   Zfieldobjr   r   Zmonths_to_wait_before_deletionZpaymentTypeZpaymentMillisr   rA   rA   rB   should_delete_field+  s    

 
"

z'server2024.<locals>.should_delete_fieldc                    sn  d|  d t | }t| t| | td| | || }d}| ||}| |}td| |d dkr`z|dkr~nzztd	| | td
d| |d }	td|	 d}
| |dkrdkr|	d krtd | ||d d |d d  d}
|	d k	rdkr|		 D ]\}}td| td   |d\}}|d\}}d}td |dk rz"| ||||||| d}d}
W nF t
k
r } z&|d }td|t  td W 5 d }~X Y nX qntd
d| |d|  q(|
r|d dkr~|dd}|di }|dd}d|  d }tjj| tjd}|||  nz|d dkrdkr|d d}|d!i }t|d"d| |d"< t|d#d| |d#< td$|  }|| W n0 t
k
r* } ztt  W 5 d }~X Y nX W n0 t
k
r^ } ztt  W 5 d }~X Y nX t| d S )%Nzrm -rf re   zstarting processing ofr   is_data_processing_neededrU   Tr/   rS   r*   r+   PreviousDataRequestsprevious_data_requestsFmainzgoing to process)bulkapir   r;   z	IST todayzattempting...rb   z*data processing failed - attempt, errTracer2   Z
process_asrd   visits_neededuser_objZTotalSatelliteVisitsz/MyProfile/TotalSatelliteVisits)Zappr   credits_neededorg_api_objZ	UsedUnitsZremainingUnitszOrganizations/)r9   rw   systemr   rP   r   rI   rJ   rK   rs   rp   r   r   rF   sleeprv   rT   Zdefault_app_2ru   r8   )rQ   rR   r   fieldsr   Ztoremover   Z
is_deletedr   r   Zsatellite_processedr;   objZprevious_from_dateZprevious_to_dater   r   Zattemptr   r   r   Z
pre_visitsZstr_ref_satellite_visitsZuser_visits_refr   r   Zorg_api_ref)rE   rC   r   rS   r   session_typerW   r   rA   rB   process_dataz  s   









  

  "z server2024.<locals>.process_datarX   zerror point1)r   Certificatefirebase_admininitialize_apprp   rP   r   Zclientr   rL   rt   r   rI   rK   rJ   rs   lenr   r   )rQ   rR   r   credr   rL   r   disabledUIDs	temp_listZuid_listZm_uidrl   Zfield_ids_objrG   r   Zm_fieldsr   r   rA   )r   r   r   r   rE   rC   r   rS   r   r   r   rW   r   r   rB   
server2024W   s    
 


 

 
66          c;O r   c                  C   s"   t  } | d}tt| d S )Nr!   )r   rL   rt   rP   r8   )rL   r   rA   rA   rB   __test"  s    
r   ),ZsocketZoct2pyr   Zgoogle.cloudr   r   rw   rF   r   r   r   ZPILr   r	   r   Zgen_report_new2r
   rM   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   ZpytzrT   Zsatellite_visit_emailr   r   r   rA   rA   rA   rB   <module>   sh   	               Z