Bare bones backend. Frontend just starting.
This commit is contained in:
parent
ed30556bd3
commit
aed2080b53
23
.vscode/launch.json
vendored
Normal file
23
.vscode/launch.json
vendored
Normal file
@ -0,0 +1,23 @@
|
||||
{
|
||||
"version": "0.2.0",
|
||||
"configurations": [
|
||||
|
||||
{
|
||||
"name": "Python: Flask",
|
||||
"type": "python",
|
||||
"request": "launch",
|
||||
"module": "flask",
|
||||
"env": {
|
||||
"FLASK_APP": "app.py",
|
||||
"FLASK_DEBUG": "1"
|
||||
},
|
||||
"args": [
|
||||
"run",
|
||||
"--no-debugger",
|
||||
"--no-reload"
|
||||
],
|
||||
"jinja": true,
|
||||
"justMyCode": true
|
||||
}
|
||||
]
|
||||
}
|
||||
6
.vscode/settings.json
vendored
Normal file
6
.vscode/settings.json
vendored
Normal file
@ -0,0 +1,6 @@
|
||||
{
|
||||
"[python]": {
|
||||
"editor.defaultFormatter": "ms-python.autopep8"
|
||||
},
|
||||
"python.formatting.provider": "none"
|
||||
}
|
||||
@ -2,7 +2,8 @@ from flask import Flask
|
||||
from flask_sqlalchemy import SQLAlchemy
|
||||
import os
|
||||
|
||||
persistent_path = os.getenv("PERSISTENT_STORAGE_DIR", os.path.dirname(os.path.realpath(__file__)))
|
||||
persistent_path = os.getenv(
|
||||
"PERSISTENT_STORAGE_DIR", os.path.dirname(os.path.realpath(__file__)))
|
||||
|
||||
app = Flask(__name__)
|
||||
|
||||
@ -16,8 +17,12 @@ db = SQLAlchemy()
|
||||
|
||||
from app import views
|
||||
from app import models
|
||||
from app.tracker import Tracker
|
||||
|
||||
db.init_app(app)
|
||||
sheets_path = os.path.join(persistent_path, "export.csv")
|
||||
codes_path = os.path.join(persistent_path, "codes.csv")
|
||||
|
||||
with app.app_context():
|
||||
db.create_all()
|
||||
app.tracker = Tracker(codes_path=codes_path, sheets_path=sheets_path)
|
||||
|
||||
Binary file not shown.
BIN
app/__pycache__/app.cpython-310.pyc
Normal file
BIN
app/__pycache__/app.cpython-310.pyc
Normal file
Binary file not shown.
Binary file not shown.
BIN
app/__pycache__/tracker.cpython-310.pyc
Normal file
BIN
app/__pycache__/tracker.cpython-310.pyc
Normal file
Binary file not shown.
Binary file not shown.
110
app/codes.csv
Normal file
110
app/codes.csv
Normal file
@ -0,0 +1,110 @@
|
||||
-1, Undefined
|
||||
0, Sleep
|
||||
,
|
||||
,
|
||||
0.4, Airplane sleep
|
||||
0.5, Nap
|
||||
,
|
||||
,
|
||||
,
|
||||
,
|
||||
,
|
||||
1, Family
|
||||
,
|
||||
,
|
||||
,
|
||||
15, Neighborhood / Community work
|
||||
,
|
||||
,
|
||||
,
|
||||
,
|
||||
,
|
||||
2, Friends
|
||||
,
|
||||
,
|
||||
,
|
||||
,
|
||||
,
|
||||
,
|
||||
28, Meal
|
||||
29, Drugs
|
||||
,
|
||||
3, Dating / Partner
|
||||
31, Jen's family
|
||||
32, Jen's friends
|
||||
33, Sex
|
||||
34, Exploring
|
||||
35, Errands and logistics
|
||||
36, Watching something
|
||||
37," Hiking, adventuring "
|
||||
38, Meal
|
||||
39, Relaxing
|
||||
,
|
||||
4, Flying
|
||||
41," Airports, etc."
|
||||
43, Flying with Jen
|
||||
45, Flying for business
|
||||
46, Maintenance
|
||||
47, Training
|
||||
,
|
||||
,
|
||||
,
|
||||
,
|
||||
,
|
||||
,
|
||||
5, Work
|
||||
,
|
||||
,
|
||||
,
|
||||
56, Inbox
|
||||
57, Work meditation
|
||||
58, Socializing
|
||||
,
|
||||
,
|
||||
,
|
||||
6, Productive
|
||||
61, Cleaning
|
||||
63, Home project
|
||||
65, Personal finances / life admin
|
||||
66, Outdoor exercise
|
||||
67, Gym
|
||||
,
|
||||
69, Bureaucracy / bullshit
|
||||
7, Hobbies and Skills
|
||||
,
|
||||
,
|
||||
73, Home Improvement
|
||||
,
|
||||
,
|
||||
,
|
||||
,
|
||||
,
|
||||
,
|
||||
8, Relaxation and Leisure
|
||||
81, TV / Movies
|
||||
82, Hot tub / Sauna
|
||||
83, Masturbation
|
||||
,
|
||||
,
|
||||
,
|
||||
,
|
||||
88, Video games
|
||||
89, Social Media
|
||||
9, Waste
|
||||
91, Waiting / killing time
|
||||
,
|
||||
,
|
||||
,
|
||||
96, Disaster
|
||||
,
|
||||
,
|
||||
98, Can't sleep
|
||||
99, Stress eating
|
||||
10, Health and Travel
|
||||
101, Food
|
||||
,
|
||||
103, Bath
|
||||
104, In transit
|
||||
105, Shower and get ready
|
||||
106," Cleaning, packing "
|
||||
108, Massage
|
||||
|
366
app/export.csv
Normal file
366
app/export.csv
Normal file
@ -0,0 +1,366 @@
|
||||
DATE,DAY,12 AM,1 AM,2 AM,3 AM,4 AM,5 AM,6 AM,7 AM,8 AM,9 AM,10 AM,11 AM,12 PM,1 PM,2 PM,3 PM,4 PM,5 PM,6 PM,7 PM,8 PM,9 PM,10 PM,11 PM,Mood,Comments,#, Name
|
||||
1/1,SUN,2,2,2,0,0,0,0,0,0,0,0,9,2,3,3,2,2,2,2,2,2,2,2,2,5,"Upstate with Hil, Averi, Lex, etc",0, Sleep
|
||||
1/2,MON,2,2,0,0,0,0,0,0,0,0,2,2,10,10,10,9,9,9,10,2,2,2,2,2,6,Hungover return; dinner with Gabe and Jackie,1, Family
|
||||
1/3,TUE,3,9,0,0,0,0,0,0,0,8,8,6,3,8,9,9,5,9,9,9,9,9,3,7,3,Languishing ,2, Friends
|
||||
1/4,WED,7,9,0,0,0,0,0,0,0,0,8,9,7,7,6,0,3,3,3,3,3,8,9,9,4,Still languishing,3, Dating / Partner
|
||||
1/5,THU,9,0,0,0,0,0,0,0,0,0,8,9,9,10,9,9,9,10,4,4,4,4,4,10,3,Finally on the way home,4,Flying
|
||||
1/6,FRI,10,0,0,0,0,0,0,0,3,10,10,10,10,10,10,10,10,10,10,10,10,8,8,8,6,"En route via Springfield, IL!",5, Work
|
||||
1/7,SAT,8,8,0,0,0,0,0,0,6,6,3,3,8,8,8,8,8,1,1,1,3,8,8,8,8,First day back; gym; family; fast,6, Productive
|
||||
1/8,SUN,0,0,0,0,0,0,0,0,0,8,8,8,10,10,10,10,10,3,6,7,7,9,9,9,8,"Cleaning, relaxing, getting shit done.",7, Hobbies and Skills
|
||||
1/9,MON,0,0,0,0,0,0,0,0,8,9,8,5,6,8,5,8,5,5,6,6,8,3,3,9,6,Lazy first Monday. Couple calls. Worked from home. Caught up on wedding and house needs.,8, Relaxation and Leisure
|
||||
1/10,TUE,0,0,0,0,0,0,0,0,8,7,7,6,5,5,5,5,5,5,3,8,8,8,6,8,6,Prep for tomorrow,9, Waste
|
||||
1/11,WED,9,0,0,0,0,0,0,0,8,10,5,5,5,5,5,5,5,5,5,5,5,8,3,9,7,SK,10, Health and Travel
|
||||
1/12,THU,0,0,0,0,0,0,0,10,5,10,5,5,5,5,5,5,5,5,5,5,5,3,8,9,8,Ontario Teachers OTPP,,
|
||||
1/13,FRI,0,0,0,0,0,0,0,3,8,3,6,5,3,3,5,10,10,7,7,1,1,1,3,0,8,Jamaican dinner for Peru/Kiri and parents,,
|
||||
1/14,SAT,0,0,0,0,0,0,0,0,0,0,8,10,10,7,0,0,7,10,8,9,9,9,9,9,7,"Nice needed lazy day. Did some drugs, probably too many.",,
|
||||
1/15,SUN,6,8,0,0,0,0,0,0,0,0,0,10,10,8,8,7,7,3,8,2,2,2,3,8,8,Lazy rainy day. Saw Andrew and sienna in the evening.,,
|
||||
1/16,MON,9,0,0,0,0,0,0,0,0,0,3,8,6,7,8,8,8,8,8,8,3,3,3,9,6,Stressed about work. Had vodka and popcorn.,,
|
||||
1/17,TUE,3,0,0,0,0,0,0,9,0,0,9,6,5,7,7,5,8,8,8,8,7,7,8,8,7,Hindi lessons!,,
|
||||
1/18,WED,9,0,0,0,0,0,0,10,5,5,5,5,8,6,6,3,3,7,7,3,8,8,3,3,7,Lazy,,
|
||||
1/19,THU,8,0,0,0,0,0,0,0,0,10,10,3,8,10,0,6,8,8,6,3,6,3,9,9,5,not sure,,
|
||||
1/20,FRI,9,0,0,0,8,0,0,0,0,0,10,6,6,5,3,6,8,7,7,3,3,3,9,9,6,long Hindi lesson and RDR2,,
|
||||
1/21,SAT,9,9,9,9,0,0,0,0,0,0,10,8,3,3,10,3,8,0,0,6,6,6,6,6,6,Polestar demo; In n out; Cleaning and packing,,
|
||||
1/22,SUN,7,3,8,0,0,0,0,0,10,10,1,1,10,10,10,10,10,10,10,10,10,10,10,10,7,Flying to Chicago,,
|
||||
1/23,MON,9,0,0,0,0,0,0,10,10,5,5,5,5,5,5,5,5,5,5,5,5,5,8,0,7,First day with TM,,
|
||||
1/24,TUE,0,0,0,0,0,0,0,10,10,10,10,5,5,5,5,5,1,1,2,2,2,3,10,9,6,Second day with TM; basketball game,,
|
||||
1/25,WED,0,0,0,0,0,0,0,10,10,10,5,10,10,10,10,10,10,10,3,3,3,5,8,0,7,No-Go Decision! Commercial to NY,,
|
||||
1/26,THU,0,0,0,0,0,10,10,10,10,6,6,5,10,10,10,3,3,3,3,3,5,8,3,0,6,Driving upstate for wedding rentals,,
|
||||
1/27,FRI,0,0,0,0,0,0,0,0,5,5,5,10,8,8,10,9,9,9,5,5,5,9,9,0,5,Board meeting sucked,,
|
||||
1/28,SAT,0,0,0,0,0,0,0,0,5,8,8,5,3,8,6,8,8,10,3,3,3,3,0,0,4,Hangover and day wastage,,
|
||||
1/29,SUN,0,8,0,0,0,0,0,0,0,9,9,8,7,7,7,3,9,9,9,9,9,0,0,0,6,Quiet day in feat several hours of Hindi,,
|
||||
1/30,MON,0,0,0,0,0,0,10,3,3,3,8,8,6,10,7,10,10,10,10,10,10,0,0,0,6,Another wedding rentals; flight to India,,
|
||||
1/31,TUE,0,0,0,0,0,10,10,10,0,0,0,0,10,10,8,0,0,0,8,10,10,10,10,10,7,Endless travel forever,,
|
||||
2/1,WED,5,5,5,5,5,5,0,5,5,8,0,0,0,0,0,0,0,5,8,10,8,5,5,5,4,Cool safari. why the fuck are we in India.,,
|
||||
2/2,THU,5,5,5,5,5,5,5,5,5,5,9,9,0,0,0,0,0,0,0,0,10,10,10,10,3,"welp, I'm sick ",,
|
||||
2/3,FRI,10,10,10,10,10,10,10,10,10,10,10,10,0,0,0,0,0,0,0,0,10,5,5,5,2,and still in fucking India,,
|
||||
2/4,SAT,8,10,5,5,5,5,5,5,5,5,5,3,0,0,0,0,0,0,0,0,10,10,10,10,1,planned how to continue drowning; met Aftab,,
|
||||
2/5,SUN,10,10,10,10,10,8,8,8,8,8,0,0,0,0,0,0,0,0,10,5,5,5,5,5,1,Why does it take fucking forever to travel anywhere in India,,
|
||||
2/6,MON,5,5,5,5,5,5,5,5,5,5,5,0,0,0,0,0,0,0,10,5,5,5,5,5,4,A little better. PD India day 1,,
|
||||
2/7,TUE,5,5,5,5,5,5,0,0,9,9,9,10,10,10,10,10,10,0,0,10,10,10,10,10,1,"PD India Day 2, town hall, doomsday, our fates, getting home.",,
|
||||
2/8,WED,10,0,0,0,0,0,10,10,0,0,0,0,10,10,10,10,10,10,10,10,10,10,10,10,5,Infinity travel and flying,,
|
||||
2/9,THU,10,3,3,0,0,0,0,0,0,5,5,8,8,5,8,8,0,0,0,9,3,3,8,7,7,Nice to be home.,,
|
||||
2/10,FRI,9,9,9,9,0,0,0,0,0,0,10,5,9,0,0,0,9,5,8,3,3,8,0,0,6,avoidance ,,
|
||||
2/11,SAT,0,0,0,0,0,0,10,8,9,9,6,8,8,8,8,8,8,0,7,8,8,8,3,8,7,,,
|
||||
2/12,SUN,0,0,0,0,0,0,0,0,0,8,8,8,8,2,2,2,1,1,1,1,1,8,0,0,6,Annie and family.,,
|
||||
2/13,MON,0,0,0,0,0,0,0,10,6,6,5,5,5,5,5,5,5,5,5,9,3,0,0,0,4,Connecting with folks at the office. Doomsday planning.,,
|
||||
2/14,TUE,0,0,0,0,0,0,0,0,0,10,8,5,5,5,5,6,10,6,6,7,3,3,3,3,3,Dreading work. Good Valentine's dinner with Jen.,,
|
||||
2/15,WED,0,0,0,0,0,0,0,0,5,7,5,5,5,7,5,5,5,5,3,9,10,6,9,0,2,Coming to terms with / trying to fight killing marketing at PD,,
|
||||
2/16,THU,0,0,0,0,0,0,8,7,7,7,7,7,10,9,5,7,8,7,9,9,3,8,9,0,4,Waste of a day.,,
|
||||
2/17,FRI,0,0,0,0,0,0,0,8,9,6,6,6,6,6,10,8,7,7,7,7,7,7,10,8,6,Playing with AI and cooking!,,
|
||||
2/18,SAT,0,0,0,0,0,0,0,0,0,7,10,10,10,10,3,3,3,3,3,3,3,3,0,0,7,Birthday weekend!,,
|
||||
2/19,SUN,0,0,0,0,0,0,0,8,10,3,3,3,3,3,3,3,3,3,3,3,3,3,3,0,7,Birthday weekend part 2,,
|
||||
2/20,MON,0,0,0,9,0,0,0,0,8,3,3,10,10,10,9,9,3,5,5,5,5,3,9,9,6,Mostly helping Jen with her case study,,
|
||||
2/21,TUE,0,0,0,0,0,0,0,10,10,5,5,5,5,5,5,5,5,5,5,1,1,3,6,0,5,First day of construction! Dilhan lunch. ,,
|
||||
2/22,WED,0,0,0,0,0,0,0,0,10,9,3,9,5,10,5,9,8,3,9,9,3,3,3,3,2,ugh everything is so exhausting,,
|
||||
2/23,THU,0,0,0,0,0,0,0,0,0,3,6,2,5,8,8,8,3,3,6,8,6,3,8,0,4,Yeah,,
|
||||
2/24,FRI,0,0,0,0,0,0,0,0,0,8,8,5,6,7,7,6,6,6,6,6,6,6,6,6,4,moving out (temporarily),,
|
||||
2/25,SAT,8,8,9,9,0,0,0,0,8,3,6,6,6,6,6,6,6,10,2,2,2,2,2,2,5,"more moving, friends and bwc",,
|
||||
2/26,SUN,3,9,9,9,9,9,9,9,0,0,6,6,10,10,10,10,0,0,0,0,0,0,0,0,5,MDMA night and flight to Dubai,,
|
||||
2/27,MON,10,0,0,0,0,10,10,10,0,0,9,9,0,0,0,0,0,3,8,10,10,5,5,5,5,Meeting with CG.,,
|
||||
2/28,TUE,5,5,5,5,5,5,5,5,0,0,0,0,10,8,0,0,0,8,10,5,5,5,5,5,5,Meeting with mubadala/strata.,,
|
||||
3/1,WED,5,5,5,5,5,5,10,10,0,5,0,0,0,0,0,0,5,5,8,8,8,3,0,5,6,Conference in Abu Dhabi ,,
|
||||
3/2,THU,5,5,5,5,5,5,5,8,0,0,0,0,0,5,0,0,0,8,10,5,5,5,8,8,7,Maybe things are looking up?,,
|
||||
3/3,FRI,8,10,10,10,8,0,0,0,10,5,5,8,8,8,0,0,10,10,8,8,10,10,10,0,7,Nalin; coming home,,
|
||||
3/4,SAT,0,0,0,0,0,0,0,0,0,10,10,10,10,10,10,8,8,3,3,3,3,3,3,0,8,Good to be back. Emily Calkins and Co like it in the Bay! Lasagna in a restaurant with a bad memory.,,
|
||||
3/5,SUN,0,9,9,9,0,0,0,0,0,0,0,3,6,3,10,3,10,10,10,10,10,8,0,0,8,Home and flight to Scottsdale,,
|
||||
3/6,MON,0,0,0,0,0,10,7,7,7,7,7,7,7,7,7,7,7,7,10,10,10,10,10,3,7,Recurrent training for PA46,,
|
||||
3/7,TUE,9,9,9,0,0,0,0,0,0,6,8,6,6,6,6,8,8,10,10,10,10,10,10,10,4,Flew to Lummi Island. Got in late. No dinner for us,,
|
||||
3/8,WED,8,0,0,0,0,0,0,3,5,5,6,5,5,3,5,9,0,3,5,3,3,3,3,8,4,"Nail biting for both of us. yet, enjoying the cabin and northwest.",,
|
||||
3/9,THU,0,0,0,0,9,0,0,0,0,5,3,10,5,6,6,7,5,5,5,5,3,3,3,3,3,"Hiked, cooked, talked to TM. Worlds starting and ending for Jen and me.",,
|
||||
3/10,FRI,3,9,0,0,0,0,0,0,8,5,5,3,5,6,6,10,10,1,1,1,1,1,1,1,6,"Seattle, meeting Josh's sister Kyra",,
|
||||
3/11,SAT,0,0,0,0,0,0,0,0,0,0,10,3,3,10,10,10,10,10,10,3,8,8,8,9,5,basically just getting home,,
|
||||
3/12,SUN,0,0,0,0,0,0,0,7,8,0,0,0,0,3,3,6,10,10,3,3,2,3,3,3,6,Checked into the Claremont hotel. Bonnie Cole. grey's anatomy.,,
|
||||
3/13,MON,0,0,0,0,0,0,0,5,10,3,8,5,3,8,8,8,8,3,1,1,1,3,3,3,5,Stressed about TM/Allison decision. Enjoying Claremont and new tablet.,,
|
||||
3/14,TUE,3,9,9,0,0,0,0,9,9,0.5,0.5,10,5,9,0.5,0.5,0.5,5,8,8,3,3,8,3,1,One more circuit down the spiral to the drain?,,
|
||||
3/15,WED,0,0,0,0,0,0,0,0,5,0.5,10,5,6,5,5,8,9,5,0.5,5,9,9,3,3,2,Still shitty,,
|
||||
3/16,THU,0,0,0,0,0,0,0,0,8,8,10,10,5,5,5,5,3,5,5,10,5,5,9,9,3,Chewing glass internally. Edward. Drinking. Embarrassing myself with KG.,,
|
||||
3/17,FRI,9,0,0,0,0,9,9,0,0,10,9,5,6,6,6,6,10,1,1,1,5,5,5,3,1,True colors revealed? and a nice dinner at Daytrip with Ashley and Elie. Wedding invites finally sent.,,
|
||||
3/18,SAT,9,9,0,0,0,9,0,9,9,9,0,8,10,0.5,9,9,9,9,10,6,6,6,6,8,4,"Getting some good perspective, cleaning the house",,
|
||||
3/19,SUN,6,6,9,0,0,0,0,0,0,0,0,0,8,10,6,6,8,8,10,8,8,8,8,8,5,Gym and sushi. New lowest weight this year!,,
|
||||
3/20,MON,8,8,0,0,0,0,0,0,0,10,5,5,5,5,5,5,9,9,3,10,8,5,8,0,2,shitty,,
|
||||
3/21,TUE,9,9,0,0,0,0,0,0,0,10,9,10,10,5,5,5,5,5,5,10,10,2,5,0,4,The transition day. layoffs happened. power went out. slept at the office. ran into Mario,,
|
||||
3/22,WED,0,0,0,0,0,0,0,0,0,0,8,10,3,5,5,5,9,9,5,10,10,8,9,0,5,Getting there.,,
|
||||
3/23,THU,0,9,9,0,0,9,0,9,10,5,5,8,0.5,10,108,108,108,8,8,8,8,8,8,9,6,Relaxed.,,
|
||||
3/24,FRI,8,0,0,0,0,0,0,0,10,10,6,0.5,0.5,8,5,8,6,6,8,8,8,8,8,0,5,Didn't do much with my day.,,
|
||||
3/25,SAT,0,0,0,0,0,0,0,0,0,0,8,10,6,6,6,6,5,6,8,8,8,9,9,9,6,At least I've gotten exercise and haven't eaten or drank too much,,
|
||||
3/26,SUN,9,9,9,9,9,9,9,0,0,0,0,0,10,0.5,0.5,8,8,3,8,8,8,8,8,8,5,Lazy day,,
|
||||
3/27,MON,9,9,0,0,0,0,0,0,0,10,8,8,5,5,5,7,1,1,67,67,8,8,8,8,6,Feeling alright today.,,
|
||||
3/28,TUE,83,9,0,0,0,0,0,0,0,5,103,0.5,0.5,89,89,81,101,81,81,0.5,0.5,8,89,89,4,Kinda aimless. ,,
|
||||
3/29,WED,3,3,33,0,0,0,0,0,0,105,35,73,10,65,65,5,31,31,35,35,33,57,101,99,7,Good to have Jen back!,,
|
||||
3/30,THU,83,0,0,0,0,98,98,3,10,5,5,6,6,6,73,5,0.5,0.5,3,3,3,3,33,83,5,"Alright, but stressed. Good life admin progress.",,
|
||||
3/31,FRI,0,0,0,0,0,0,0,0,0,10,5,5,57,2,9,5,5,5,10,3,2,2,2,0,3,ugh,,
|
||||
4/1,SAT,0,0,0,0,0,0,0,0,0,103,101,83,106,104,2,2,2,2,2,2,28,2,104,104,4,Graziano! Radio show! Rushed stressful trip!,,
|
||||
4/2,SUN,10,0.4,0.4,0.4,10,10,10,10,10,10,0.4,0.4,0.4,104,0.4,0.4,10,10,10,10,10,10,10,10,6,"I mean, stressed kinda, but nice to be in Pategonia!",,
|
||||
4/3,MON,10,10,10,10,10,10,10,37,37,10,10,10,10,103,8,3,3,3,3,0,0,0,0,0,7,Long (excessive) but very good and beautiful hike up Mt Fitz Roy in Patagonia,,
|
||||
4/4,TUE,0,0,0,0,37,37,37,37,37,37,37,37,37,37,38,10,3,8,33,8,0,0,0,0,7,Long (way too long) but very nice hike!,,
|
||||
4/5,WED,0,0,0,0,0,0,37,37,37,37,38,38,3,65,37,37,10,38,38,38,3,0,0,0,7,Pretty much same as above!,,
|
||||
4/6,THU,0,0,0,0,106,37,37,37,37,38,10,104,104,104,104,104,104,104,104,38,38,10,0,0,6,Beautiful trip.,,
|
||||
4/7,FRI,0,0,0,0,0,0,0,33,38,56,56,65,38,39,83,2,2,2,2,2,2,2,33,0,8,"Gabe, Jackie, tango lessons!",,
|
||||
4/8,SAT,0,0,0,0,0,0,83,106,106,38,10,2,2,2,2,2,10,28,28,28,28,0,0,0,8,"Gorgeous hotel ""home"" in BA. Day with Gabe and Jackie. dinner with Phoebe.",,
|
||||
4/9,SUN,0,0,0,0,0,38,38,103,28,28,34,34,39,39,36,36,28,28,28,2,3,0,0,0,8,Really fun day!,,
|
||||
4/10,MON,0,0,0,0,0,0,0.5,36,103,39,38,38,38,3,39,2,28,28,28,2,8,0,0,0,8,Don Julio and more Buenos Aires!,,
|
||||
4/11,TUE,0,0,0,0,0,108,108,106,104,104,38,34,34,34,104,104,38,104,104,104,104,0.4,0.4,0.4,8,Day in Uruguay; heading home,,
|
||||
4/12,WED,0.4,0.4,98,0.4,0.4,104,104,104,104,0.4,0.4,0.4,104,104,5,103,89,101,38,103,8,8,8,83,7,Back home.,,
|
||||
4/13,THU,0,0,0,0,0,0,0,83,5,6,6,5,8,8,6,88,88,88,88,88,88,88,88,83,6,Pretty much just video games ,,
|
||||
4/14,FRI,0,0,0,0,0,0,0,0,8,8,8,6,8,88,66,66,101,8,8,3,38,38,36,36,5,Good walk. Not productive,,
|
||||
4/15,SAT,0,0,0,0,0,0,33,8,88,88,33,88,88,104,3,38,104,1,1,3,88,88,88,88,6,Family time,,
|
||||
4/16,SUN,88,0,0,0,0,0,0,0,0,0,3,82,69,69,66,66,1,1,3,36,38,88,88,83,6,"Walked, saw parents.",,
|
||||
4/17,MON,0,0,0,0,0,0,0,3,83,105,69,69,69,69,83,88,0.5,99,3,36,88,36,36,99,5,Jen's first day! My 3200th. No work done.,,
|
||||
4/18,TUE,0,0,0,0,0,0,0,98,0,61,61,61,5,5,5,5,69,89,91,3,3,3,3,3,5,Finally cleaned (annoyed how long it goes).,,
|
||||
4/19,WED,83,0,0,0,0,0,0,0,83,89,89,5,101,5,0.5,5,9,9,1,36,36,8,33,8,4,IDK,,
|
||||
4/20,THU,0,0,0,0,0,0,0,98,103,8,83,8,101,88,66,66,88,104,31,31,31,36,36,0,4,IDK still,,
|
||||
4/21,FRI,0,0,0,0,0,0,0,5,33,103,8,101,5,63,46,46,46,46,3,5,3,3,9,83,2,I guess drugs?,,
|
||||
4/22,SAT,83,83,9,9,9,0,0,0,0,0,0,0,0,3,103,104,2,2,3,3,104,96,96,96,3,Burglarized!!,,
|
||||
4/23,SUN,0,0,0,0,0,0,0,0,0,96,96,96,96,96,36,96,96,63,8,8,36,36,8,36,4,Aftermath. Goose chase at the flea market and in Antioch,,
|
||||
4/24,MON,0,0,0,0,0,0,0,0,5,83,63,63,5,89,5,0.5,99,9,9,9,36,106,36,8,4,didn't do much. had a few calls,,
|
||||
4/25,TUE,0,0,0,0,0,0,0,0,8,10,5,67,67,5,5,5,10,8,0.5,3,89,36,36,36,6,Caught up. Worked out,,
|
||||
4/26,WED,98,0,0,0,0,0,0,0,0,103,83,5,5,67,67,101,5,5,7,5,5,3,3,3,6,Starting to feel more on top of things,,
|
||||
4/27,THU,0,0,0,0,98,98,0,0,0,89,91,91,67,67,101,5,65,58,10,15,15,38,3,89,6,Neighborhood meeting re public safety. Caught up. Nice to see Perumal a bit more.,,
|
||||
4/28,FRI,0,0,0,0,0,0,0,0,0,33,6,7,7,9,9,9,9,7,91,1,1,1,8,36,5,"Kind of wasted due to Jen's struggle, but overall a good day. saw family and Samoti.",,
|
||||
4/29,SAT,8,83,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,
|
||||
4/30,SUN,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
5/1,MON,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
5/2,TUE,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
5/3,WED,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
5/4,THU,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
5/5,FRI,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
5/6,SAT,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
5/7,SUN,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
5/8,MON,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
5/9,TUE,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
5/10,WED,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
5/11,THU,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
5/12,FRI,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
5/13,SAT,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
5/14,SUN,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
5/15,MON,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
5/16,TUE,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
5/17,WED,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
5/18,THU,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
5/19,FRI,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
5/20,SAT,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
5/21,SUN,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
5/22,MON,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
5/23,TUE,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
5/24,WED,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
5/25,THU,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
5/26,FRI,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
5/27,SAT,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
5/28,SUN,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
5/29,MON,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
5/30,TUE,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
5/31,WED,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
6/1,THU,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
6/2,FRI,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
6/3,SAT,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
6/4,SUN,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
6/5,MON,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
6/6,TUE,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
6/7,WED,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
6/8,THU,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
6/9,FRI,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
6/10,SAT,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
6/11,SUN,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
6/12,MON,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
6/13,TUE,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
6/14,WED,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
6/15,THU,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
6/16,FRI,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
6/17,SAT,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
6/18,SUN,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
6/19,MON,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
6/20,TUE,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
6/21,WED,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
6/22,THU,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
6/23,FRI,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
6/24,SAT,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
6/25,SUN,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
6/26,MON,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
6/27,TUE,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
6/28,WED,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
6/29,THU,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
6/30,FRI,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
7/1,SAT,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
7/2,SUN,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
7/3,MON,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
7/4,TUE,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
7/5,WED,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
7/6,THU,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
7/7,FRI,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
7/8,SAT,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
7/9,SUN,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
7/10,MON,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
7/11,TUE,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
7/12,WED,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
7/13,THU,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
7/14,FRI,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
7/15,SAT,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
7/16,SUN,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
7/17,MON,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
7/18,TUE,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
7/19,WED,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
7/20,THU,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
7/21,FRI,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
7/22,SAT,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
7/23,SUN,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
7/24,MON,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
7/25,TUE,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
7/26,WED,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
7/27,THU,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
7/28,FRI,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
7/29,SAT,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
7/30,SUN,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
7/31,MON,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
8/1,TUE,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
8/2,WED,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
8/3,THU,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
8/4,FRI,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
8/5,SAT,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
8/6,SUN,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
8/7,MON,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
8/8,TUE,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
8/9,WED,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
8/10,THU,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
8/11,FRI,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
8/12,SAT,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
8/13,SUN,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
8/14,MON,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
8/15,TUE,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
8/16,WED,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
8/17,THU,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
8/18,FRI,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
8/19,SAT,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
8/20,SUN,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
8/21,MON,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
8/22,TUE,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
8/23,WED,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
8/24,THU,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
8/25,FRI,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
8/26,SAT,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
8/27,SUN,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
8/28,MON,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
8/29,TUE,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
8/30,WED,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
8/31,THU,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
9/1,FRI,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
9/2,SAT,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
9/3,SUN,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
9/4,MON,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
9/5,TUE,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
9/6,WED,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
9/7,THU,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
9/8,FRI,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
9/9,SAT,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
9/10,SUN,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
9/11,MON,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
9/12,TUE,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
9/13,WED,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
9/14,THU,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
9/15,FRI,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
9/16,SAT,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
9/17,SUN,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
9/18,MON,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
9/19,TUE,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
9/20,WED,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
9/21,THU,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
9/22,FRI,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
9/23,SAT,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
9/24,SUN,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
9/25,MON,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
9/26,TUE,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
9/27,WED,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
9/28,THU,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
9/29,FRI,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
9/30,SAT,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
10/1,SUN,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
10/2,MON,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
10/3,TUE,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
10/4,WED,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
10/5,THU,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
10/6,FRI,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
10/7,SAT,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
10/8,SUN,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
10/9,MON,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
10/10,TUE,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
10/11,WED,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
10/12,THU,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
10/13,FRI,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
10/14,SAT,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
10/15,SUN,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
10/16,MON,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
10/17,TUE,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
10/18,WED,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
10/19,THU,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
10/20,FRI,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
10/21,SAT,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
10/22,SUN,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
10/23,MON,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
10/24,TUE,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
10/25,WED,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
10/26,THU,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
10/27,FRI,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
10/28,SAT,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
10/29,SUN,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
10/30,MON,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
10/31,TUE,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
11/1,WED,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
11/2,THU,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
11/3,FRI,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
11/4,SAT,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
11/5,SUN,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
11/6,MON,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
11/7,TUE,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
11/8,WED,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
11/9,THU,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
11/10,FRI,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
11/11,SAT,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
11/12,SUN,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
11/13,MON,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
11/14,TUE,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
11/15,WED,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
11/16,THU,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
11/17,FRI,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
11/18,SAT,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
11/19,SUN,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
11/20,MON,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
11/21,TUE,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
11/22,WED,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
11/23,THU,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
11/24,FRI,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
11/25,SAT,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
11/26,SUN,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
11/27,MON,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
11/28,TUE,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
11/29,WED,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
11/30,THU,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
12/1,FRI,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
12/2,SAT,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
12/3,SUN,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
12/4,MON,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
12/5,TUE,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
12/6,WED,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
12/7,THU,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
12/8,FRI,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
12/9,SAT,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
12/10,SUN,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
12/11,MON,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
12/12,TUE,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
12/13,WED,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
12/14,THU,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
12/15,FRI,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
12/16,SAT,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
12/17,SUN,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
12/18,MON,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
12/19,TUE,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
12/20,WED,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
12/21,THU,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
12/22,FRI,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
12/23,SAT,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
12/24,SUN,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
12/25,MON,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
12/26,TUE,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
12/27,WED,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
12/28,THU,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
12/29,FRI,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
12/30,SAT,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
12/31,SUN,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
|
@ -1,16 +1,37 @@
|
||||
from app import db
|
||||
import json
|
||||
|
||||
|
||||
class Day(db.Model):
|
||||
day_id = db.Column(db.Integer, primary_key=True)
|
||||
date = db.Column(db.Date, unique=True)
|
||||
note = db.Column(db.String)
|
||||
books = db.relationship("Hour", backref="day")
|
||||
hours = db.relationship("Hour", backref="day")
|
||||
|
||||
def __repr__(self):
|
||||
return '<Day: {}>'.format(self.hours)
|
||||
return '<Day: {}>'.format(self.date.strftime("%x"))
|
||||
|
||||
def toJson(self):
|
||||
return json.dumps(self, default=lambda o: o.__dict__)
|
||||
|
||||
|
||||
class Activity(db.Model):
|
||||
activity_id = db.Column(db.Integer, primary_key=True)
|
||||
code = db.Column(db.Integer, unique=True)
|
||||
name = db.Column(db.String)
|
||||
hours = db.relationship("Hour", backref="activity")
|
||||
color = db.Column(db.String)
|
||||
|
||||
def __repr__(self):
|
||||
return "<Activity {} ({})>".format(self.code, self.name)
|
||||
|
||||
|
||||
class Hour(db.Model):
|
||||
hour_id = db.Column(db.Integer, primary_key=True)
|
||||
time = db.Column(db.Integer)
|
||||
day_id = db.Column(db.Integer, db.ForeignKey("author.author_id"))
|
||||
day_id = db.Column(db.Integer, db.ForeignKey("day.day_id"))
|
||||
note = db.Column(db.String)
|
||||
activity_code = db.Column(db.Integer, db.ForeignKey("activity.code"))
|
||||
|
||||
def __repr__(self):
|
||||
return "<Hour {} of day {}>".format(self.time, self.day_id)
|
||||
|
||||
BIN
app/sqlite.db
BIN
app/sqlite.db
Binary file not shown.
@ -12,7 +12,7 @@ body{
|
||||
table {
|
||||
font-family: "Monospace";
|
||||
border-collapse: collapse;
|
||||
width: 100%;
|
||||
font-size: 11pt;
|
||||
}
|
||||
|
||||
th{
|
||||
@ -26,10 +26,51 @@ tr.htmx-swapping td {
|
||||
|
||||
td, th {
|
||||
border: 1px solid #383737;
|
||||
text-align: left;
|
||||
padding: 8px;
|
||||
text-align: center;
|
||||
padding: 4px;
|
||||
min-width: 4em;
|
||||
}
|
||||
|
||||
td.now, th.now{
|
||||
background: var(--fg);
|
||||
color: var(--bg);
|
||||
border-left: 0px;
|
||||
border-right: 0px;
|
||||
}
|
||||
|
||||
td.day-note{
|
||||
width: max-content;
|
||||
}
|
||||
|
||||
tr:nth-child(even) {
|
||||
background-color: #dddddd;
|
||||
background-color: #2f3941;
|
||||
}
|
||||
|
||||
input.update-entry-form{
|
||||
width: 3em;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
div#color-chooser{
|
||||
position:absolute;
|
||||
display:flex;
|
||||
margin: 2px;
|
||||
}
|
||||
|
||||
.color-choice{
|
||||
padding: 1px 5px;
|
||||
border: 1px solid black;
|
||||
}
|
||||
.color-choice:hover{
|
||||
border: 1px solid white;
|
||||
}
|
||||
div.upcase{ text-transform: uppercase;}
|
||||
div#table{font-family:monospace;display: grid;grid-template-columns: repeat(28, 1fr);}
|
||||
div#header{border-bottom:2px solid gray;}
|
||||
div.table-row{border-bottom:1px solid gray;}
|
||||
div.cell{
|
||||
width: 75px;
|
||||
font-size:10pt;
|
||||
text-align: center; padding: 1px 5px}
|
||||
|
||||
.hot-display-license-info{display:none;}
|
||||
27
app/templates/categories.html
Normal file
27
app/templates/categories.html
Normal file
@ -0,0 +1,27 @@
|
||||
{% extends "layout.html" %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<h2>
|
||||
Category Editor
|
||||
</h2>
|
||||
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col">Code</th>
|
||||
<th scope="col">Name</th>
|
||||
<th scope="col">Color</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{%for activity in activities %}
|
||||
<tr class="activity-{{activity.code}} color-{{activity.color}}" hx-target="closest tr" hx-swap="beforeend">
|
||||
<td>{{ activity.code }}</td>
|
||||
<td>{{ activity.name }}</td>
|
||||
<td hx-get="/get-color-form/{{activity.activity_id}}">{{ activity.color }}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
{% endblock %}
|
||||
51
app/templates/colors.css
Normal file
51
app/templates/colors.css
Normal file
@ -0,0 +1,51 @@
|
||||
:root{
|
||||
--black: #273036;
|
||||
--red: #c71634;
|
||||
--cyan: #005744;
|
||||
--pink: #ff65ae;
|
||||
--blue: #00a9b3;
|
||||
--green: #189749;
|
||||
--yellow: #fff336;
|
||||
--orange: #ff6d01;
|
||||
--purple: #5b3ab1;
|
||||
--darkred: #ff2816;
|
||||
--lime: #bfff55;
|
||||
}
|
||||
tr.color-black{
|
||||
background: var(--black);
|
||||
}
|
||||
tr.color-red{
|
||||
background: var(--red);
|
||||
}
|
||||
tr.color-blue{
|
||||
background: var(--blue);
|
||||
}
|
||||
tr.color-green{
|
||||
background: var(--green);
|
||||
}
|
||||
tr.color-purple{
|
||||
background: var(--purple);
|
||||
}
|
||||
tr.color-lime{
|
||||
background: var(--lime);
|
||||
color: var(--black);
|
||||
}
|
||||
tr.color-cyan{
|
||||
background: var(--cyan);
|
||||
}
|
||||
tr.color-darkred{
|
||||
background: var(--darkred);
|
||||
}
|
||||
tr.color-pink{
|
||||
background: var(--pink);
|
||||
}
|
||||
tr.color-orange{
|
||||
background: var(--orange);
|
||||
}
|
||||
tr.color-yellow{
|
||||
background: var(--yellow);
|
||||
color: var(--black);
|
||||
}
|
||||
h2{
|
||||
color:green;
|
||||
}
|
||||
15
app/templates/forms/select-color.html
Normal file
15
app/templates/forms/select-color.html
Normal file
@ -0,0 +1,15 @@
|
||||
<div id="color-chooser">
|
||||
{% for color in [
|
||||
"black", "red", "cyan", "blue", "green",
|
||||
"purple", "yellow", "darkred", "orange",
|
||||
"pink", "lime"] %}
|
||||
<div
|
||||
class="color-choice color-{{color}}"
|
||||
hx-post="/change-color"
|
||||
hx-vals='{"activity_id": "{{activity.activity_id}}", "color": "{{color}}"}'
|
||||
hx-target="body"
|
||||
>
|
||||
{{ color.capitalize() }}
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
14
app/templates/forms/update-entry.html
Normal file
14
app/templates/forms/update-entry.html
Normal file
@ -0,0 +1,14 @@
|
||||
<td class="activity-{{hour.activity.code}}">
|
||||
<input
|
||||
id="update-hour-{{hour.hour_id}}"
|
||||
class="update-entry-form"
|
||||
type="text"
|
||||
value="{{hour.activity.code}}"
|
||||
hx-trigger="change"
|
||||
hx-post="/update-entry"
|
||||
>
|
||||
</input>
|
||||
</td>
|
||||
<script language="javascript">
|
||||
document.querySelector("#update-hour-{{hour.hour_id}}").focus()
|
||||
</script>
|
||||
@ -1,45 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>Life Tracker Expanded</title>
|
||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta1/dist/css/bootstrap.min.css" rel="stylesheet"
|
||||
integrity="sha384-giJF6kkoqNQ00vy+HMDP7azOuL0xtbfIcaT9wjKHr8RbDVddVHyTfAAsrekwKmP1" crossorigin="anonymous">
|
||||
<!-- HTMX -->
|
||||
<script src="https://unpkg.com/htmx.org@1.5.0"></script>
|
||||
<link rel="stylesheet" href="/static/ltx.css"/>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Life Tracker, Expanded</h1>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col">Date</th>
|
||||
<th scope="col">Day</th>
|
||||
{% for m in ["am", "pm"]%}
|
||||
<th scope="col">12 {{m}}</th>
|
||||
{% for t in range(1,12) %}
|
||||
<th scope="col">{{t}} {{m}}</th>
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="new-book" hx-target="closest tr" hx-swap="outerHTML swap:0.5s">
|
||||
{%for book in books%}
|
||||
<tr>
|
||||
<td>{{book.Book.title}}</td>
|
||||
<td>{{book.Author.name}}</td>
|
||||
<td>
|
||||
<button class="btn btn-primary"
|
||||
hx-get="/get-edit-form/{{book.Book.book_id}}">
|
||||
Edit Title
|
||||
</button>
|
||||
</td>
|
||||
<td>
|
||||
<button hx-delete="/delete/{{book.Book.book_id}}" class="btn btn-primary">Delete</button>
|
||||
</td>
|
||||
</tr>
|
||||
{%endfor%}
|
||||
</tbody>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
||||
19
app/templates/layout.html
Normal file
19
app/templates/layout.html
Normal file
@ -0,0 +1,19 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en" hx-boost="true">
|
||||
<head>
|
||||
<title>Life Tracker Expanded</title>
|
||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta1/dist/css/bootstrap.min.css" rel="stylesheet"
|
||||
integrity="sha384-giJF6kkoqNQ00vy+HMDP7azOuL0xtbfIcaT9wjKHr8RbDVddVHyTfAAsrekwKmP1" crossorigin="anonymous">
|
||||
<!-- HTMX -->
|
||||
<script src="https://unpkg.com/htmx.org@1.5.0"></script>
|
||||
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/handsontable/dist/handsontable.full.min.js"></script>
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/handsontable/dist/handsontable.full.min.css" />
|
||||
<link rel="stylesheet" href="/colors.css"/>
|
||||
<link rel="stylesheet" href="/static/ltx.css"/>
|
||||
</head>
|
||||
<body>
|
||||
<h1 hx-get="/" hx-target="body" hx-push-url="true">Life Tracker, Expanded</h1>
|
||||
|
||||
{% block content %}{% endblock %}
|
||||
</body>
|
||||
</html>
|
||||
26
app/templates/table.html
Normal file
26
app/templates/table.html
Normal file
@ -0,0 +1,26 @@
|
||||
{% extends "layout.html" %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<div id="container"></div>
|
||||
|
||||
<script language="javascript">
|
||||
const container = document.querySelector('#container');
|
||||
const data = [
|
||||
{ id: 1, name: 'Ted Right', address: '' },
|
||||
{ id: 2, name: 'Frank Honest', address: '' },
|
||||
{ id: 3, name: 'Joan Well', address: '' },
|
||||
{ id: 4, name: 'Gail Polite', address: '' },
|
||||
{ id: 5, name: 'Michael Fair', address: '' },
|
||||
];
|
||||
|
||||
const hot = new Handsontable(container, {
|
||||
data,
|
||||
colHeaders: false,
|
||||
height: 'auto',
|
||||
width: 'auto',
|
||||
minSpareRows: 1,
|
||||
licenseKey: 'non-commercial-and-evaluation'
|
||||
});
|
||||
</script>
|
||||
{% endblock %}
|
||||
56
app/templates/table2.html
Normal file
56
app/templates/table2.html
Normal file
@ -0,0 +1,56 @@
|
||||
{% extends "layout.html" %}
|
||||
{% block content %}
|
||||
<h2>
|
||||
{{ days[0].date.strftime("%h %d") }}
|
||||
–
|
||||
{{ days[-1].date.strftime("%h %d") }}
|
||||
</h2>
|
||||
<div id="table">
|
||||
<div class="cell upcase">Date</div>
|
||||
<div class="cell upcase">Day</div>
|
||||
{% for m in ["am", "pm"]%}
|
||||
{% for t in [12, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] %}
|
||||
{% if now.strftime("%P") == m and now.strftime("%l").strip() == "{}".format(t) %}
|
||||
<div class="now cell upcase">
|
||||
{% else %}
|
||||
<div class="cell upcase">
|
||||
|
||||
{% endif %}
|
||||
{{t}} {{m}}
|
||||
</div>
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
<div class="cell">Mood</div>
|
||||
<div class="cell">Comments</div>
|
||||
|
||||
{%for day in days%}
|
||||
|
||||
{% if day.date.strftime("%x") == now.strftime("%x") %}
|
||||
<div class="now">
|
||||
{% else %}
|
||||
<div>
|
||||
{% endif %}
|
||||
{{day.date.strftime("%m/%d")}}
|
||||
</div>
|
||||
{% if day.date.strftime("%x") == now.strftime("%x") %}
|
||||
<div class="now">
|
||||
{% else %}
|
||||
<div>
|
||||
{% endif %}
|
||||
{{day.date.strftime("%a").upper()}}
|
||||
</div>
|
||||
{%for hour in day.hours%}
|
||||
<div class="activity-{{hour.activity.code}}"
|
||||
hx-get="/get-activity-form/{{hour.hour_id}}">
|
||||
{% if hour.activity.code != -1 %}
|
||||
{{hour.activity.code}}
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endfor %}
|
||||
<div class="cell">{{day.mood}}</div>
|
||||
|
||||
<div class="day-note">{{day.note}}</div>
|
||||
{%endfor%}
|
||||
|
||||
</div>
|
||||
{% endblock %}
|
||||
57
app/templates/table_.html
Normal file
57
app/templates/table_.html
Normal file
@ -0,0 +1,57 @@
|
||||
{% extends "layout.html" %}
|
||||
{% block content %}
|
||||
<h2>
|
||||
{{ days[0].date.strftime("%h %d") }}
|
||||
–
|
||||
{{ days[-1].date.strftime("%h %d") }}
|
||||
</h2>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col">Date</th>
|
||||
<th scope="col">Day</th>
|
||||
{% for m in ["am", "pm"]%}
|
||||
{% for t in [12, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] %}
|
||||
{% if now.strftime("%P") == m and now.strftime("%l").strip() == "{}".format(t) %}
|
||||
<th scope="col" class="now">
|
||||
{% else %}
|
||||
<th scope="col">
|
||||
|
||||
{% endif %}
|
||||
{{t}} {{m}}
|
||||
</th>
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody hx-target="closest td" hx-swap="outerHTML swap:0.5s">
|
||||
{%for day in days%}
|
||||
<tr>
|
||||
{% if day.date.strftime("%x") == now.strftime("%x") %}
|
||||
<td class="now">
|
||||
{% else %}
|
||||
<td>
|
||||
{% endif %}
|
||||
{{day.date.strftime("%m/%d")}}
|
||||
</td>
|
||||
{% if day.date.strftime("%x") == now.strftime("%x") %}
|
||||
<td class="now">
|
||||
{% else %}
|
||||
<td>
|
||||
{% endif %}
|
||||
{{day.date.strftime("%a").upper()}}
|
||||
</td>
|
||||
{%for hour in day.hours%}
|
||||
<td class="activity-{{hour.activity.code}}"
|
||||
hx-get="/get-activity-form/{{hour.hour_id}}">
|
||||
{% if hour.activity.code != -1 %}
|
||||
{{hour.activity.code}}
|
||||
{% endif %}
|
||||
</td>
|
||||
{% endfor %}
|
||||
<td class="day-note">{{day.note}}</td>
|
||||
</tr>
|
||||
{%endfor%}
|
||||
</tbody>
|
||||
</table>
|
||||
{% endblock %}
|
||||
76
app/tracker.py
Normal file
76
app/tracker.py
Normal file
@ -0,0 +1,76 @@
|
||||
from app import db
|
||||
from app.models import Day, Hour, Activity
|
||||
import csv
|
||||
import datetime
|
||||
|
||||
|
||||
class Tracker():
|
||||
def __init__(self, codes_path=None, sheets_path=None):
|
||||
self.codes_path = codes_path
|
||||
self.sheets_path = sheets_path
|
||||
|
||||
def __repr__(self):
|
||||
return "<Tracker: {}>".format(self.__hash__())
|
||||
|
||||
def parse_activity(self, str):
|
||||
try:
|
||||
return int(str)
|
||||
except ValueError:
|
||||
try:
|
||||
return float(str)
|
||||
except:
|
||||
return -1
|
||||
|
||||
def import_codes(self):
|
||||
with open(self.codes_path) as csv_file:
|
||||
data = csv_file.readlines()
|
||||
lines = csv.reader(data)
|
||||
for line in lines:
|
||||
[code_str, name] = line
|
||||
code = self.parse_activity(code_str)
|
||||
exists = db.session.query(Activity).filter(
|
||||
Activity.code == code).first()
|
||||
if exists:
|
||||
pass
|
||||
else:
|
||||
activity = Activity(
|
||||
code=code, name=name.strip())
|
||||
db.session.add(activity)
|
||||
db.session.commit()
|
||||
|
||||
def import_csv(self):
|
||||
with open(self.sheets_path) as csv_file:
|
||||
# Skip the header row
|
||||
data = csv_file.readlines()[1:]
|
||||
lines = csv.reader(data)
|
||||
for line in lines:
|
||||
# Parse each row
|
||||
date_str = line[0]
|
||||
hours_str = line[2:26]
|
||||
note = line[27]
|
||||
|
||||
# Create the right date
|
||||
[month, day] = date_str.split("/")
|
||||
date = datetime.datetime(2023, int(month), int(day))
|
||||
|
||||
# Initialize the Day
|
||||
try:
|
||||
entry = db.session.execute(
|
||||
db.select(Day).filter_by(date=date.strftime("%F"))).scalar_one()
|
||||
except:
|
||||
entry = Day(date=date, note=note)
|
||||
db.session.add(entry)
|
||||
db.session.commit()
|
||||
|
||||
print("Parsed {}".format(entry.date))
|
||||
|
||||
# Create an Hour for each hour
|
||||
for t in range(len(hours_str)):
|
||||
activity_code = self.parse_activity(hours_str[t])
|
||||
activity = db.session.query(Activity).filter(
|
||||
Activity.code == activity_code).first()
|
||||
hour = Hour(
|
||||
time=t, activity_code=activity.code, day_id=entry.day_id)
|
||||
db.session.add(hour)
|
||||
|
||||
db.session.commit()
|
||||
105
app/views.py
105
app/views.py
@ -1,54 +1,67 @@
|
||||
from app import app, db
|
||||
from flask import render_template, request, jsonify
|
||||
from app.models import Author, Book
|
||||
from flask import render_template, request, jsonify, redirect
|
||||
from app.models import Day, Hour, Activity
|
||||
from datetime import datetime, timedelta
|
||||
|
||||
@app.route("/", methods=["GET"])
|
||||
|
||||
@app.route("/import", methods=["GET"])
|
||||
def import_db():
|
||||
tracker = app.tracker
|
||||
tracker.import_codes()
|
||||
tracker.import_csv()
|
||||
return redirect("/")
|
||||
|
||||
|
||||
@app.route("/")
|
||||
def home():
|
||||
books = db.session.query(Book, Author).filter(Book.author_id == Author.author_id).all()
|
||||
return render_template("index.html", books=books)
|
||||
@app.route("/submit", methods=["POST"])
|
||||
return redirect("/tracker")
|
||||
|
||||
def submit():
|
||||
global_book_object = Book()
|
||||
|
||||
title = request.form["title"]
|
||||
author_name = request.form["author"]
|
||||
@app.route("/tracker", methods=["GET"])
|
||||
def tracker():
|
||||
past = datetime.today() - timedelta(days=5)
|
||||
future = datetime.today() + timedelta(days=1)
|
||||
|
||||
author_exists = db.session.query(Author).filter(Author.name == author_name).first()
|
||||
print(author_exists)
|
||||
# check if author already exists in db
|
||||
if author_exists:
|
||||
author_id = author_exists.author_id
|
||||
book = Book(author_id=author_id, title=title)
|
||||
db.session.add(book)
|
||||
db.session.commit()
|
||||
global_book_object = book
|
||||
else:
|
||||
author = Author(name=author_name)
|
||||
db.session.add(author)
|
||||
db.session.commit()
|
||||
days = db.session.query(Day).filter(Day.date >= past,
|
||||
Day.date <= future).all()
|
||||
|
||||
book = Book(author_id=author.author_id, title=title)
|
||||
db.session.add(book)
|
||||
db.session.commit()
|
||||
global_book_object = book
|
||||
return render_template("table.html", days=days, now=datetime.now())
|
||||
|
||||
response = f"""
|
||||
<tr>
|
||||
<td>{title}</td>
|
||||
<td>{author_name}</td>
|
||||
<td>
|
||||
<button class="btn btn-primary"
|
||||
hx-get="/get-edit-form/{global_book_object.book_id}">
|
||||
Edit Title
|
||||
</button>
|
||||
</td>
|
||||
<td>
|
||||
<button hx-delete="/delete/{global_book_object.book_id}"
|
||||
class="btn btn-primary">
|
||||
Delete
|
||||
</button>
|
||||
</td>
|
||||
</tr>
|
||||
"""
|
||||
return response
|
||||
|
||||
@app.route("/categories", methods=["GET"])
|
||||
def categories():
|
||||
activities = db.session.query(Activity).all()
|
||||
|
||||
return render_template("categories.html", activities=activities)
|
||||
|
||||
|
||||
@app.route("/colors.css")
|
||||
def colors():
|
||||
return render_template("colors.css"), 200, {'Content-Type': 'text/css; charset=utf-8'}
|
||||
|
||||
|
||||
@app.route("/get-activity-form/<int:hour_id>", methods=["GET"])
|
||||
def update_entry(hour_id):
|
||||
hour = db.session.query(Hour).filter(Hour.hour_id == hour_id).first()
|
||||
return render_template("forms/update-entry.html", hour=hour)
|
||||
|
||||
|
||||
@app.route("/get-color-form/<int:activity_id>", methods=["GET"])
|
||||
def update_color(activity_id):
|
||||
activity = db.session.query(Activity).filter(
|
||||
Activity.activity_id == activity_id).first()
|
||||
|
||||
return render_template("forms/select-color.html", activity=activity)
|
||||
|
||||
|
||||
@app.route("/change-color", methods=["POST"])
|
||||
def change_color():
|
||||
activity_id = request.form.get("activity_id")
|
||||
color = request.form.get("color")
|
||||
|
||||
activity = db.session.query(Activity).filter(
|
||||
Activity.activity_id == activity_id).first()
|
||||
|
||||
activity.color = color
|
||||
db.session.commit()
|
||||
return render_template("/categories.html")
|
||||
|
||||
Loading…
Reference in New Issue
Block a user