a
    f                    @   s  d dl 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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T d dlmZ ddlT 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)Z)ddl*T ddl+T g dZ,g dZ-dd Z.dd Z/e&dd Z0e&d d! Z1e&d"d# Z2d$d% Z3e&d&d' Z4d(d) Z5e&d*d+ Z6e&d,d- Z7e&d.d/ Z8e&d0d1 Z9d dl'm(Z( e&d2d3 Z:e&d4d5 Z;e&d6d7 Z<e&d8d9 Z=e&d:d; Z>e&d<d= Z?e&d>d? Z@e&d@dA ZAe&dBdC ZBe&dDdE ZCe&dFdG ZDe&dHdI ZEe&dJdK ZFe&dLdM ZGe&dNdO ZHe&dPdQ ZIdS )R    )Address)blank_re)renderredirectreverse)HttpResponse)settings)FileSystemStorage)csrf_exempt)	TruncDate)Sumdatetime	timedelta)	send_mail   )gardens_create)*)HttpResponseRedirect)
UpdateView
CreateView)r   )generic)serializers)messages)never_cache)timezoneN)JanFebMarAprZMaiu   Jūnu   JūlAugSepZOktNovDec)Z	PirmdienaZOtrdienau
   TrešdienaZCeturtdienaZ
PiektdienaZ	Sestdienau
   Svētdienac                 C   sD   t jj| jjd}tjj| jjd}tjj|dd}|||dS )Npkenterprise_idZgarden_id__in	garden_idgardensblocks
enterprise)	Enterprisesobjectsgetuserr'   GardensfilterBlocksorder_by)requestr-   gardenblock r9   )/var/www/html/django/DPS/gardens/views.pynavbar_database'   s    r;   c                 C   s\   | j js| j jstdS t| }tj }tj }t	j }|
|||d t| d|S )N/)
cultivaresyield_stages	ml_modelszchange_ml_model.html)r1   is_authenticatedis_superuserr   r;   
Cultivaresr/   allYieldStagesMLModelsupdater   )r6   contextr=   r>   r?   r9   r9   r:   change_ml_model-   s    


rH   c                 C   s   t j }td|}| jjs&tdS | jdkrt	jj
| jj| jd | jd t| jd d}| jd }t|}td	t|D ]:}|| }t|d
 }tjj
|j|d d ||d d}	qtd|jS d|i}
|
t|  t| d|
S )Njsonr<   POSTZgarden_nameZgarden_addressZgarden_border)r'   nameaddresspolygonr,   r   ZblockGeoJSON
block_namecultivar)r)   rK   private_meteostation_idrM   cultivar_idz/gardens/{0}r=   zcreate_garden.html)rB   r/   rC   r   	serializer1   r@   r   methodr2   creater'   rJ   rI   loadsrangelenr4   idformatrF   r;   r   )r6   r=   ZcultivaresJSONZ	newGardenZ
blocksJSONr,   ir8   geoJSONZnewblockrG   r9   r9   r:   create_garden9   s"    

0

