o
    }si	                     @   s   d dl Z d dlmZ d dlmZ ddlmZ ddlmZm	Z	m
Z
mZ G dd de jZe d	e  e Zefd
dZdefddZdd Zdd ZdS )    N)Flask)LoginManager   )Config)init_dbuser_existscreate_userget_all_settingsc                   @   s   e Zd ZdZdd ZdS )_SuppressPreviewPollzIDrop werkzeug access-log lines for the noisy label-preview poll endpoint.c                 C   s   d|  vS )Nz/print/preview/labels)
getMessage)selfrecord r   //var/www/warehouse.soldered.com/app/__init__.pyfilter   s   z_SuppressPreviewPoll.filterN)__name__
__module____qualname____doc__r   r   r   r   r   r
   
   s    r
   werkzeugc           
         s  t t  j|  t jd  t  t  dt_dt_	dt_
tj fdd}t  ddlm} dd	lm} dd
lm} ddlm} ddlm} ddlm} ddlm}  |  |  |  |  |  |  |  j fdd}	 S )NDATABASE_PATHz
auth.loginz*Please log in to access the warehouse app.warningc                    s<   ddl m} ddlm} |t|  jd }|r||S d S )Nr   )get_user_by_id)Userr   )dbr   modelsr   intconfig)user_idr   r   rowappr   r   	load_user%   s   zcreate_app.<locals>.load_userr   )	orders_bp)settings_bp)auth_bp)
preview_bp)label_templates_bp)products_bp)sync_bpc                      s&    j ddt  j dddkdS )N
PRINT_MODEapiMAKE_TEST_MODE 1)
print_modeapp_versionmake_test_mode)r   get_read_versionr   r    r   r   inject_globals@   s   z"create_app.<locals>.inject_globals)r   r   r   from_objectr   _load_db_settingslogin_managerinit_app
login_viewlogin_messagelogin_message_categoryuser_loader_seed_initial_userroutes.ordersr#   routes.settingsr$   routes.authr%   routes.print_previewr&   routes.label_templatesr'   routes.productsr(   routes.syncr)   register_blueprintcontext_processor)
config_classr"   r#   r$   r%   r&   r'   r(   r)   r4   r   r    r   
create_app   s8   







rH   returnc                  C   s>   ddl } | tjjd }z|  W S  ty   Y dS w )z(Read VERSION file from the project root.r   NVERSIONr-   )pathlibPath__file__parent	read_textstrip	Exception)rK   vfiler   r   r   r3   K   s   r3   c                 C   s2   t | jd }| D ]\}}|r|| j|< qdS )zAOverlay Flask config with values persisted in the settings table.r   N)r	   r   items)r!   db_settingskeyvaluer   r   r   r6   U   s   
r6   c                 C   sH   ddl m} | jd }t|s"d}td|||d | jd dS dS )	z:Create robert@soldered.com on first run if no users exist.r   )generate_password_hashr   zSoldered2026!zrobert@soldered.com)emailpassword_hashdb_pathuK   Seeded initial user robert@soldered.com — default password: Soldered2026!N)werkzeug.securityrW   r   r   r   loggerinfo)r!   rW   rZ   initial_passwordr   r   r   r=   ]   s   
r=   )loggingflaskr   flask_loginr   r   r   r   r   r   r   r	   Filterr
   	getLogger	addFilterr7   rH   strr3   r6   r=   r   r   r   r   <module>   s    6
