3
zgc                 @   s   d dl m Z mZ d dlmZ d dlZd dlmZ d dlmZmZmZ d dl	m
Z
mZ d dlmZ G dd	 d	eejZG d
d deejZG dd deejZG dd deejZG dd dejZG dd dejZG dd dejZejdd ZdS )    )datetimetimezone)timeN)Optional)dbloginapp)generate_password_hashcheck_password_hash)	UserMixinc               @   s   e Zd ZddiZejejddZejejddddZ	ejejdddZ
ejejddddZejejdZejejd	Zejejd	Zejejd	Zejejd	Zd
d Zdd ZdddZedd ZdS )Userextend_existingT)primary_key@   )indexunique)r   x         c             C   s   t || _d S )N)r	   password_hash)selfpassword r    /data/www/html/LML/app/models.pyset_password   s    zUser.set_passwordc             C   s   t | j|S )N)r
   r   )r   r   r   r   r   check_password   s    zUser.check_passwordX  c             C   s$   t j| jt | dtjd ddS )N)reset_passwordexp
SECRET_KEYHS256)	algorithm)jwtencodeidr   r   config)r   
expires_inr   r   r   get_reset_password_token   s    zUser.get_reset_password_tokenc             C   s:   y t j| tjd dgdd }W n
   d S tjjt|S )Nr   r    )Z
algorithmsr   )r"   decoder   r%   r   sessiongetr   )tokenr$   r   r   r   verify_reset_password_token   s
     z User.verify_reset_password_tokenN)r   )__name__
__module____qualname____table_args__r   ColumnIntegerr$   Stringusernamenameemailr   Zadmininsertstatsendr   r   r'   staticmethodr,   r   r   r   r   r   	   s   
r   c               @   s   e Zd ZejejddZejejdddZejejdddZ	ejejdddZ
ejejdddZejddddZd	d
 Zdd Zdd Zdd ZdS )licenzeT)r   r   )r   PINZLicdynamic)backreflazyc             C   s
   t jj S )N)r;   queryall)r   r   r   r   	lista_lic,   s    zlicenze.lista_licc             C   s   | j jtj|kj S )N)r@   filterr;   codFitrerA   )r   ZcodFr   r   r   search_codF.   s    zlicenze.search_codFc             C   s   | j jtj|kj S )N)r@   rC   r;   	idlicenzerA   )r   r$   r   r   r   	search_id0   s    zlicenze.search_idc             C   s   | j jtj|kj S )N)r@   rC   r;   	desMatrixscalar)r   ZdesMr   r   r   search_desM2   s    zlicenze.search_desMN)r-   r.   r/   r   r1   r2   rF   r3   rD   desFitreZ	codMatrixrH   relationshippinsrB   rE   rG   rJ   r   r   r   r   r;   %   s   r;   c               @   s   e Zd ZejejddZejejddZejejej	dZ
ejejdddZejejdddZejejdddZejejdddZejejdddZejejdddZejejddZdd	 Zd
d Zdd Zdd Zdd Zdd ZdS )r<   T)r   )r   zlicenze.idlicenzeK   r   r   c          
   C   s,   | j | j| j| j| j| j| j| j| j| j	g
S )N)
idPINdatalicenzaragsoc
codclienter6   nsrifpinordcl	dataordcl)r   r   r   r   toList@   s    z
PIN.toListc             C   s   t |dsdS | j|jkS )NaF)hasattrrY   )r   otherr   r   r   __eq__B   s    
z
PIN.__eq__c             C   s
   | j j S )N)r@   count)r   r   r   r   tot_pinF   s    zPIN.tot_pinc             C   sj   g }t jj }xD|D ]<}|jj }d}x|D ]}|d }q,W |j|j|j|f qW |jdd dd |S )Nr   r   c             S   s   | d S )N   r   )xr   r   r   <lambda>Q   s    z"PIN.cod_desc_num.<locals>.<lambda>T)keyreverse)r;   r@   rA   rM   appendrD   rK   sort)r   resultZlistaliclicrM   totrU   r   r   r   cod_desc_numH   s    



zPIN.cod_desc_numc             C   sH   | j j }t }g }x.|D ]&}|j jtj|jkj s|j| qW |S )N)r@   rA   lic_clirC   rU   r]   rd   )r   rU   rg   respr   r   r   orfaniS   s    

