B
    =]O
                 @   sn   d dl Z d dlZd dlmZ d dlmZmZ d dlmZmZ d dlm	Z	 G dd de
eZG dd	 d	eZdS )
    N)datetime)SessionInterfaceSessionMixin)appdb)modelsc               @   s   e Zd ZdddZdS )SessionNc             C   s2   || _ || _d| _|r$t| | n
t|  d S )NT)sessidipaddr	permanentdict__init__)selfdatar	   r
    r   "/var/www/html/conj/appl/session.pyr      s    zSession.__init__)NNN)__name__
__module____qualname__r   r   r   r   r   r   
   s   r   c               @   s   e Zd Zdd Zdd ZdS )SQLA_SessionInterfacec             C   s   |j |j}|j}|s,ttt |dS tjj	j
|d }|rl|jt krltj| tj  d }|rt|j}t||dS ttt |dS )N)r	   r
   )
session_id)r	   )cookiesgetsession_cookie_nameremote_addrr   struuiduuid4r   query	filter_byfirstexpiresr   utcnowr   sessiondeletecommitpickleloadsr   )r   r   requestr	   r
   savedr   r   r   r   open_session   s    
z"SQLA_SessionInterface.open_sessionc       	   
   C   s   |  |}| |}tjjj|jd }|sd|jr`|rNt	j
| t	j
  |j|j||d d S tt|}| ||}|r||_||_t	j
  n.t	j
tj|jt |||jd t	j
  |j|j|j|| |||| |d d S )N)r   )domainpath)r   createdr!   r   r
   )r!   httponlyr+   r,   secure)get_cookie_domainget_cookie_pathr   r   r   r   r	   r    modifiedr   r#   r$   r%   delete_cookier   r&   dumpsr   get_expiration_timer   r!   addr   r"   r
   
set_cookieget_cookie_httponlyget_cookie_secure)	r   r   r#   responser+   r,   r)   r   r!   r   r   r   save_session-   s6    




z"SQLA_SessionInterface.save_sessionN)r   r   r   r*   r;   r   r   r   r   r      s   r   )r   r&   r   Zflask.sessionsr   r   applr   r   r   r   r   r   r   r   r   r   <module>   s   
