"Finished."

This commit is contained in:
Yaro Kasear 2025-08-26 13:28:01 -05:00
parent 34928e794d
commit d6ba934955
7 changed files with 11 additions and 9 deletions

View file

@ -1,6 +1,6 @@
{% macro options(items, value_attr="id", label_path="name", getp=None) -%}
{%- for obj in items -%}
<option value="{{ getattr(obj, value_attr) }}">{{ getp(obj, label_path) }}</option>
<option value="{{ getp(obj, value_attr) }}">{{ getp(obj, label_path) }}</option>
{%- endfor -%}
{% endmacro %}

View file

@ -1,4 +1,4 @@
{% import "crudkit/_macros.html" as ui %}
{% import "_macros.html" as ui %}
{# The action points at your JSON endpoints. Adjust 'crud' if you named it differently. #}
{% if obj %}
{% set action = url_for('crud.update_item', model=model, id=obj.id) %}

View file

@ -1,2 +1,2 @@
{% import "crudkit/_macros.html" as ui %}
{% import "_macros.html" as ui %}
{{ ui.lis(items, label_path=label_path, sublabel_path=sublabel_path, getp=getp) }}

View file

@ -1,3 +1,3 @@
{# Renders only <option>...</option> rows #}
{% import "crudkit/_macros.html" as ui %}
{% import "_macros.html" as ui %}
{{ ui.options(items, value_attr=value_attr, label_path=label_path, getp=getp) }}

View file

@ -1,3 +1,3 @@
{% import "crudkit/_macros.html" as ui %}
{% import "_macros.html" as ui %}
{{ ui.rows(items, fields, getp=getp) }}
{{ ui.pager(model, page, pages, per_page, sort, filters) }}

View file

@ -18,7 +18,7 @@ def make_fragments_blueprint(db_session_factory, registry: Dict[str, Any], *, na
GET /<model>/frag/rows -> <tr>...</tr> + pager markup if wanted
GET /<model>/frag/form -> <form>...</form> (auto-generated)
"""
bp = Blueprint(name, __name__, template_folder="../templates/crudkit")
bp = Blueprint(name, __name__, template_folder="templates/crudkit")
def session(): return scoped_session(db_session_factory)()
def _parse_filters(args):

View file

@ -1,8 +1,9 @@
from flask import Flask
from flask import Flask, render_template
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from .models import Base, Author, Book
from crudkit import make_blueprint
from crudkit.blueprint import make_blueprint as make_json_blueprint
from crudkit.html import make_fragments_blueprint
engine = create_engine("sqlite:///example.db", echo=True, future=True)
SessionLocal = sessionmaker(bind=engine, expire_on_commit=False)
@ -15,7 +16,8 @@ registry = {"author": Author, "book": Book}
def create_app():
app = Flask(__name__)
Base.metadata.create_all(engine)
app.register_blueprint(make_blueprint(session_factory, registry), url_prefix="/api")
app.register_blueprint(make_json_blueprint(session_factory, registry), url_prefix="/api")
app.register_blueprint(make_fragments_blueprint(session_factory, registry), url_prefix="/ui")
return app
if __name__ == "__main__":