
    7g F                        d dl mZmZmZmZmZmZmZ d dlm	Z	 d dl
mZ d dlmZmZmZmZmZmZ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% d dl&Z&d dl'Z'd dl(Z(d dl)m)Z)  ee*      Z+de+jX                  d<   de+jX                  d<   h de+jX                  d<   ee+jX                  d<   ee+jX                  d<   de+_-        de+jX                  d<   de+jX                  d<   de+jX                  d<   de+jX                  d<   de+jX                  d <    e	e+        e!e+      Z.d!d"d#d$d%Z/ e&j`                  e+jX                  d   d&'        e&j`                  e+jX                  d   d&'        ee+jX                  jc                  d(      )      Z2 e'jf                  d*e'jh                  d+,        G d- d.e.jj                        Z6 G d/ d0e.jj                        Z7 G d1 d2e.jj                        Z8e+js                         5  e.ju                          ddd       e+jw                  d3d4g5      d6        Z<e+jw                  d7d8g5      d9        Z=e+jw                  d:d4d8g5      d;        Z>e+jw                  d<d4d8g5      d=        Z?e+jw                  d>d4d8g5      d?        Z@e+jw                  d@d4d8g5      dA        ZAe+jw                  dB      dC        ZBe*dDk(  re+j                  dd&E        e#e+dFdGH      ZDeDj                   e%e6e.j                               eDj                   e%e7e.j                               eDj                   e%e8e.j                               e+jw                  dId4d8g5      dJ        ZFd dl)m)Z) e+jw                  dKd4d8g5      dL        ZGe*dDk(  re+j                  d&M       yy# 1 sw Y   xY w)N    )Flaskrequestrender_templateredirecturl_forsessionjsonify)Session)secure_filename)	FAHRZEUGEWEITERE_KRAEFTEfont_Headline_pathfont_Einsatzstichwort_pathROOM_CALENDARDROHNE_CALENDARFOOTER_TEXT)allowed_filecorrect_image_orientationadd_watermark)generate_social_media_post)add_event_to_calendar)add_event_to_google_calendar)OpenAI)
SQLAlchemy)Admin)	ModelViewN)datetimez(/var/www/feuerwehr-webapp/static/uploadsUPLOAD_FOLDERz /var/www/feuerwehr-webapp/staticSTATIC_FOLDER>   gifjpgpngjpegALLOWED_EXTENSIONSr   r   supersecretkey
filesystemSESSION_TYPEz'/var/www/feuerwehr-webapp/flask_sessionSESSION_FILE_DIR
SECRET_KEYzsqlite:///checkliste.dbSQLALCHEMY_DATABASE_URIFSQLALCHEMY_TRACK_MODIFICATIONSzTueroeffnung112!zSesamOEffneDich112!zDrohneBuchen112!yourpassword)social_mediaraumbuchungdrohnenbuchungdrohnen_checklisteT)exist_okOPENAI_API_KEY)api_keyz!/var/www/feuerwehr-webapp/app.logz%(asctime)s %(message)s)filenamelevelformatc                      e Zd Zej	                  ej
                  d      Zej	                  ej                  d      Zej	                  ej                  d      Z	ej	                  ej                  d      Z
ej	                  ej                  d      Zej	                  ej                  d      Zej	                  ej                  d      Zej	                  ej                  d      Zej	                  ej                  d      Zej	                  ej                  d      Zej	                  ej                  d      Zej	                  ej                  d      Zej	                  ej                  d      Zej	                  ej                  d      Zej	                  ej                  d      Zej	                  ej                  d      Zej	                  ej                  d      Zej	                  ej                  d      Zej	                  ej                  d      Zej	                  ej                  d      Zej	                  ej                  d      Zej	                  ej                  d      Zej	                  ej                  d      Zej	                  ej                  d      Zej	                  ej                  d      Zej	                  ej                  d      Z ej	                  ej                  d      Z!ej	                  ej                  d      Z"ej	                  ej                  d      Z#ej	                  ej                  d      Z$ej	                  ejK                  d      d      Z&ej	                  ejN                  d      Z(ej	                  ejK                  d      d      Z)y)DrohnenChecklisteTprimary_keyF)defaultd   nullableN)*__name__
__module____qualname__dbColumnIntegeridBooleanstartplatz_eingerichtetfernsteuerung_einschaltenbildschirm_schaltet_einrotoren_ueberpruefendrohne_einschaltenapp_startetkompass_kalibrierenkeine_warnungengps_empfangverbindung_voller_ausschlagakkuladezustandflugmodus_pstartplatz_festautomatischen_start_einleiten
aufsteigenkeine_warnmeldungenhomepoint_gesetztschwebeflug
drehen_360gierensinkflugakkustand_flugzielanflug_landezone_freilandezone_freilandezone_anfliegenkamera_herunterschwenkendrohne_abwendensinken_landegeschwindigkeitmotoren_abschaltenStringortDatedatumunterschrift      /var/www/feuerwehr-webapp/app.pyr8   r8   2   s   	2::4	0B ii

EiB "		"**e	 D ii

EiB99RZZ9?2::u=))BJJ)6K))BJJ)>ii