"r\   c                 C   s~  t jj| jjd}tjj| jjd}tjj|dd}tjj|d}tjj|d}t	jj|d}t
jj|d}	tjj|d}
tjj|d}tj }td|g}td|}td|	}td|
}td|}tjj| jj|jd	}| jd
krB| j}d|v r2t
jj||d t|d d}t| n d|v rtjj|d r|tjj|d}|d |_|d |_|  ntjj|d |d |d nd|v rtjj|t|d d npd|v rXt|d }t| |D ]n}|d }|d }|dkrt
jj|d  n:|dkr6tjj|d  n|dkrtjj|d  qnd|v r2t|d }|D ]}|d }|d }|dkrt
jj|djt|d d tt
jj|d nh|dkrtjj|djt|d d n<|dkr&tjj|dj|d d |d d d ntd qtt d!||S | jj"sTt d S ||||||||||||d!}t#| d"|S )#Nr$   r&   r(   r)   rX   block_idr)   rI   )r'   rQ   rJ   Ztree_row_addbreed_idr_   tree_breed_idcoordinatesZdrone_station_latZdrone_station_lonlatitude	longituder_   Zno_flight_zone_add)r)   rM   Zfeatures_to_deleter   r   TreeRowZProtectedRegionDroneStationZfeatures_to_edit   )rd   )rM   )rf   rg   zUnknown typez/blocks/{0}/{1}/settings_newr<   )	cultivarsr+   r,   r-   enterpriseBreedscurrentGardencurrentBlockcurrentBlockJSONcurrentBlockTreescurrentBlockTreeRowscurrentBlockProtectedRegionscurrentBlockDroneStationszcreate_block.html)$r.   r/   r0   r1   r'   r2   r3   r4   r5   Treesrh   ProtectedRegionsDroneStationsrB   rC   r   rR   EnterpriseSpecificBreedsrQ   rS   rJ   rT   rI   rU   TreeRowGetTreesexistsrf   rg   saveprintdeleterF   r   rY   r@   r   )r6   r)   	blocks_idr-   r7   r8   rm   rn   rp   rq   rr   rs   rk   ro   ZcurrentBlockTreesJSONcurrentBlockTreeRowsJSON currentBlockProtectedRegionsJSONZcurrentBlockDroneStationsJSONrl   formtreeRowstationZFeatureArrayfeaturetyperX   rG   r9   r9   r:   create_blockS   s    

 










 
"
*
r   c                 C   st  | j jstdS tjj| j jd}tjj| j jd}t	jj|d
d}tjj|d}tjjd|d
d	}|D ]P}d
}|jj|_t|j  |_t|jjd  |_|j||_|j||_qpdd l}| jdkr6| j}	t|	 d|	v r6|	d }
tjj|
d}|j|	d	 d|j|j  |_|	d	 |_|  td }|tj 
d	}|||||d}t | d|S )Nr<   r$   r&   r(   r)   Zblock_id__inr   )statusmission_id__in
start_datez%H:%M:%Sr   rJ   Z
changeTimeZflightIDz%Y-%m-%dT%H:%MrI   )r+   r,   r-   enterprise_flightsZflightsJSONzmonitoring_page.html)!r1   r@   r   r.   r/   r0   r'   r2   r3   r4   r5   MissionsFlightsr   day
weekdaysLVweekdaymonthsShortLVmonthstrftimeZstart_date_stfrend_dateZend_date_stfrr   rS   rJ   r{   strptimerz   r   get_serializerrR   r   )r6   r-   r7   r8   missionsr   flightformat_datar   r   	flight_idjson_serializerZenterprise_flightsJSONrG   r9   r9   r:   monitoring_page   sB    

 
r   c                 C   s0   t  j}t |dd}tjj| |dd}|S )Nr   )r_   Z	date__gtedate)r   nowyearr   r/   r3   r5   )r_   current_yearZstart_of_yearr   r9   r9   r:   get_missions_data   s    
r   c                    s  | j jstdS tjj|| j jd s0tdS tjj| j jd}tjj|d	d}t
jj| j jd}tjj|d d}tjj|d}tjj|d	}ztjj|d}W n( tjy   t| d
|||d Y S 0 tjj|d}	td }
|
|}|
|	}|
|}|
|}t jddddddt }tjj|djtdddddjtdd	dd}| jd fddtD   fddtjjddd D }|D ]n}|d }|d }|d  d}|d } !|}|t" d k rt|D ]}||| | d |< qqg }|# D ]T\}}|# D ]@\}}d d t$|d! |d D }|%| d"| |d# qDq4||||
|g|||||t&'|t(j) t*|j+d$}t| d%|S )&Nr<   rX   r'   r&   r(   r)   r$   )block__garden_idrow_idr`   )r   zno_garden_page.htmlr*   rI   r   r   )r   r   hourminutesecond)Ztree__block__garden_idZlast_updated__gtelast_updated)r   r   Ztree__block__cultivar__titleZyield_stage__titleyields)total_yieldc                    s    g | ]} t |d  dqS days%Y-%m-%d)r   r   .0rZ   )
year_startr9   r:   
<listcomp>      zmain_page.<locals>.<listcomp>c                    s.   i | ]&}| fd dt jjdddD qS )c                    s   i | ]}| d g dqS )r   datesr   r9   )r   stage	all_datesnum_daysr9   r:   
<dictcomp>  s   z(main_page.<locals>.<dictcomp>.<dictcomp>titleTflat)rD   r/   values_list)r   rO   r   r9   r:   r     s   zmain_page.<locals>.<dictcomp>Tr   r   r   c                 S   s   g | ]\}}||d qS )xyr9   r   r   Zyield_valuer9   r9   r:   r   -  r   r    - rK   data)r+   r,   rm   currentGardenJSONZGardenTreesZ
GardenRowsZblockPolygonsprotectedRegionsr-   apexcharts_datar>   	mapCenterzgarden_page.html),r1   r@   r   r2   r/   r3   r'   ry   r4   r5   r.   r0   rt   rh   DoesNotExistr   ru   r   r   rR   r   r   replace	TreeStateannotater   valuesr   r   rV   r   distinctr   indexrW   itemszipappendrI   dumpsrD   rC   findCoordinatesrL   )r6   r)   r7   r8   r-   ZcurrentGardenTreesZBlockPolygonsZcurrentGardenTreeRowsrm   currentGardenProtectedRegionsr   TreeDataProtectedRegionsDataZBlockPolygonsDataTreeRowDatatodayr   
chart_dataentryZcultivar_titleZyield_stage_titler   r   r   jr   rO   stagesr   series_datarG   r9   )r   r   r   r:   	main_page   s    




"
r   c                    s(   t t| |  fdd|D }||fS )z<Ensure all dates are filled with zeros where no data exists.c                    s   g | ]}  |d qS )r   )r0   )r   r   Z
yield_dictr9   r:   r   G  r   z)fill_dates_with_zeros.<locals>.<listcomp>)dictr   )r   r   Z
full_datesZfilled_yieldsr9   r   r:   fill_dates_with_zerosD  s    r   c                 C   sX   | j jstdS tjj| j jd}tjj| j jd}t	j
d}|||d}t| d|S )Nr<   r$   r&   r)   r*   zall_edit_page.html)r1   r@   r   r.   r/   r0   r'   r2   r3   r4   r5   r   )r6   r-   r7   r8   rG   r9   r9   r:   garden_settingsJ  s    r   c           
   	   C   s  | j jstdS tjj| j jd}|D ]}|j}tt	jj|d|_
q&t	jd}t }tjj| j jd}| jdkrt| j}| r|jdd}| j j|_|  nL| j}	tjj|	d	d
 d}|	dd
 |_|	dd
 |_|  tdS t| d|||||dS )Nr<   r&   r`   r)   r$   rJ   F)commitgardenID0Z
