
    恕fM                         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  G d	 d
e      Z G d de      Zd Zy)    N)BaseModelView)db)ndb)Form)create_editable_list_form   )AdminModelConverterc                   n    e Zd ZdZd Zd Zd Zd Zd Zd Z	dZ
eZ	 d	 Zdd
Z	 ddZd Zd Zd Zd Zy)NdbModelViewz*
    AppEngine NDB model scaffolding.
    c                 6    |j                   j                         S N)keyurlsafeselfmodels     a/var/www/feuerwehr-webapp/venv/lib/python3.12/site-packages/flask_admin/contrib/appengine/view.pyget_pk_valuezNdbModelView.get_pk_value   s    yy  ""    c           
          t        | j                  j                  j                         D cg c]"  \  }}t	        |t
        j                        s!|$ c}}      S c c}}w r   )sortedr   __dict__	iteritems
isinstancer   Propertyr   kvs      r   scaffold_list_columnsz"NdbModelView.scaffold_list_columns   sC    tzz':':'D'D'FfVa*UVX[XdXdJeqfggf   "A
A
c                     | j                   j                  j                         D cg c]/  \  }}t        |t        j
                        s!|j                  s.|1 c}}S c c}}w r   )r   r   r   r   r   r   _indexedr   s      r   scaffold_sortable_columnsz&NdbModelView.scaffold_sortable_columns   sF     $

 3 3 = = ?nfq!:aQTQ]Q]C^cdcmcmnnns   "A A A c                      y r    r   s    r   init_searchzNdbModelView.init_search       r   c                      y r   r%   r&   s    r   is_valid_filterzNdbModelView.is_valid_filter        r   c                      y r   r%   r&   s    r   scaffold_filterszNdbModelView.scaffold_filters#       r   Nc           	          t        j                  | j                         t        | j                  | j
                  | j                  | j                               }|S )N)
base_classonlyexclude
field_args	converter)wt_ndb
model_formr   r   form_columnsform_excluded_columns	form_argsmodel_form_converter)r   
form_classs     r   scaffold_formzNdbModelView.scaffold_form7   sK    &&JJL""..~~//1

 r   c                     t        j                  | j                         t        | j                  | j
                  | j                               }t        t        ||      }|S )N)r0   r1   r3   r4   )r5   r6   r   r   column_editable_listr9   r:   r   )r   widget
validatorsr;   results        r   scaffold_list_formzNdbModelView.scaffold_list_formB   sO    &&JJL**~~//1

 +4VDr   c                     | j                   j                         }|r,t        | j                   |      }|r| }|j                  |      }|s| j                  }|j                  |||z        }	|j                         |	fS )Noffset)r   querygetattrorder	page_sizefetchcount)
r   page
sort_field	sort_descsearchfiltersrI   qorder_fieldresultss
             r   get_listzNdbModelView.get_listM   su     JJ!$**j9K*l$AI'')D9,<'=wwy'!!r   c                 J    t        j                  |      j                         S )N)r   )r   Keyget)r   urlsafe_keys     r   get_onezNdbModelView.get_one`   s    ww{+//11r   c                    	 | j                         }|j                  |       |j                          | j                  ||d       |S # t        $ r0}| j                  |      st        j                  d       Y d }~yd }~ww xY w)NTFailed to create record.F)r   populate_objputafter_model_change	Exceptionhandle_view_exceptionlogging	exceptionr   formr   exs       r   create_modelzNdbModelView.create_modelc   sv    	7JJLEe$IIK ##D%6  	--b1 !!"<=	s   1A 	B&A<<Bc                     	 |j                  |       |j                          | j                  ||d       y# t        $ r0}| j	                  |      st        j                  d       Y d }~yd }~ww xY w)NFFailed to update record.T)r\   r]   r^   r_   r`   ra   rb   rc   s       r   update_modelzNdbModelView.update_models   si    
	8e$IIK ##D%7  	--b1 !!"<=	s   !7 	A0 &A++A0c                     	 |j                   j                          | j                  |       y# t        $ r0}| j	                  |      st        j                  d       Y d }~yd }~ww xY w)NFailed to delete record.FT)r   deleteafter_model_deleter_   r`   ra   rb   r   r   re   s      r   delete_modelzNdbModelView.delete_model   s^    
	+II ##E*  	--b1 !!"<=	s   . 	A'&A""A')NNr   )__name__
