
    th
                     l    d dl Z d dlZd dlmZmZmZmZ d dlmZ d dl	m	Z	 da
d ZddZd Zd	 Zdd
ZdS )    N)sessionredirecturl_forrender_templatewraps)datetimec                 
    | a d S N)mysql)mysql_instances    "/var/www/html/KniffelGame/utils.py
init_utilsr      s    EEE    %d.%m.%Y %H:%Mc                 N    t          j                                        |           S r   )r	   nowstrftime)fmts    r   now_strr      s    <>>""3'''r   c                 <     t                      fd            }|S )Nc                     dt           vrt          t          d                    S 	 t          j                                        }|                    dt           d         f           |                                }|s/t          j                     t          t          d                    S t          t          d |j        D             |                    }|                                  	|g| R i |S # t          $ ri}t          j                    }d| }t!          j        dd                                          dk    rd	| d
nd}t'          d||z             cY d }~S d }~ww xY w)Nuser_idz
auth.loginz$SELECT * FROM benutzer WHERE id = %sc                     g | ]
}|d          S )r    ).0ds     r   
<listcomp>z3login_required.<locals>.wrapper.<locals>.<listcomp>   s     B B B!1 B B Br   u   Fehler bei Benutzerprüfung: 
DEBUG_MODEfalsetruez<pre>z</pre> fehler.htmlfehlermeldung)r   r   r   r   
connectioncursorexecutefetchonecleardictzipdescriptionclose	Exception	traceback
format_excosgetenvlowerr   )
argskwargsr'   datenbenutzeretraceback_strr%   debug_outputfuncs
            r   wrapperzlogin_required.<locals>.wrapper   s   G##GL11222	^%,,..FNNAGIDVCXYYYOO%%E 7 5 5666C B Bv/A B B BEJJKKHLLNNN4242226222 	^ 	^ 	^%022M?A??M<>IlT[<\<\<b<b<d<dhn<n<n8=8888tvL"=P\@\]]]]]]]]]		^s&   BC9 -AC9 9
E,AE'!E,'E,r   r<   r=   s   ` r   login_requiredr?      s8    
4[[^ ^ ^ ^ [^& Nr   c                 V     t                     t           fd                        }|S )Nc                 h    |                      d          st          dd          dfS  |d| i|S )N	ist_adminr#   z&Zugriff verweigert: Keine Adminrechte.r$   i  user)getr   )rC   r5   r6   r<   s      r   r=   zadmin_required.<locals>.wrapper*   sN     xx$$ 	o"=@hiiiknnnt/////r   )r   r?   r>   s   ` r   admin_requiredrE   )   s=    
4[[0 0 0 0 ^ [0
 Nr   c                 J   |dz
  |z  }|                     | ||f           |                                }|r0|                     |           |                                d         }n/|                     d           |                                d         }||z   dz
  |z  }||fS )uj  
    Führt eine paginierte SQL-Abfrage aus.

    :param query: SQL-SELECT-Query mit LIMIT/OFFSET-Platzhaltern
    :param page: aktuelle Seite (int)
    :param per_page: Einträge pro Seite (int)
    :param cursor: aktiver MySQL-Cursor
    :param count_query: optional: separate Query zur Ermittlung der Gesamtanzahl
    :return: (daten_liste, seitenanzahl)
       r   zSELECT FOUND_ROWS())r(   fetchallr)   )	querypageper_pager'   count_queryoffsetdaten_listetotalseitenanzahls	            r   paginaterQ   3   s     Qh("F
NN58V,---//##K %{###!!!$ 	,---!!!$H$q(X5L$$r   )r   r   )r0   r2   flaskr   r   r   r   	functoolsr   r	   r   r   r   r?   rE   rQ   r   r   r   <module>rT      s        				 = = = = = = = = = = = =              ( ( ( (  .  % % % % % %r   