gardenNameZgardenAddressz/gardens/editzgarden_edit_page.html)r+   r,   newGarden_formr,   r-   )r1   r@   r   r2   r/   r3   r'   rX   rW   r4   Z
blockcountr5   r   r.   r0   rS   rJ   is_validrz   striprK   rL   r   )
r6   r+   r7   r   r8   r   r-   uploadinputr   r9   r9   r:   gardens_edit\  s,    



r   c                 C   s~  | j jstdS tjj| j jd}tjd}t	jj
| j jd}tjj| j jd}||||d}| jdkrr| j}d|v r|
dd	}|
d
d	 }|
dd	}	|	d	krtjj||d d ntjj|||	d nd|v rH|
dd	}
|
d
d	 }|
dd	}	tjj
|
d}|	d	kr2||_d |_|  n||_|	|_|  n"|
dd	}
tjj
|
d}|  tdS t| d|S )Nr<   r&   r)   r$   )r+   r,   r-   meteostationsrJ   addBlockr   r   rN   Zblock_station)r)   rK   rP   Z	editBlockZblockIDz/gardens/blocks/editzall_garden_add_block.html)r1   r@   r   r2   r/   r3   r'   r4   r5   r.   r0   MeteostationsrS   rJ   r   rT   rK   rP   rz   r|   r   )r6   r+   r8   r-   r   rG   r   r)   rK   r   r%   r9   r9   r:   garden_block_edity  sJ    



r   c                 C   sx   | j jstdS tjj|| j jd s0tdS t|}ztjj	|d}W n tj
yf   tt Y S 0 |  ttS )Nr<   r   r]   )r1   r@   r   r2   r/   r3   r'   ry   intr0   r   r   r|   )r6   r)   Z
garden_selr9   r9   r:   delete_garden  s    r   c           6         s`  | j jstdS tjj|| j jd s0tdS dd l}ddl	m	}m
  tjj|d}tjj|d}tjj| j jd}tjd}tjj|d}	tjj|	d	}
tjj|jdjd d
}tjj|jd}tjj| j jd}ztjj|jd}W n tjy   d}Y n0 tjj|d}td }t jdddddddt }tjj|dd}tj d}| jd } fddt |D }i }|D ]~}dg| }|D ]X}|j!" "  j}t#jj||d$t%dd pd}t ||D ]}|||< qq||d||j&< qg }|' D ]6\}}dd t(|d |d D }|)||d q$tj } tjj|d d}!|*|!}"d}#|j+d krt,jj|j+d}$|$j-d krz(t.|$}#|j/|#ddt0d|$_-|$1  W n. t2y }% zt3|% W Y d }%~%n
d }%~%0 0 nz|4|5|$j-d d }&| }'|'|& }(|( d!d"krz(t.|$}#|j/|#ddt0d|$_-|$1  W n. t2y }% zt3|% W Y d }%~%n
d }%~%0 0 n|5|$j-}#|&|#d< W n. t2y }% zt3|% W Y d }%~%n
d }%~%0 0 |*|})|5|)}*|*D ]}t6tjj|j|d# d|d$ d%< d}+tjj|j|d# dD ]8},zt#jj|,jd&}-|+|-j77 }+W n   Y q8Y n0 q8|+|d$ d< q|*|}.|*|}/|*|
}0|*|}1|5|0}2|2D ](}tjj|d# d}3|38 |d$ d'< qtjj|dd(9 }4|||||*|g|)|/|.|"|j:|.t;|j<|/||#|/|2|/|*|1|/|tj | |4d)}5t=| d*|5S )+Nr<   r   r   r   r$   r&   r)   r^   r   r   r`   rI   r   )r   r   r   r   r   microsecond)r_   Zgenerated_date__gtegenerated_daterX   c                    s    g | ]} |d   dqS r   )r   r   r   r   r9   r:   r     r   zblock_page.<locals>.<listcomp>)missionyield_stager   Zyields__sumr   c                 S   s   g | ]\}}||d qS r   r9   r   r9   r9   r:   r     r   r   r   r_   r      T)indent	sort_keysdefaulttimez%Y-%m-%d %H:%M:%S   )minutesr%   fields	treeCounttree_idurlz-closed_date)r+   r,   rm   rn   ro   r~   ZcurrentBlockDroneStationJSONr   
blockTreesblockPolygonr   r   droneStationr-   ZweatherDataflightsblockTreeRowsblockTreesRowsr   r>   r>   last_missionzblock_page.html)>r1   r@   r   r2   r/   r3   r'   ry   rI   r   r   r0   r4   r5   r   r   rt   rX   excluderh   r.   rv   r   ru   r   r   r   r   r   rD   rC   r   rV   r   r   r   	aggregater   r   r   r   r   rR   rP   r   last_forecastZget_weather_datar   strrz   	Exceptionr{   r   rU   rW   r   get_absolute_urllastrM   r   rL   r   )6r6   r)   r}   rI   r   rm   rn   r7   r8   ZcurrentBlockMissionsZcurrentBlockFlightscurrentBlockTreesRowscurrentBlockRowr-   currentDroneStationr   r   r   r   r   r   r   r   r   Z
stage_datar   Zmission_date_indexr   rZ   r   r   r   r>   rp   r   ZweatherdataZblockMeteoStationeZlast_forecast_timer   
differencer   treerowJSONsumr   stater   DroneStationDataZ
FlightDataTreeDataRowflightDataJSONr   r  rG   r9   r   r:   
block_page  s    

