Compare commits
8 Commits
master
...
task-expir
Author | SHA1 | Date | |
---|---|---|---|
6329a647e4 | |||
86ed978098 | |||
b5c49bc46f | |||
dc6fb52b58 | |||
b783946273 | |||
dca5b35395 | |||
5d6695d608 | |||
1597a322bf |
@@ -1 +1 @@
|
||||
1.1.0
|
||||
1.1.1
|
||||
|
12
app/app.py
12
app/app.py
@@ -4,7 +4,7 @@ from flask import Flask, render_template, redirect, url_for, request, flash
|
||||
from flask_migrate import Migrate
|
||||
from werkzeug.security import generate_password_hash, check_password_hash
|
||||
from flask_login import (LoginManager, login_user, login_required, logout_user, current_user)
|
||||
from misc import datetime, date, time, currDay, prevDay, ZoneInfo, currVersion, currCommit
|
||||
from misc import datetime, date, time, currDay, prevDay, ZoneInfo, currVersion, currCommit, convDay
|
||||
from db import (db, Period, Task, Event, User)
|
||||
from sqlalchemy import inspect
|
||||
from forms import (TaskForm, EventForm, PeriodForm, SignupForm, LoginForm, SettingsForm)
|
||||
@@ -258,9 +258,14 @@ def newTask():
|
||||
sourceIP = request.environ.get('HTTP_X_REAL_IP', request.remote_addr)
|
||||
form = TaskForm()
|
||||
if form.validate_on_submit():
|
||||
if form.expiryDate.data is not None:
|
||||
expiryDate=convDay(form.expiryDate.data)
|
||||
else:
|
||||
expiryDate = None
|
||||
task = Task(title=form.title.data,
|
||||
description=form.description.data,
|
||||
created_timestamp=int(time.time()))
|
||||
created_timestamp=int(time.time()),
|
||||
expiry_date=expiryDate)
|
||||
db.session.add(task)
|
||||
db.session.commit()
|
||||
logger.info(f'New task added by \'{current_user.userName}\' from {sourceIP}')
|
||||
@@ -276,6 +281,9 @@ def editTask(task_id):
|
||||
if form.validate_on_submit():
|
||||
task.title=form.title.data
|
||||
task.description=form.description.data
|
||||
if form.expiryDate.data is not None:
|
||||
expiryDate=convDay(form.expiryDate.data)
|
||||
task.expiry_date=expiryDate
|
||||
db.session.commit()
|
||||
logger.info(f'Task {task_id} edited by \'{current_user.userName}\' from {sourceIP}')
|
||||
return redirect(f'/task/{task_id}')
|
||||
|
@@ -20,6 +20,7 @@ class Task(db.Model):
|
||||
is_completed = db.Column(db.Boolean)
|
||||
created_timestamp = db.Column(db.Integer)
|
||||
due_timestamp = db.Column(db.Integer)
|
||||
expiry_date = db.Column(db.String(100))
|
||||
|
||||
def __repr__(self):
|
||||
return f'<Task "{self.title}">'
|
||||
|
@@ -3,7 +3,7 @@ from db import Task
|
||||
from flask_wtf import FlaskForm
|
||||
from wtforms import (StringField, DateField, TimeField, TextAreaField, IntegerField, SelectField, BooleanField,
|
||||
RadioField, EmailField, PasswordField)
|
||||
from wtforms.validators import InputRequired, Length
|
||||
from wtforms.validators import InputRequired, Length, Optional
|
||||
from wtforms_sqlalchemy.orm import QuerySelectField
|
||||
|
||||
def get_tasks():
|
||||
@@ -12,6 +12,7 @@ class TaskForm(FlaskForm):
|
||||
title = StringField('Title', validators=[InputRequired(),
|
||||
Length(min=5, max=100)])
|
||||
description = TextAreaField('Description', validators=[Length(max=200)])
|
||||
expiryDate = DateField('Expiry Date', format='%Y-%m-%d', validators=[Optional()])
|
||||
class EventForm(FlaskForm):
|
||||
# eventDate = DateField('Date', validators=[InputRequired()], format='m-%d-%Y')
|
||||
# period_num = IntegerField(validators=[InputRequired()])
|
||||
|
32
app/migrations/versions/625eb20835b5_add_expiry_date.py
Normal file
32
app/migrations/versions/625eb20835b5_add_expiry_date.py
Normal file
@@ -0,0 +1,32 @@
|
||||
"""add expiry date
|
||||
|
||||
Revision ID: 625eb20835b5
|
||||
Revises:
|
||||
Create Date: 2023-04-18 17:11:23.703222
|
||||
|
||||
"""
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = '625eb20835b5'
|
||||
down_revision = None
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
|
||||
def upgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
with op.batch_alter_table('task', schema=None) as batch_op:
|
||||
batch_op.add_column(sa.Column('expiry_date', sa.String(length=100), nullable=True))
|
||||
|
||||
# ### end Alembic commands ###
|
||||
|
||||
|
||||
def downgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
with op.batch_alter_table('task', schema=None) as batch_op:
|
||||
batch_op.drop_column('expiry_date')
|
||||
|
||||
# ### end Alembic commands ###
|
@@ -10,6 +10,11 @@ currDay = currDay.strftime('%m-%d-%Y')
|
||||
prevDay = datetime.now() + timedelta(days=-1)
|
||||
prevDay = prevDay.strftime('%m-%d-%Y')
|
||||
|
||||
# Convert date to str format
|
||||
def convDay(inDate):
|
||||
outDate = inDate.strftime('%m-%d-%Y')
|
||||
return outDate
|
||||
|
||||
|
||||
with open('__version__','r') as file:
|
||||
currVersion = file.read()
|
||||
|
@@ -13,6 +13,10 @@
|
||||
{{ form.description.label }}
|
||||
</p>
|
||||
{{ form.description(rows=5, cols=25) }}
|
||||
<p>
|
||||
{{ form.expiryDate.label }}
|
||||
{{ form.expiryDate }}
|
||||
</p>
|
||||
<p>
|
||||
<button class="btn btn-primary" type="submit">Edit Task</button>
|
||||
</p>
|
||||
|
@@ -13,6 +13,10 @@
|
||||
{{ form.description.label }}
|
||||
</p>
|
||||
{{ form.description(rows=5, cols=25) }}
|
||||
<p>
|
||||
{{ form.expiryDate.label }}
|
||||
{{ form.expiryDate }}
|
||||
</p>
|
||||
<p>
|
||||
<button class="btn btn-primary" type="submit">Add Task</button>
|
||||
</p>
|
||||
|
@@ -29,6 +29,11 @@
|
||||
<div>
|
||||
<p>Due: {{ task.due_timestamp }}</p>
|
||||
</div>
|
||||
{% if task.expiry_date != None %}
|
||||
<div>
|
||||
<p>Expires: {{ task.expiry_date }}</p>
|
||||
</div>
|
||||
{% endif %}
|
||||
<p>
|
||||
<a class="btn btn-primary" href="/task/{{task.id}}/edit">Edit Task</a>
|
||||
<span>
|
||||
|
@@ -28,6 +28,9 @@
|
||||
</b>
|
||||
<div>
|
||||
<p>Created: {{ createdTime.strftime('%Y-%m-%d %I:%M %p') }}</p>
|
||||
{% if task.expiry_date != None %}
|
||||
<p>Expires: {{ task.expiry_date }}</p>
|
||||
{% endif %}
|
||||
</div>
|
||||
<hr>
|
||||
</div>
|
||||
|
Reference in New Issue
Block a user