More changes brought through testing.

This commit is contained in:
Yaro Kasear 2025-09-02 12:27:51 -05:00
parent 40e727f5bf
commit c22ecf44ec
9 changed files with 149 additions and 11 deletions

31
test_app/app.py Normal file
View file

@ -0,0 +1,31 @@
from flask import Flask, render_template, request, redirect, url_for
from test_app.models import Device, User
from test_app.db import Base, engine, SessionLocal
from crudkit.core.service import CRUDService
from crudkit.api.flask_api import generate_crud_blueprint
from crudkit.ui.fragments import render_table, render_form
app = Flask(__name__)
Base.metadata.create_all(engine)
session = SessionLocal()
device_service = CRUDService(Device, session)
user_service = CRUDService(User, session)
app.register_blueprint(generate_crud_blueprint(Device, device_service), url_prefix='/api/devices')
app.register_blueprint(generate_crud_blueprint(User, user_service), url_prefix='/api/users')
@app.route('/', methods=['GET', 'POST'])
def index():
if request.method == 'POST':
device_service.create(request.form.to_dict())
return redirect(url_for('index'))
devices = device_service.list()
table = render_table(devices)
form = render_form(Device, {})
return render_template('index.html', table=table, form=form)
if __name__ == '__main__':
app.run(debug=True, host='127.0.0.1', port=5050)

6
test_app/db.py Normal file
View file

@ -0,0 +1,6 @@
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker, declarative_base
engine = create_engine('sqlite:///test.db', echo=True)
SessionLocal = sessionmaker(bind=engine)
Base = declarative_base()

18
test_app/models.py Normal file
View file

@ -0,0 +1,18 @@
from sqlalchemy import Column, String, Integer, ForeignKey
from sqlalchemy.orm import relationship
from crudkit.core.base import CRUDMixin
from test_app.db import Base
class User(CRUDMixin, Base):
__tablename__ = 'users'
name = Column(String)
email = Column(String)
supervisor_id = Column(Integer, ForeignKey('users.id'))
supervisor = relationship('User', remote_side='User.id')
class Device(CRUDMixin, Base):
__tablename__ = 'devices'
name = Column(String)
serial = Column(String)
assigned_to_id = Column(Integer, ForeignKey('users.id'))
assigned_to = relationship('User')

View file

@ -0,0 +1,14 @@
<!DOCTYPE html>
<html>
<head>
<title>Device List</title>
</head>
<body>
<h1>Devices</h1>
{{ table|safe }}
<!-- RENDERING FORM START -->
<h2>Add Device</h2>
{{ form|safe }}
</body>
</html>