$

00.

"





r   c                 C   sJ  | j jstdS tjj|| j jd s0tdS tjj|d}t	jj|d}t
j }tjj|dtdtjj|dgtd|td||d}|t|  | jdkr>d| jv r| jd	}| jd
}t| jd}tjj||||d}	|	  n.d| jv r0| jd}
tjj|
d}|  td|S t| d|S )Nr<   r   r`   r$   rI   )rm   r   ZcurrentGardenBlocksJSONZprotectedRegionsJSONr=   rJ   r   Z	blockNameZblockCultivarZblockCoordinates)r)   rK   rQ   rM   ZdeleteBlockr_   z/gardens/blocks/{0}zblock_edit_page.html)r1   r@   r   r2   r/   r3   r'   ry   r4   ru   rB   rC   r0   r   rR   rF   r;   rS   rJ   rI   rU   rT   rz   r|   rY   r   )r6   r)   ZgardenBlocksZgardenProtectedRegionsr=   rG   rN   Zblock_cultivarZblock_coordinates	new_blockr_   r8   r9   r9   r:   
block_editT  s6    



r"  c           :      C   s  | j jstdS tjj|| j jd s0tdS tjj|d}t	jj|d}t
jj|jd d}t
jj|jdjd d}tjj|jd}tjj|d}tjj|dd	}	tjj|	d
}
ztjj|jd}W n tjy   d}Y n0 tjj| j jd}tjj| j jd dtjj| j j|dB }tj }tj }tjj| j jd}t	jd}tjj| j jd}tjj| j jd}td }||}||}||}||}||}||	}||
}dd l}||}|D ]}t t
jj|j|d d|d d< d}t
jj|j|d dD ]8} ztjj| jd}!||!j!7 }W n   Y qY n0 q||d d< q| j"dkr:| j#}"d|"v r*|"dd$ }#|"dd$ }$|"dd$ %dd}%|"dd$ %dd}&|"dd$ %dd}'|"dd$ %dd}(t
jj&|$|%|&|'|(tjj|#d j|jd! nd"|"v rVtjj&||"d"d|d# nd$|"v rtjj&|"d%d|"d&d|d' nd(|"v r>|"d(d$ })|"dd$ }#|"dd$ }$|"dd$ }%|"dd$ }&|"dd$ }'|"dd$ }(t
jj|)d}*|#|*_'|$|*_(|'|*_)|(|*_*|%|*_+|&|*_,|*-  nd)|"v r|"d)d$ %d*d+.d,}+t/dt |+D ]f} ||+|  |+| < d-|+|  v rt
jj|+|  d- d}*|+|  d. d/ d |*_+|+|  d. d/ d |*_,|*-  nd0|+|  v r:tjj|+|  d0 d},t
jj|,jd0  |+|  |,_1|,-  t2|, nd1|+|  v r|+|  d1 d2krn|+|  |_3|-  n(tjj|+|  d1 d}-|+|  |-_3|--  nBtjj|d}.|+|  d. d/ d |._+|+|  d. d/ d |._,|.-  qtt4d3| d| d4S d5|"v r|"d5d.d}+|+D ]} | d6kr2d |_3|-  n| d7krTtjj|d}.|.0  n| 5d8r| .d9}/|/d }0tjj|0d}-|-0  nL| 5d:r| .d9}/|/d }1tjj|1d},|,0  nt
jj| d}*|*0  qnFd;|"v r |"d;d}2|2dkrd |_6|-  n|2|_6|-  nd<|"v r|"d<d}3|3dkr^tjj|d}4d |4_7|4-  npz<tjj|d}5d |5_7|5-  tjj|3d}4||4_7|4-  W n2 tjy   tjj|3d}4||4_7|4-  Y n0 nTd=|"v rt8|" |"d=d}6|"d>d}7tjj&||7||6d?}8t2|8 nt8|" t4d3| d| d4S |||||||||||j3||||9||||t:|j;d@}9t<| dA|9S )BNr<   r   r$   r   r^   r   r`   r   )r_   r   r   r   r&   )r'   r_   r)   rI   r%   r  r  r  r   rJ   ZnewTree	cultivarer   Z	treeBreedrf   ,.rg   heightwidth)r   )breedrf   rg   r&  r'  cultivares_idr_   ZprotectedRegion)rM   r)   r	  ZdroneLatitudeZdroneLongitudere   ZeditTreeZeditChangesz},{z}split{split
primaryKeygeometryrd   Z	TreeRowIDZpolygonTypeZBlockBorder/blocks/z	/settingsZdeleteChangesBorderri   zProtectedRegion - r   z
TreeRow - Zmeteostation_changeZdrone_changeZ
newTreeRowZenterpriseBreedIDrb   )r+   r,   rm   rn   r   dronesr=   breedsrl   r  r  r   r	  r-   r  r  ZblockMissionsZblockMissionTreeStatesr   zblock_specific_edit_page.html)=r1   r@   r   r2   r/   r3   r'   ry   r0   r4   rt   rX   r  rh   ru   r   r   rv   r   r   DronesrB   rC   
TreeBreedsr5   rw   r.   r   r   rR   rI   rU   rW   r   rS   rJ   r   r   rT   r   r(  r&  r'  rf   rg   rz   r*  rV   r|   rd   rx   rM   r   
startswithrP   r_   r{   r   r   rL   r   ):r6   r)   r}   rm   rn   ZcurrentBlockTreesNoRowsr  r  r   ZcurrentBlockDoneMissionsZcurrentBlockMissionTreeStatesr  r   r/  r=   r0  r7   r8   rl   r-   r   r   r   r  r   r  ZmissionDataZtreeStateDatarI   r  rZ   r  r   r  r   Z
tree_title
tree_breedZtree_latitudeZtree_longitudeZtree_heightZ
tree_widthr+  treer   r   regionr   tempZ	regionKeyZrowKeymeteoIDdroneIDdroneZoldDroneZ
treeRowGPSra   rowrG   r9   r9   r:   block_specific_editv  sf   
(









"
,
"
&

























r<  c              	   C   s   | j jstdS tjj| j jd}tjd}t	jj
| j jd}tjj
|d}tjj
|d}tjj
|jd}ztjj|jd}	W n tjy   d}	Y n0 td }
tjj|jd}|
|}|
|	}|||||j|||jd}t| d	|S )
Nr<   r&   r)   r$   r^   r   rI   )r+   r,   r-   r   planr  r	  r  zmission_plan_page.html)r1   r@   r   r2   r/   r3   r'   r4   r5   r.   r0   r   FlightPlansr_   rv   rX   r   r   r   rt   rR   flight_planrM   r   )r6   
mission_idplan_idr7   r8   r-   r   r=  rn   r  r   rp   r   r  rG   r9   r9   r:   mission_plan_viewer:  s4    