Ei:O))BJJ)6K"$))BJJ)"Fii

Ei:O))BJJ)6Kii

Ei:O$&IIbjj%I$H!2::u5J))BJJ)>		"**e	<))BJJ)6K2::u5JYYrzz5Y1FyyUy3H2::u=IIbjj%I@YYrzz5Y9N))BJJ)>!yyUyCii

Ei:O"$))BJJ)"F2::u=
))BIIcNU)
3CIIbggI.E99RYYs^e9<Lrj   r8   c                   X   e Zd Zej	                  ej
                  d      Zej	                  ej                  d      dd      Zej	                  ej                  d      d      Z	ej	                  ej                  d      d      Z
ej	                  ej                  d      d      Zy	)
HydrantTr9   2   F)uniquer>      r=   r<   N)r?   r@   rA   rB   rC   rD   rE   rd   nummerstandortbeschreibungutm_koordinate	gps_datenri   rj   rk   rm   rm   U   s    	2::4	0BYYryy}TEYBF99RYYs^e9DYYryy~Y=N		"))C.4	8Irj   rm   c                   D   e Zd Zej	                  ej
                  d      Zej	                  ej
                  ej                  d      d      Zej	                  ej                  d      Z
ej	                  ej                  d      Zej	                  ej
                  d      Zej	                  ej
                  d      Zej	                  ej
                  d      Zej	                  ej
                  d      Zej#                  dej%                  dd      	      Zy
)HydrantDataTr9   z
hydrant.idFr=   rm   entries)lazy)backrefN)r?   r@   rA   rB   rC   rD   rE   
ForeignKey
hydrant_idrf   rg   Text	bemerkungwert_1wert_2wert_3wert_4relationshipry   hydrantri   rj   rk   rv   rv   \   s    	2::4	0B2::r}}\'BUSJIIbggI.E		"''D	1IYYrzzDY1FYYrzzDY1FYYrzzDY1FYYrzzDY1FooiID1QoRGrj   rv   /GET)methodsc                  $    t        dt              S )N
start.html)footer_text)r   r   ri   rj   rk   startr   k   s    <[AArj   z/password_checkPOSTc                     t         j                  dk(  rtt        j                         } | j                  d      }| j                  d      }|t        j                  |      k(  rdt
        |dz   <   t        ddi      S t        ddi      S t         j                  j                  d      }t         j                  j                  d      }|t        j                  |      k(  r dt
        |dz   <   t        t        |            S t        dd	
      S )Nzapplication/jsonpasswordpageT_authenticatedsuccessFr   u%   Falsches Passwort für diesen Bereich)message)r   content_typeget_jsonget	passwordsr   r	   formr   r   r   )datar   r   s      rk   password_checkr   o   s    11!88J'xxy}}T**/3GD++,It,--Iu-..<<##J/||'y}}T**/3GD++,GDM**"<9`aarj   z/social_mediac                  F   t        j                  dd      } | st        d|       S t        j                  dk(  rA	 t        j
                  d   }t        j
                  d   }t        j
                  d   }t        j
                  d	   }t        j
                  d
   }t        j
                  d   }t        j
                  d   }t        j
                  j                  d      }t        j
                  j                  d      }	t        j
                  j                  d      }
dj                  |	      }dj                  |
      }t        |||||||||t        |      }t        j                  d       t        d|d      S t!        j"                  t         j$                  j                  t&        j(                  d   d            }t        d|t*        t,        t.        |       S # t        $ r;}t        j                  d|        t        dt        |      d      dfcY d }~S d }~ww xY w)Nsocial_media_authenticatedFzsocial_media.htmlis_authenticatedr   einsatznummereinsatzstichworteinsatzmeldunguhrzeitrg   re   einsatzberichtusegpt	fahrzeugeweitere_kraefte
