7 Commits

9 changed files with 66 additions and 3 deletions

View File

@@ -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}')

View File

@@ -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}">'

View File

@@ -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()])

View 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 ###

View File

@@ -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()

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>