rB  c                 C   sV  | j jstdS tjj|| j jd s0tdS dd l}tjj	|d}t
jj	|d}tjj| j jd}t
jd}tjj|jd}tjj|d}	ztjj|jd}
W n tjy   d}
Y n0 tjjd |d	 }tjjd |d	}td
 }||
}||}||	}tjj	| j jd}| jdkr&| j}d|v rRtjjd |d |d nd|v rtj	 }||	dd|_|  nd|v rt| nxd|v rdd l}tjjd|j !  |dd}tjjd |d	}| dkr|D ]}|}|j|_"|  qn|#  t$d| d| dS ||||||j%||||t&|j'd}t(| d|S )Nr<   r   r   r$   r&   r)   r^   r`   r@  r_   rI   rJ   newPathr   r@  sequence_numr_   ZeditedPathsr   ZdeletedPathsarchivePath   Arhivēta misija - rK   r_   stage_idr-  z/flightPlan)r+   r,   rm   rn   r  r  r   r	  
blockPlansr-   r   zflight_plan_page.html))r1   r@   r   r2   r/   r3   r'   ry   rI   r0   r4   r5   rt   rX   ru   rv   r   r>  countr   r   rR   r.   rS   rJ   rT   rU   r?  rz   r{   r   r   r   r   r@  r|   r   rM   r   rL   r   )r6   r)   r}   rI   rm   rn   r7   r8   rp   r   r  	planCountcurrentBlockFlightPlansr   r  r   r   r-   r   r=  r   r   missionPlansr7  rG   r9   r9   r:   !block_flight_plan_edit_unselectedb  sp    