z Generated post text successfullyT)r   	post_textzError occurred: )r   errori  r   
predefined)predefined_imagesfahrzeuge_listweitere_kraefte_listr   r   )r   r   r   r   methodr   getlistjoinr   clientloggingdebugr	   	Exceptionr   stroslistdirpathappconfigr   r   r   )r   r   r   r   r   rg   re   r   use_gptr   r   fahrzeuge_textweitere_kraefte_textr   er   s                   rk   r-   r-      s   {{#?G2EUVV~~	E#LL9M&||,>?$\\*:;Nll9-GLL)E,,u%C$\\*:;Nll&&x0G,,[9I%ll223DEO "YYy1N#'99_#=  3/%QTVdft  wK  MS  U\I MM<= t)DEE 

277<<

?0K\#Z[.BSdm  ET  bm  @P  Q  Q  	EMM,QC01us1v>?DD	Es   D?G 	H %0HH H z/raumbuchungc                  *   t        j                  dd      } | st        d| t              S t        j
                  dk(  rt        j                  d   }t        j                  d   }t        j                  d   }d	}|r|sy
t        j                  |d      }t        j                  |d      }||k\  ryt        t        j                  d   |||d      \  }}|rd| }	t        d|	t        |       S t        d||||t              S t        dt        |       S )Nraumbuchung_authenticatedFzraumbuchung.htmlr   r   r   bookerr   endRaumu,   Start- und Endzeit müssen angegeben werden.  %Y-%m-%dT%H:%Mz'Endzeit muss nach der Startzeit liegen.r   r   T)	multi_dayzFehler bei der Raumbuchung: result_calendar.htmlerror_messager   r   objectr   r   r   r   r   r   )r   r   r   r   r   r   r   r   strptimer   r   r   
r   r   r   r   r   start_dtend_dtlinkr   r   s
             rk   r.   r.      s!   {{#>F1DTbmnn~~h'W%ll5!CF$$U,<=""3(89vA23::o3NPVX`bhtxye;E7CM"#9do  CS  T  T5fV[cio  ~I  J  	J-;Yijjrj   z/drohnenbuchungc                     t        j                  dd      } | st        d|       S t        j                  dk(  rt        j
                  d   }t        j
                  d   }t        j
                  d   }d	}|r|sy
t        j                  |d      }t        j                  |d      }||k\  ryt        t        j                  d   |||      \  }}|rd| }	t        d|	t        |       S t        d||||t              S t        dt        |       S )Ndrohnenbuchung_authenticatedFzdrohnenbuchung.htmlr   r   r   r   r   Drohner   r   r   r   zFehler bei der Drohnenbuchung: r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   s
             rk   r/   r/      s   {{#A5I4GWXX~~h'W%ll5!CF$$U,<=""3(89vA23::>O3PRXZbdjke=eWEM"#9do  CS  T  T5fV[cio  ~I  J  	J0k\lmmrj   z/drohnen_checklistec                     t        j                  dd      } | st        d| t              S t        j
                  dk(  rdt        j                  v }dt        j                  v }dt        j                  v }d	t        j                  v }d
t        j                  v }dt        j                  v }dt        j                  v }dt        j                  v }dt        j                  v }	dt        j                  v }
dt        j                  v }dt        j                  v }dt        j                  v }dt        j                  v }dt        j                  v }dt        j                  v }dt        j                  v }dt        j                  v }dt        j                  v }dt        j                  v }dt        j                  v }dt        j                  v }dt        j                  v }dt        j                  v }dt        j                  v }dt        j                  v }d t        j                  v }d!t        j                  v }d"t        j                  v }t        j                  d#   }t        j                  t        j                  d$   d%      }t        j                  d&   } t        d*i d|d|d|d	|d
|d|d|d|d|	d|
d|d|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                          t        dd't        | (      S t        dt        | )      S )+N drohnen_checkliste_authenticatedFzdrohnen_checkliste.htmlr   r   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   rZ   r[   r\   r]   r^   r_   r`   ra   rb   rc   re   rg   %Y-%m-%drh   T)r   r   r   r   ri   )r   r   r   r   r   r   r   r   r   r8   rB   addcommit)"r   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   rZ   r[   r\   r]   r^   r_   r`   ra   rb   rc   re   rg   rh   
checklistes"                                     rk   r0   r0      s   {{#EuM8K[ituu~~";w||"K$?7<<$O!";w||"K5E1W\\A#w||33w||C+w||;#w||3&Cw||&S#+w||;#w||3+w||;(G7<<(W%!W\\1
3w||C/7<<?#w||3!W\\1
W\\)-1W\\A 77<< G)W\\93w||C#=#M +w||;&Cw||&S#1W\\All5!!!',,w"7D||N3& !
$;!
&?!
 %<!
 "6	!

  2!
 $!
 !4!
 ,!
 $!
 )D!
 ,!
 $!
 ,!
 +H!
 "!
  !4!!