__module____qualname____doc__r   r   r#   r'   r*   r-   r9   r	   r:   r<   rB   rT   rY   rf   ri   ro   r%   r   r   r   r      sa    #ho I.		  "&2 r   r   c                   X    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zy)DbModelViewz)
    AppEngine DB model scaffolding.
    c                 4    t        |j                               S r   )strr   r   s     r   r   zDbModelView.get_pk_value   s    599;r   c           
          t        | j                  j                  j                         D cg c]"  \  }}t	        |t
        j                        s!|$ c}}      S c c}}w r   )r   r   r   r   r   r   r   r   s      r   r   z!DbModelView.scaffold_list_columns   sC    tzz':':'D'D'FeVa*UVXZXcXcJdqeffer    c           	          | j                   j                  j                         D cg c].  \  }}t        |t        j
                        rt        |dd       r|0 c}}S c c}}w )Nindexed)r   r   r   r   r   r   rG   r   s      r   r#   z%DbModelView.scaffold_sortable_columns   sU     $

 3 3 = = ? Ofq!a-'!Y2M  O 	O Os   3Ac                      y r   r%   r&   s    r   r'   zDbModelView.init_search   r(   r   c                      y r   r%   r&   s    r   r*   zDbModelView.is_valid_filter   r+   r   c                      y r   r%   r&   s    r   r-   zDbModelView.scaffold_filters   r.   r   c                 H    t        j                  | j                               S r   )wt_dbr6   r   r&   s    r   r<   zDbModelView.scaffold_form   s    

--r   c                     | j                   j                         }|r|rd|z   }|j                  |       |j                  | j                  || j                  z        }|j                         |fS )N-rD   )r   allrH   rJ   rI   rK   )r   rL   rM   rN   rO   rP   rQ   rS   s           r   rT   zDbModelView.get_list   s`     JJNN :-
GGJ''$..1F'Gwwy'!!r   c                 T    t        j                  t        j                  |            S )N)encoded)r   rW   rV   )r   encoded_keys     r   rY   zDbModelView.get_one   s    vvbff[122r   c                     	 | j                         }|j                  |       |j                          |S # t        $ r0}| j	                  |      st        j                  d       Y d }~yd }~ww xY w)Nr[   F)r   r\   r]   r_   r`   ra   rb   rc   s       r   rf   zDbModelView.create_model   s`    
	JJLEe$IIKL 	--b1 !!"<=	s   25 	A.&A))A.c                     	 |j                  |       |j                          y# t        $ r0}| j                  |      st	        j
                  d       Y d }~yd }~ww xY w)NTrh   F)r\   r]   r_   r`   ra   rb   rc   s       r   ri   zDbModelView.update_model   sS    		e$IIK 	--b1 !!"<=	s   !$ 	A&AAc                     	 |j                          y# t        $ r0}| j                  |      st        j                  d       Y d }~yd }~ww xY w)NTrk   F)rl   r_   r`   ra   rb   rn   s      r   ro   zDbModelView.delete_model   sF    	>LLN 	>--b1 !!"<=	>s    	A&AAN)rp   rq   rr   rs   r   r   r#   r'   r*   r-   r<   rT   rY   rf   ri   ro   r%   r   r   ru   ru      sE     gO
."3

r   ru   c                     t        | t        j                        rt        |       S t        | t        j                        rt        |       S t        d| z        )NzUnsupported model: %s)
issubclassr   Modelr   r   ru   
ValueError)r   s    r   	ModelViewr      sE    %#E""	E288	$5!!05899r   )ra   flask_admin.modelr   wtforms_appenginer   r   r   r5   google.appengine.ext	flask_wtfr   flask_admin.model.formr   rd   r	   r   ru   r   r%   r   r   <module>r      sC     + ) + # $  < %@= @FP- Pf:r   