rP  c                 C   s  | j jstdS tjj|| j jd s0tdS dd l}tjj	|d}t
jj	|d}tjj| j jd}t
jd}tjj	|d}	tjj|jd}
tjj|d}ztjj|jd}W n tjy   d}Y n0 tjjd |d	 }tjjd |d	}td
 }||}||
}||}tjj	| j jd}| jdkr| j}d|v r^tjjd |d |d d|v rtjj	|d}||	dd|_|  nd|v rtjj	|d}||	dd|_|  nd|v rtjj	|d}d |_|  nxd|v rjdd l}tjjd|j   |dd}tjjd |d	}| dkrb|D ]}|}|j|_!|  qDn|"  t#d| d| d| S ||||||j$|||||	j|t%|j&d}t'| d|S )Nr<   r   r   r$   r&   r)   r^   r`   rC  rI   rJ   rD  r   rE  ZaddPathr   ZeditPathZ
deletePathrG  rH  rI  r-  z/flightPlan/)r+   r,   rm   rn   r  r  r   r	  rK  ZplanIDcurrentPlanr-   r   zflight_plan_page_selected.html)(r1   r@   r   r2   r/   r3   r'   ry   rI   r0   r4   r5   r>  rt   rX   ru   rv   r   rL  r   r   rR   r.   rS   rJ   rT   rU   r?  rz   r   r   r   r   r@  r|   r   rM   r   rL   r   )r6   r)   r}   rA  rI   rm   rn   r7   r8   rQ  rp   r   r  rM  rN  r   r  r   r   r-   r   r=  r   r   rO  r7  rG   r9   r9   r:   block_flight_plan_edit_selected  s    











rR  c                 C   s&  | j jstdS tjj|| j jd s0tdS tjj|d}t	jj|d}tjj| j jd}t	j
d}tjj| j jd}tjj|d}tj }	g }
|D ]d}|
tjj|jd7 }
d}|
D ]"}|tjj|j|jd	d
 7 }q| dtjj|jd  |_q| jdkr| j}d|v rzf|ddkr6d}nd}|ddkrPd}nd}t||dd|d||t|ddd W n> ty } z$t| dt| d W Y d }~n
d }~0 0 n(d|v rtjj|ddd}|  td| d| dS |||	|||||
d}t| d|S )Nr<   r   r$   r&   r)   r^   r@  r      )r@  rA  r   z / rJ   Z
NewMissionZmission_obstacle_avoidancer   FTZmission_one_sidemission_nameZmission_yieldStagesZmission_altitude)
only_sidesobstacle_avoidanceflying_altitudeu$   Misiju nesanāca izveidot! Iemesls: 
ZdeleteMissionZ	missionIDr-  z	/missions)rm   rn   yieldStagesr+   r,   r-   r   flightPlanszblock_missions_overview.html)r1   r@   r   r2   r/   r3   r'   ry   r0   r4   r5   r.   r   rD   rC   r>  rX   r   rL  progressrS   rJ   autonomous_flight_time_planningr   r  r   successr  r|   r   r   )r6   r)   r}   rm   rn   r+   r,   r-   r   rZ  r[  r   ZcompletedFlightsr=  r   rW  rV  r  rG   r9   r9   r:   block_missions_overview_page  sZ    
 "
20
r_  c                 C   s2  | j jstdS tjj|| j jd s0tdS tjj|d}t	jj|d}t
jj|d}tjj| j jd}t	jd}tjj| j jd}	tjj|d}
|
D ]}zddlm} tjj||jd	}d
}|jdkrd|_||j| d||j| |_nb|jdkr2d|_||j| d||j| |_n*d|_||j| d||j| |_W q tjy   d|_d|_Y q0 qztjj|jd}W n tjy   d}Y n0 td }tjj|jd}tjj|d}||}||
}||}||}||||||	|
||j|||d}t| d|S )Nr<   r   r$   r&   r)   rS  r   )r   )r@  rA  z%d-%m-%y %H:%M:%SrT  u
   Izpildītsr   rj   u	   Progresāu
   Ieplānotsu   NeizpildītsZNavr^   rI   r`   )rm   rn   currentMissionr+   r,   r-   r[  r	  r  ZflightPlans_JSONr  ZnoFlightZonesz$block_specific_mission_overview.html)r1   r@   r   r2   r/   r3   r'   ry   r0   r4   r   r5   r.   r>  r   r   rX   r   r   r   r   r   r   rv   r   r   rh   ru   rR   rM   r   )r6   r)   r}   r@  rm   rn   r`  r+   r,   r-   r[  r=  r   r   r   r  r   rq   ZcurrentNoFlightZonesr  ZPlanDatar   ZNoFlightZoneDatarG   r9   r9   r:   block_specific_mission_overview"  sh    
&&(




ra  c                 C   sx  | j jstdS tjj| j jd}tjd}t	jj
| j jd}tjj| j jd}|jdd}tjj| j jd}|D ]V}|jtdd t  }|jd	krt|jd
k r|jd  d|_qt|jd
  d|_qt|||||d}| jdkrld| jv r^| j}	|	