" 0#!
$ $%!
& "'!
( )!
* +!
,  2-!
. #8/!
0 *1!
2 !43!
4 &>5!
6 ,7!
8 )D9!
:  2;!
< =!
> ?!
@ &A!

F 	

z"


8$T_  sC  D  	D4+`pqqrj   z/uploads/<filename>c                 <    t        t        j                  d   |       S )Nr   )send_from_directoryr   r   )r4   s    rk   uploaded_filer   @  s    szz/:HEErj   __main__)ssl_contextr   r   
bootstrap3)nametemplate_mode/admin_hydrantenc                     t         j                  dk(  rt         j                  d   } t         j                  d   }t         j                  d   }t         j                  d   }t        | |||      }t        j
                  j                  |       t        j
                  j                          t        d      S t        j                  j                         }t        d|	      S )
Nr   rq   rr   rs   rt   )rq   rr   rs   rt   r   zadmin_hydranten.html)hydrants)r   r   r   rm   rB   r   r   r   r   queryallr   )rq   rr   rs   rt   new_hydrantr   s         rk   admin_hydrantenr   M  s    ~~h'&||,BC &67LL-	 !5)	
 	

{#


*++ }}  "H1HEErj   z/hydrantenpflegec            	      @   t         j                  j                         } | D cg c]&  }|j                  |j                  |j
                  d( }}t        j                  j                  dd       }g }t        j                  dk(  rVt        j                  j                  d      }t        j                  t        j                  j                  d      d      }t        j                  j                  d      }t        j                  j                  dd       }t        j                  j                  d	d       }	t        j                  j                  d
d       }
t        j                  j                  dd       }t        |||||	|
|      }t        j                  j!                  |       t        j                  j#                          t%        t'        d|            S |r.t        j                  j)                  |      j                         }t+        d|||      S c c}w )N)rE   rq   rr   r{   r   r   rg   r   r}   r~   r   r   r   )r{   rg   r}   r~   r   r   r   hydranten_data_entry)r{   zhydrantenpflege.html)r   selected_hydrant_idselected_hydrant_data)rm   r   r   rE   rq   rr   r   argsr   r   r   r   r   rv   rB   r   r   r   r   r   	filter_byr   )r   hhydrants_listr   r   r{   rg   r}   r~   r   r   r   new_datas                rk   r   r   g  s   }}  "HowxjkADDAHHaNdNdexMx!,,**<>~~\\%%i0
!!',,"2"27";ZHLL$$[1	!!(D1!!(D1!!(D1!!(D1!
 	

x 


 6:NOO + 1 1 ; ;GZ ; [ _ _ a/3	 ? ys   +H)r   )Hflaskr   r   r   r   r   r   r	   flask_sessionr
   werkzeug.utilsr   modules.configr   r   r   r   r   r   r   modules.image_processingr   r   r   modules.social_mediar   modules.calendarr   modules.google_calendarr   openair   flask_sqlalchemyr   flask_adminr   flask_admin.contrib.sqlar   r   r   base64r   r?   r   r   
secret_keyrB   r   makedirsr   r   basicConfigDEBUGModelr8   rm   rv   app_context
create_allrouter   r   r-   r.   r/   r0   r   runadminadd_viewr   r   ri   rj   rk   <module>r     s   V V V ! * S  S  S [ [ ; 2 @  '  . 	   HoH

? @

? #@

  +

?  /

 !)

> !J

 +

< (A

$ %/4

+ , _ '(((		 CJJ'$ 7 CJJ'$ 7	

'78	9   @^w x!= !=F9bhh 9	S"(( 	S 	__ MMO 3 B !B vh/b 0b, ?UFO4(Q 5(QX >E6?3k 4k8 ufo6n 7n8  5&/:Or ;Ord  !F "F zGGDG) 	c|< y*BJJ7 8 y"**- . ybjj1 2v7F 8F. v7& 8&R zGG$G S	 s   N55N?