3
`<                 @   s
  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
 d dlmZ d dlmZmZmZmZ d dlmZmZ d dlmZ d dlmZ eeZeeZd	e_G d
d dejZG dd dejZG dd dejZeee
ejdZG dd de
Z G dd de
Z!G dd de Z"ej#dd Z$ej%dddgdej%dddgdd8dd Z&ej%d!d"d# Z'ej%d$ddgdd%d& Z(ej)d'd(d) Z*d*d+ Z+e+ej,j-d+< d,d- Z.ej%d.ddgdd/d0 Z/ej%d1ddgdd2d3 Z0ej%d4ddgdd5d6 Z1ed7krej2  dS )9    )Flaskrender_templateflashredirectsessionabort)
SQLAlchemy)	FlaskForm)
model_form)StringFieldPasswordField
validatorsBooleanField)generate_password_hashcheck_password_hash)datetime)dateZ ra9ialoH3peNisai5sie8phei2gier7Ec               @   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ddZ
ejdejdddd	Zd
S )TaskT)primary_keyF)nullablezuser.idUsertask)lazy)backrefN)__name__
__module____qualname__dbColumnIntegeridStringtext
ForeignKeyuser_idrelationshipr   user r'   r'   ^/home/goopher/vallu/web/public_sites/moho.iki.fi/python-flask-kurssi-2021/projekti/projekti.pyr      s   r   c               @   sb   e Zd ZejejddZejejddej	dZejejej
dddZejdejddd	d
ZdS )DayT)r   F)r   uniquedefaultzuser.id)r   r   day)r   )r   N)r   r   r   r   r   r   r    ZDateTimer   todayr#   r$   r%   r   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ZejejddZ	dd Z
dd Zd	S )
r   T)r   F)r   c             C   s   t || _d S )N)r   passwordHash)selfpasswordr'   r'   r(   setPassword   s    zUser.setPasswordc             C   s   t | j|S )N)r   r.   )r/   r0   r'   r'   r(   checkPassword"   s    zUser.checkPasswordN)r   r   r   r   r   r   r    r!   emailr.   r1   r2   r'   r'   r'   r(   r      s
   r   )model
base_classZ
db_sessionc               @   s0   e Zd Zedej gdZedej gdZ	dS )UserFormr3   )r   r0   N)
r   r   r   r   r   Emailr3   r   InputRequiredr0   r'   r'   r'   r(   r6   '   s   r6   c               @   s   e Zd Ze ZdS )	TudayformN)r   r   r   r   yesr'   r'   r'   r(   r9   ,   s   r9   c               @   s0   e Zd Zedej gdZedej gdZdS )RegisterFormzregistration key)r   r3   N)	r   r   r   r   r   r8   keyr7   r3   r'   r'   r'   r(   r;   /   s   r;   c              C   sN   t j  tdd} | jd t jj|  td| d}t jj| t jj  d S )Nzwall@potato.dog)r3   catzgo exersise)r"   r&   )r   Z
create_allr   r1   r   addr   commit)r&   r   r'   r'   r(   tasks3   s    

r@   z/<int:id>/editGETPOST)methodsz/newNc             C   sj   t   t }| rtjj| }t|d}|j r^|j| tjj	| tjj
  td tdS td|dS )N)objAdded/zAdded your task, thanks.znew.html)form)loginRequiredr   query
get_or_404TaskFormvalidate_on_submitZpopulate_objr   r   r>   r?   r   r   printr   )r    r   rG   r'   r'   r(   lomake@   s    


 rN   z/<int:id>/deletec             C   s8   t   tjj| }tjj| tjj  td t	dS )NzDeleted.rF   )
rH   r   rI   rJ   r   r   deleter?   r   r   )r    r   r'   r'   r(   
deleteTaskQ   s    
rP   rF   c              C   s   t   t } | j rtjjtj dj r:t	d t
dS | jj}t| |rt }tjj| ytjj  W n   t	d Y nX t	d t
dS t j}tjj|dj }tjj }td|| |dS )	N)r   zjust relax duderF   z'You alredy compleated your goals today.rE   )r$   z
index.html)r@   rG   days)rH   r9   rL   r)   rI   	filter_byr   r-   firstr   r   r:   datarM   r   r   r>   r?   currentUserr    r   allr   )rG   r:   r,   uidr@   rQ   r'   r'   r(   indexZ   s*    
rX   i  c             C   s   t dS )Nz/login)r   )er'   r'   r(   	custom403r   s    rZ   c           	   C   s(   yt td } W n
   d S tjj| S )NrW   )intr   r   rI   get)rW   r'   r'   r(   rU   v   s
    rU   c               C   s   t d t std d S )NrH   i  )rM   rU   r   r'   r'   r'   r(   rH      s    rH   z/loginc              C   s   t  } | j r| jj}| jj}tjj|dj }|sLt	d t
d tdS |j|snt	d t
d tdS t	d |jtd< tdS td	| d
S )N)r3   zBad username or password.zNo such userz/loginzBad passwordzLogged in. Welcome!rW   rF   znew.html)rG   )r6   rL   r3   rT   r0   r   rI   rR   rS   r   rM   r   r2   r    r   r   )rG   r3   r0   r&   r'   r'   r(   	loginView   s"    

r]   z/logoutc               C   s   d t d< td tdS )NrW   zLogged out. Bye bye!rF   )r   r   r   r'   r'   r'   r(   
logoutView   s    r^   z	/registerc              C   sz   t  } | j rn| jjdkr*td tdS t }| jj|_|j| j	j t
jj| t
jj  td tdS td| dS )NZperunazBad registration key.z	/registerzUser created. Now, log in!z/loginznew.html)rG   )r;   rL   r<   rT   r   r   r   r3   r1   r0   r   r   r>   r?   r   )rG   r&   r'   r'   r(   registerView   s    

r_   __main__)N)3Zflaskr   r   r   r   r   r   Zflask_sqlalchemyr   Z	flask_wtfr	   Zwtforms.ext.sqlalchemy.ormr
   Zwtformsr   r   r   r   Zwerkzeug.securityr   r   r   r   r   appr   Z
secret_keyZModelr   r)   r   rK   r6   r9   r;   Zbefore_first_requestr@   ZrouterN   rP   rX   ZerrorhandlerrZ   rU   Z	jinja_envglobalsrH   r]   r^   r_   runr'   r'   r'   r(   <module>   s@    	