dd }
|	
dd }|	
dd }t	jj
| j jd}|
|_||_||_|  tdS d| jv r| j}	|	
dd }|	
dd }|	
dd }tjj| j j|||d}tjd	  d|j }d}d| }tj }|g}t!|||| tdS d| jv r@| j}	tjj
|	
ddd}|j" |_"|  tdS | j}	tjj
|	
ddd}|#  tdS t$| d|S )Nr<   r&   r)   r$   T)is_ownerr   r   r   i  <   u	    minūtesz stundas)r+   r,   r-   workersinvitationsrJ   Zenterprise_titler   Zenterprise_addressZenterprise_emailz/enterprise/settingsworker_nameZworker_surnameZworker_email)r'   rK   surnameemailz/register/code=u   Reģistrācijas kodsu   Jūsu reģistrācijas saite ir r   rX   zenterprise_settings.html)%r1   r@   r   r2   r/   r3   r'   r4   r5   r.   r0   Usersr  TemporaryUserinvite_timer   r   r   r   secondsZ	time_leftrS   rJ   r   r   rL   rh  rz   rT   r   ALLOWED_HOSTScodeEMAIL_HOST_USERr   	is_activer|   r   )r6   r7   r8   r-   rd  re  inviter   rG   r   r   rL   rh  rK   rg  r7  Zregistration_urlsubjectmessage
email_fromrecipient_listr1   r9   r9   r:   enterprise_settingsf  sp    



rv  c                 C   sZ  | j jstdS tjj| j jd}tjd}t	jj
| j jd}tjj| j jd}| jdkr@| j}d|v r|
dd }|
d	d}|dkrtjj| j j|d d
 ntjj| j j||d
 nxd|v r|
dd}|
dd }|
d	d}tjj
|d}	||	_||	_|	  n"|
dd}tjj
|d}	|	  tdS ||||d}
t| d|
S )Nr<   r&   r)   r$   rJ   Z	addDevicedevice_namer   Zdevice_block)r'   rK   r_   Z
editDeviceZdeviceIDz/devices/edit)r+   r,   r-   deviceszdevice_edit.html)r1   r@   r   r2   r/   r3   r'   r4   r5   r.   r0   DevicesrS   rJ   r   rT   rK   r_   rz   r|   r   )r6   r+   r,   r-   rx  r   rK   r8   r%   devicerG   r9   r9   r:   device_edit  s@    

r{  c                 C   s  | j jstdS tjj| j jd}tjd}t	jj| j jd}t
j }tjj| j jd}t	jj| j jdjd d}tjd}|D ]}|j|jd}q| jdkr| j}	d|	v r$|	dd	 }
|	d
d	 }|	dd	 }|d	kr
t	jj| j j|
|d d nt	jj| j j|
||d nd|	v r|	dd	 }
|	d
d	}|	dd	 }|d	krt	jj|	dd	d}|
|_||_d |_|  n4t	jj|	dd	 d}|
|_||_||_|  nt	jj|	dd	d}|  tdS ||||||d}t| d|S )Nr<   r&   r)   r$   r^   rJ   ZaddDroneZ
drone_namer   Zdrone_modelZdrone_block)r'   rK   model_idr_   Z	editDroner9  z/drones/edit)r+   r,   r-   r/  droneModelsblocksDronelesszdrone_edit.html)r1   r@   r   r2   r/   r3   r'   r4   r5   r1  DroneModelsrC   r.   r0   r  r_   rS   rJ   r   rT   rK   r|  rz   r|   r   )r6   r7   r,   r/  r}  r-   ZdronesWithBlocksr~  r:  r   rK   modelr8   rG   r9   r9   r:   drones_edit  s\    






	r  c                 C   s  | j jstdS tjj| j jd}tjd}t	jj| j jd}t
j }tjj| j jd}| jdkr| j}d|v r|dd }|d	d }|d
d}	|dd }
t	jj| j j|||	|
d tdS d|v r\|dd}|dd }|d	d }|d
d}	|dd }
t	jj|d}||_||_|	|_|
|_|  tdS |dd}t	jj|d}|  tdS |||||d}t| d|S )Nr<   r&   r)   r$   rJ   ZaddMeteostationZmeteostation_namer   Zmeteostation_locationZmeteostation_serviceZmeteostation_serviceuri)r'   rK   locationmeteoservice_idservice_uriz/meteostations/editZeditMeteostationr8  )r   servicesr+   r,   r-   zmeteostation_edit.html)r1   r@   r   r2   r/   r3   r'   r4   r5   r   MeteoservicerC   r.   r0   rS   rJ   r   rT   rK   r  r  r  rz   r|   r   )r6   r+   r,   r   r  r-   r   rK   r  serviceZ
serviceURIr%   r   rG   r9   r9   r:   MeteoStations_edit  sP    

