test commit

This commit is contained in:
Ryan Pandya 2023-04-29 13:15:20 -07:00
parent cba26dec5e
commit ed30556bd3
12 changed files with 178 additions and 35 deletions

36
.gitignore vendored
View File

@ -1,36 +1,2 @@
# ---> Elixir /env
/_build
/cover
/deps
/doc
/.fetch
erl_crash.dump
*.ez
*.beam
/config/*.secret.exs
.elixir_ls/
# ---> Phoenix
# gitignore template for Phoenix projects
# website: http://www.phoenixframework.org/
#
# Recommended template: Elixir.gitignore
# Temporary files
/tmp
# Static artifacts
/node_modules
/assets/node_modules
# Since we are building assets from web/static,
# we ignore priv/static. You may want to comment
# this depending on your deployment strategy.
/priv/static/
# Installer-related files
/installer/_build
/installer/tmp
/installer/doc
/installer/deps

23
app/__init__.py Normal file
View File

@ -0,0 +1,23 @@
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__)))
app = Flask(__name__)
db_path = os.path.join(persistent_path, "sqlite.db")
app.config["SQLALCHEMY_DATABASE_URI"] = f'sqlite:///{db_path}'
app.config["SQLALCHEMY_ECHO"] = False
app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False
db = SQLAlchemy()
from app import views
from app import models
db.init_app(app)
with app.app_context():
db.create_all()

Binary file not shown.

Binary file not shown.

Binary file not shown.

16
app/models.py Normal file
View File

@ -0,0 +1,16 @@
from app import db
class Day(db.Model):
day_id = db.Column(db.Integer, primary_key=True)
note = db.Column(db.String)
books = db.relationship("Hour", backref="day")
def __repr__(self):
return '<Day: {}>'.format(self.hours)
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"))

BIN
app/sqlite.db Normal file

Binary file not shown.

35
app/static/ltx.css Normal file
View File

@ -0,0 +1,35 @@
/* Variables */
:root{
--bg: #273036;
--fg: #ffffff;
}
body{
padding: 20px;
background: var(--bg);
color: var(--fg);
}
table {
font-family: "Monospace";
border-collapse: collapse;
width: 100%;
}
th{
text-transform: uppercase;
}
tr.htmx-swapping td {
opacity: 0;
transition: opacity 0.5s ease-out;
}
td, th {
border: 1px solid #383737;
text-align: left;
padding: 8px;
}
tr:nth-child(even) {
background-color: #dddddd;
}

45
app/templates/index.html Normal file
View File

@ -0,0 +1,45 @@
<!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>

54
app/views.py Normal file
View File

@ -0,0 +1,54 @@
from app import app, db
from flask import render_template, request, jsonify
from app.models import Author, Book
@app.route("/", methods=["GET"])
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"])
def submit():
global_book_object = Book()
title = request.form["title"]
author_name = request.form["author"]
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()
book = Book(author_id=author.author_id, title=title)
db.session.add(book)
db.session.commit()
global_book_object = book
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

0
ltx.py Normal file
View File

4
run.py Normal file
View File

@ -0,0 +1,4 @@
from app import app
if __name__ == "__main__":
app.run(debug=True)