U
    |g                  	   @   s4  d dl Z d dlmZmZmZmZmZmZ d dlm	Z	 d dl
mZ eeZdejd< dejd< d	ejd
< dejd< e	eZdddddddhZG dd dejZe  e  W 5 Q R X dd Zdd Zejdddgddd Zed d!d" Zed#d$d% Zed&kr0e jejd
 d'd( ejd'd) dS )*    N)Flaskrequestrender_templateredirecturl_forflash)
SQLAlchemy)secure_filenameZ	secretkey
SECRET_KEYzsqlite:///orders.dbZSQLALCHEMY_DATABASE_URIZuploadsUPLOAD_FOLDER (  MAX_CONTENT_LENGTHZjpgZjpegZgifZpngZwebpZheicZheifc                   @   s   e Zd ZejejddZejedddZejedddZ	ejedddZ
ejedddZejedddZejejddZejedddZejed	ddZd
S )OrderT)Zprimary_key2   F)Znullable   
   d      N)__name__
__module____qualname__dbZColumnZIntegeridStringcustomer_nameorder_channel
photo_size
gloss_typephoto_optionquantityfilenamefolder_path r"   r"   /home/little_py/little.pyr      s   r   c                 C   s    d| ko|  ddd  tkS )u5   파일 확장자가 허용 목록에 있는지 확인.   )rsplitlowerALLOWED_EXTENSIONSr    r"   r"   r#   allowed_file#   s    r*   c                 C   s   | j dkrdnd}| jdkr"d}n| jdkr2d}n| j}| j d| j d| d| d| j d	| j }d| }tj	t
jd
 |}tj|dd |S )u  
    주문 정보를 바탕으로 폴더 구조 생성
    상위 폴더 명명 규칙:
      - 기본 형식: "주문자명 사진크기 [유광/유무광] [옵션] 수량장 - 주문채널"
      - 유광만 있는 경우: 유광은 "(유광)"으로 표기
      - 무광만 있는 경우: 무광은 표기하지 않음
      - 옵션: 페이퍼풀은 '필인', 이미지풀은 '피트인'
      - 상위 폴더에서 이미지풀과 페이퍼풀이 같이 있으면 "필피트"로 표기하지만,
        여기서는 단일 주문 항목이므로 해당 옵션만 적용합니다.
    하위 폴더는 주문한 항목에 대해 모든 옵션을 명시하여 출력합니다.
    u   유광u   (유광) u   페이퍼풀u   필인u   이미지풀u	   피트인 u   장 - r   Texist_ok)r   r   r   r   r   r   joinsplitospathappconfigmakedirs)orderZ
gloss_textZoption_textZfolder_namer!   r"   r"   r#   create_order_folder'   s    

.r7   /GETPOST)methodsc                  C   s  t jdkrt jd} t jd}t jd}t jd}t jd}t jd}zt|}W n   td tt j Y S X d	t jkrtd
 tt jS t jd	 }|j	dkrtd tt jS t
|j	std tt jS |dtj | }|d |dkrtd tt jS t| |||||d}tj| tj  t|}	t|j	}
tj|	|
}|| |
|_	|	|_tj  ttd|jdS tdS )Nr:   r   r   r   r   r   r   u'   수량은 숫자로 입력해주세요.Zphotou$   업로드할 파일이 없습니다.r+   u   파일을 선택해주세요.uS   허용되지 않는 파일 형식입니다. (jpg, jpeg, gif, png, webp, heic, heif)r   r   uU   파일 크기가 너무 작습니다. 10KB보다 큰 파일을 업로드해주세요.)r   r   r   r   r   r   preview_order)order_idzupload.html)r   methodformgetintr   r   urlfilesr    r*   seekr1   SEEK_ENDtellr   r   sessionaddZcommitr7   r	   r2   r/   saver!   r   r   r   )r   r   r   r   r   r   fileZfile_lengthZ	new_orderr!   r    Zfile_save_pathr"   r"   r#   upload_orderF   s^    













rK   z/preview/<int:order_id>c                 C   s4   t j| }td|j d|j d}td||dS )Nstaticr8   r)   zpreview.html)r6   file_url)r   queryZ
get_or_404r   r!   r    r   )r=   r6   rM   r"   r"   r#   r<      s    r<   z/adminc                  C   s   t j } td| dS )Nz
admin.htmlZorders)r   rN   allr   rO   r"   r"   r#   
admin_page   s    
rQ   __main__Tr-   )debug)r1   flaskr   r   r   r   r   r   Zflask_sqlalchemyr   Zwerkzeug.utilsr	   r   r3   r4   r   r(   ZModelr   app_contextZ
create_allr*   r7   routerK   r<   rQ   r5   runr"   r"   r"   r#   <module>   s0    





?