r  c                 C   s&  | j jstdS tjj|| j jd s0tdS tjj| j jd}tj	d}t
jj| j jd}tjj|d}tjj|d}tjj|d}|D ]x}	zNtjj|	jd	d }
tjj|
jd}|
j|	_|
j|	_|j|	_|
j|	_W q   d |	_d |	_d |	_d |	_Y q0 q||||||d	}t| d
|S )Nr<   r   r&   r)   r$   r^   r  rX   )r+   r,   r-   treesrn   rm   zblock_scab_page.html)r1   r@   r   r2   r/   r3   r'   ry   r4   r5   r.   r0   rt   r   rX   r  r   r@  has_scabprobability_scabrK   r   r   has_Scabr   )r6   r}   r)   r+   r,   r-   rm   rn   r  r5  r  misijarG   r9   r9   r:   scab_page_blockC  s>    r  c           	      C   s   | j jstdS tjj| j jd}tjd}t	jj
| j jd}tj }|D ]x}zNtjj|jdd }tjj
|jd}|j|_|j|_|j|_|j|_W qN   d |_d |_d |_d |_Y qN0 qN||||d}t| d|S )	Nr<   r&   r)   r$   r  rX   )r+   r,   r-   r  zscab_page.html)r1   r@   r   r2   r/   r3   r'   r4   r5   r.   r0   rt   rC   r   rX   r  r   r@  r  r  rK   r   r   r  r   )	r6   r+   r,   r-   Z
usersTreesr5  r  r  rG   r9   r9   r:   	scab_pagei  s2    
r  c                 C   s  | j jstdS tjj| j jd}tjd}t	jj
| j jd}tj }tjj|jd}| jdkr| j}d|v rRz|
dd d	d
}|
dd }t|dkrd }t|dkrd }tjj|
dd |
dd |
dd d	d
|
dd d	d
|||
dd d	d
|jd W n   t| d Y n0 n`d|v rhz|
dd d	d
}|
dd }t|dkrd }t|dkrd }tjj
|
dd d}	|
dd |	_|
dd |	_|
dd d	d
|	_|
dd d	d
|	_||	_||	_|
dd d	d
|	_|	  W n   t| d Y n0 nJd|v rz&tjj
|
dd d}	|	  W n   t| d Y n0 tdS |||||d}
t | d|
S )Nr<   r&   r)   r$   rJ   ZaddBreedZbreed_yieldsr   r$  r%  Zbreed_injectionr   Z
breed_namer#  Zbreed_heightZbreed_widthZbreed_planting_distance)r   rQ   r&  r'  r   	injectionplanting_distancer'   u)   Problēma ar datiem, mēģiniet vēlreiz!Z	editBreedZbreedIDz/enterprise/tree_breeds)r+   r,   r-   r=   r2  zenterprise_tree_breed_page.html)!r1   r@   r   r2   r/   r3   r'   r4   r5   r.   r0   rB   rC   rw   rX   rS   rJ   r   r   rW   rT   r   r^  r   rQ   r&  r'  r   r  r  rz   r|   r   )r6   r+   r,   r-   r=   r2  r   r   r  r(  rG   r9   r9   r:   enterprise_tree_breeds  s|    





r  c                 C   s(  | j jstdS tjj| j jd}tjj| j jd}t	jj|d
d}tjjtjjt	jjtjj| j jdddd}td }||}||}|tjjtjjt	jjtjj| j jdddd}t|}	|	D ]&}
tjj|
d	 d}| |
d
 d< q|||t|	||d}t| d|S )Nr<   r$   r&   r(   r)   r   r   rI   r%   r  r  )r+   r,   r-   r
  Z	blockJSONZflightplanszcalendar.html)r1   r@   r   r.   r/   r0   r'   r2   r3   r4   r5   r   r   r   r   rR   r>  rI   rU   r  r   r   )r6   r-   r7   r,   r   r   Zenterprise_flightsDataZ
block_dataZFlightplansDatar  rZ   r   rG   r9   r9   r:   calendar  s,    0

6
r  )Jemail.headerregistryr   tokenizer   django.shortcutsr   r   r   django.httpr   django.confr   django.core.files.storager	   django.views.decorators.csrfr
   django.db.models.functionsr   django.db.modelsr   r   r   django.core.mailr   formsr   modelsr   django.views.generic.editr   r   django.viewsr   django.corer   django.contribr   django.views.decorators.cacher   django.utilsr   	traceback	functionsflight_planning_algorithmr   r   r;   rH   r\   r   r   r   r   r   r   r   r   r   r   r"  r<  rB  rP  rR  r_  ra  rv  r{  r  r  r  r  r  r  r9   r9   r9   r:   <module>   s   

^
/

W


.

 
!
 D
'
=
H
8
C
H
(
8
1
%

E