z
PIN.orfanic             C   sP   | j | }g }t }x6|D ].}|j }|j|j|jd j |j| qW |S )Nr   )rm   r;   rX   rd   rG   rQ   rK   )r   rm   Z	st_orfanirg   orfZlist_orfr   r   r   stampa_orfani[   s    

zPIN.stampa_orfaniN)r-   r.   r/   r   r1   r2   rO   DateTimerP   
ForeignKeyrQ   r3   rR   rS   r6   rT   rU   rV   DaterW   rX   r\   r^   ri   rm   ro   r   r   r   r   r<   5   s    r<   c               @   s   e Zd ZejejddZejejejdZejej	dddZ
ejej	dddZejejddZejejddZejejddZdS )	lic_priceT)r   zlicenze.idlicenzer   )r   N)r-   r.   r/   r   r1   r2   Zidlic_pricerq   rQ   r3   Zlic_codZlic_nameFloatZpricerr   Z
start_dateend_dater   r   r   r   rs   f   s   rs   c               @   sp  e Zd ZejejddZejejddZejej	dddZ
ejej	dddZejej	dddZejej	dddZejej	dddZejej	dddZejej	dejdZejej	dddZejej	dddZejejZejej	dddZejej	dddZejej	dddZejej	dddZd	d
 Zdd Zdd Zdd Zdd Zdd ZdS )rj   T)r   )r   r   r   zlicenze.codFitrerN   r   c             C   s   | j j| j|kj S )N)r@   rC   cod_clirA   )r   codclir   r   r   search_codcli   s    zlic_cli.search_codclic             C   s   | j j| j|k| jdkj S )Nr   )r@   rC   rv   attivarA   )r   rw   r   r   r   search_codcliA   s    zlic_cli.search_codcliAc             C   s   | j j| j|kj S )N)r@   rC   ordinerA   )r   r{   r   r   r   search_ordine   s    zlic_cli.search_ordinec             C   s   | j j| j|kj S )N)r@   rC   macPBXrA   )r   macr   r   r   
search_mac   s    zlic_cli.search_macc             C   s   | j j| j|kj S )N)r@   rC   	serialPBXrA   )r   snr   r   r   	search_sn   s    zlic_cli.search_snc             C   s"   | j j| j|kj| j|kj S )N)r@   rC   r   codPBXrA   )r   r   modellor   r   r   
search_snm   s    zlic_cli.search_snmN)r-   r.   r/   r   r1   r2   Z	idlic_clirr   rP   r3   r{   rv   r   r   r}   licattrq   ZcodLicrU   ZlicNEWry   rR   r6   nomecognomerx   rz   r|   r   r   r   r   r   r   r   rj   o   s,   rj   c               @   s   e Zd ZejejddZejejdddZejejdddZ	ejejdddZ
ejejdddZejejddZejejdddZdd Zdd	 Zd
S )lic_oemT)r   r   )r   r   c             C   s   | j j| j|kj S )N)r@   rC   r}   rA   )r   r~   r   r   r   r      s    zlic_oem.search_macc             C   s   | j j| j|kj S )N)r@   rC   r   rA   )r   r   r   r   r   r      s    zlic_oem.search_snN)r-   r.   r/   r   r1   r2   Z	idlic_oemr3   r   r   r}   ZlicOEMrr   rP   ZFWr   r   r   r   r   r   r      s   r   c               @   sL   e Zd ZejejddZejejdddZejejdddZ	dd Z
dS )PBXT)r   r   )r   c               C   s
   t jj S )N)r   r@   rA   r   r   r   r   	lista_PBX   s    zPBX.lista_PBXN)r-   r.   r/   r   r1   r2   ZidPBXr3   r   nomePBXr   r   r   r   r   r      s   r   c             C   s   t jjtt| S )N)r   r)   r*   r   int)r$   r   r   r   	load_user   s    r   )r   r   r   r"   typingr   r   r   r   Zwerkzeug.securityr	   r
   flask_loginr   Modelr   r;   r<   rs   rj   r   r   user_loaderr   r   r   r   r   <module>   s   1	