From cbb5174ac88011f622506a1bc9f16c2cc315eb49 Mon Sep 17 00:00:00 2001 From: Lance Edgar Date: Mon, 1 Jul 2024 11:54:04 -0500 Subject: [PATCH 01/11] fix: use rattail function to create top-level command share code in case logic ever changes --- rattail_demo/commands.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/rattail_demo/commands.py b/rattail_demo/commands.py index 30cc967..d408b22 100644 --- a/rattail_demo/commands.py +++ b/rattail_demo/commands.py @@ -11,7 +11,7 @@ import shutil import typer from typing_extensions import Annotated -from rattail.commands.typer import (typer_callback, typer_get_runas_user, +from rattail.commands.typer import (make_typer, typer_get_runas_user, importer_command, file_exporter_command) from rattail.commands.importing import ImportCommandHandler from rattail.commands.purging import run_purge @@ -19,9 +19,9 @@ from rattail.commands.purging import run_purge log = logging.getLogger(__name__) -# nb. this is the top-level command for titeship -rattail_demo_typer = typer.Typer( - callback=typer_callback, +# nb. this is the top-level command +rattail_demo_typer = make_typer( + name='rattail_demo', help="Rattail Demo (custom Rattail system)" ) From 6756899bbbd26f77908c0d77c54d4ccbecab09f0 Mon Sep 17 00:00:00 2001 From: Lance Edgar Date: Mon, 1 Jul 2024 11:54:15 -0500 Subject: [PATCH 02/11] =?UTF-8?q?bump:=20version=200.2.2=20=E2=86=92=200.2?= =?UTF-8?q?.3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 6 ++++++ pyproject.toml | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 67d5a23..f2feb0c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,12 @@ All notable changes to rattail will be documented in this file. The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html). +## v0.2.3 (2024-07-01) + +### Fix + +- use rattail function to create top-level command + ## v0.2.2 (2024-06-30) ### Fix diff --git a/pyproject.toml b/pyproject.toml index 089efa8..558ca1d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -6,7 +6,7 @@ build-backend = "hatchling.build" [project] name = "rattail-demo" -version = "0.2.2" +version = "0.2.3" description = "Rattail Software Demo" readme = "README.rst" authors = [{name = "Lance Edgar", email = "lance@edbob.org"}] From 19f4f622292148360d498249a5195fd015435045 Mon Sep 17 00:00:00 2001 From: Lance Edgar Date: Tue, 2 Jul 2024 09:44:15 -0500 Subject: [PATCH 03/11] fix: remove unused alembic script we just use the upstream script now --- rattail_demo/db/alembic/env.py | 74 ---------------------------------- 1 file changed, 74 deletions(-) delete mode 100644 rattail_demo/db/alembic/env.py diff --git a/rattail_demo/db/alembic/env.py b/rattail_demo/db/alembic/env.py deleted file mode 100644 index 5a9183c..0000000 --- a/rattail_demo/db/alembic/env.py +++ /dev/null @@ -1,74 +0,0 @@ -# -*- coding: utf-8; mode: python; -*- -""" -Alembic environment script -""" - -from alembic import context -from sqlalchemy.orm import configure_mappers - -from rattail.config import make_config -from rattail.db.util import get_default_engine -from rattail.db.continuum import configure_versioning - - -# this is the Alembic Config object, which provides -# access to the values within the .ini file in use. -alembic_config = context.config - -# use same config file for Rattail -rattail_config = make_config(alembic_config.config_file_name, usedb=False, versioning=False) - -# configure Continuum..this is trickier than we want but it works.. -configure_versioning(rattail_config, force=True) -from rattail_demo.db import model -configure_mappers() - -# needed for 'autogenerate' support -target_metadata = model.Base.metadata - - -def run_migrations_offline(): - """Run migrations in 'offline' mode. - - This configures the context with just a URL - and not an Engine, though an Engine is acceptable - here as well. By skipping the Engine creation - we don't even need a DBAPI to be available. - - Calls to context.execute() here emit the given string to the - script output. - - """ - engine = get_default_engine(rattail_config) - context.configure( - url=engine.url, - target_metadata=target_metadata) - - with context.begin_transaction(): - context.run_migrations() - - -def run_migrations_online(): - """Run migrations in 'online' mode. - - In this scenario we need to create an Engine - and associate a connection with the context. - - """ - engine = get_default_engine(rattail_config) - connection = engine.connect() - context.configure( - connection=connection, - target_metadata=target_metadata) - - try: - with context.begin_transaction(): - context.run_migrations() - finally: - connection.close() - - -if context.is_offline_mode(): - run_migrations_offline() -else: - run_migrations_online() From e10b1fa2fdf6084fc22141a42a972ba59b2181d5 Mon Sep 17 00:00:00 2001 From: Lance Edgar Date: Sat, 13 Jul 2024 09:36:40 -0500 Subject: [PATCH 04/11] fix: update config for default app model per rattail changes --- rattail_demo/config.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rattail_demo/config.py b/rattail_demo/config.py index dc66ba5..f44a182 100644 --- a/rattail_demo/config.py +++ b/rattail_demo/config.py @@ -17,7 +17,7 @@ class DemoConfigExtension(ConfigExtension): config.setdefault('rattail', 'app_package', 'rattail_demo') # tell rattail where our stuff lives - config.setdefault('rattail', 'model', 'rattail_demo.db.model') + config.setdefault('rattail', 'model_spec', 'rattail_demo.db.model') config.setdefault('rattail.trainwreck', 'model', 'rattail.trainwreck.db.model.defaults') config.setdefault('tailbone.menus', 'handler', 'rattail_demo.web.menus:DemoMenuHandler') config.setdefault('tailbone.static_libcache.module', 'rattail_demo.web.static') From c67494a18cddfd49265d88b78158f61a5a10e750 Mon Sep 17 00:00:00 2001 From: Lance Edgar Date: Sun, 14 Jul 2024 11:37:36 -0500 Subject: [PATCH 05/11] fix: update menu config per wuttaweb --- rattail_demo/config.py | 4 +++- rattail_demo/web/menus.py | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/rattail_demo/config.py b/rattail_demo/config.py index f44a182..845fad2 100644 --- a/rattail_demo/config.py +++ b/rattail_demo/config.py @@ -19,9 +19,11 @@ class DemoConfigExtension(ConfigExtension): # tell rattail where our stuff lives config.setdefault('rattail', 'model_spec', 'rattail_demo.db.model') config.setdefault('rattail.trainwreck', 'model', 'rattail.trainwreck.db.model.defaults') - config.setdefault('tailbone.menus', 'handler', 'rattail_demo.web.menus:DemoMenuHandler') config.setdefault('tailbone.static_libcache.module', 'rattail_demo.web.static') + # menus + config.setdefault('rattail.web.menus.handler_spec', 'rattail_demo.web.menus:DemoMenuHandler') + # default app handlers config.setdefault('rattail', 'products.handler', 'rattail_corepos.products:CoreProductsHandler') diff --git a/rattail_demo/web/menus.py b/rattail_demo/web/menus.py index 9468903..9dcf5fa 100644 --- a/rattail_demo/web/menus.py +++ b/rattail_demo/web/menus.py @@ -7,7 +7,7 @@ from tailbone import menus as base from tailbone_corepos.menus import make_corepos_menu -class DemoMenuHandler(base.MenuHandler): +class DemoMenuHandler(base.TailboneMenuHandler): """ Demo menu handler """ From beddcf6987993c4434d420dbebb85d625323351c Mon Sep 17 00:00:00 2001 From: Lance Edgar Date: Thu, 18 Jul 2024 09:37:28 -0500 Subject: [PATCH 06/11] fix: just use upstream `main()` for webapi apparently this demo is not customizing anything and had some old code which no longer works (auth policy) --- rattail_demo/web/webapi.py | 43 ++------------------------------------ 1 file changed, 2 insertions(+), 41 deletions(-) diff --git a/rattail_demo/web/webapi.py b/rattail_demo/web/webapi.py index 591b2e6..40ad5b1 100644 --- a/rattail_demo/web/webapi.py +++ b/rattail_demo/web/webapi.py @@ -3,50 +3,11 @@ Rattail Demo web API """ -from __future__ import unicode_literals, absolute_import - -from pyramid.config import Configurator -from pyramid.authentication import SessionAuthenticationPolicy - -from tailbone import app -from tailbone.auth import TailboneAuthorizationPolicy +from tailbone import webapi as base def main(global_config, **settings): """ This function returns a Pyramid WSGI application. """ - # make config objects - rattail_config = app.make_rattail_config(settings) - pyramid_config = Configurator(settings=settings, root_factory=app.Root) - - # configure user authorization / authentication - pyramid_config.set_authorization_policy(TailboneAuthorizationPolicy()) - pyramid_config.set_authentication_policy(SessionAuthenticationPolicy()) - - # always require CSRF token protection - pyramid_config.set_default_csrf_options(require_csrf=True, token='_csrf', header='X-XSRF-TOKEN') - - # bring in some Pyramid goodies - pyramid_config.include('tailbone.beaker') - pyramid_config.include('pyramid_tm') - pyramid_config.include('cornice') - - # bring in the pyramid_retry logic, if available - # TODO: pretty soon we can require this package, hopefully.. - try: - import pyramid_retry - except ImportError: - pass - else: - pyramid_config.include('pyramid_retry') - - # add some permissions magic - pyramid_config.add_directive('add_tailbone_permission_group', 'tailbone.auth.add_permission_group') - pyramid_config.add_directive('add_tailbone_permission', 'tailbone.auth.add_permission') - - # bring in some Tailbone - pyramid_config.include('tailbone.subscribers') - pyramid_config.include('tailbone.api') - - return pyramid_config.make_wsgi_app() + return base.main(global_config, **settings) From f18037b2fba6ae1eab7d21eb15ee7234b5e2afbf Mon Sep 17 00:00:00 2001 From: Lance Edgar Date: Fri, 16 Aug 2024 10:14:33 -0500 Subject: [PATCH 07/11] fix: avoid deprecated base class for config extension --- rattail_demo/config.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/rattail_demo/config.py b/rattail_demo/config.py index 845fad2..6a427da 100644 --- a/rattail_demo/config.py +++ b/rattail_demo/config.py @@ -3,10 +3,10 @@ Rattail Demo config extension """ -from rattail.config import ConfigExtension +from wuttjamaican.conf import WuttaConfigExtension -class DemoConfigExtension(ConfigExtension): +class DemoConfigExtension(WuttaConfigExtension): """ Rattail Demo config extension """ From 59e61357be04b933a97bb5dfdee0121eabbe7241 Mon Sep 17 00:00:00 2001 From: Lance Edgar Date: Fri, 13 Sep 2024 18:42:05 -0500 Subject: [PATCH 08/11] docs: use markdown for readme file --- README.rst => README.md | 10 ++++------ pyproject.toml | 2 +- 2 files changed, 5 insertions(+), 7 deletions(-) rename README.rst => README.md (57%) diff --git a/README.rst b/README.md similarity index 57% rename from README.rst rename to README.md index a7f9721..6792c08 100644 --- a/README.rst +++ b/README.md @@ -1,11 +1,9 @@ -Rattail Demo -============ +# Rattail Demo -This project serves as a working demo, to illustrate various concepts of the -Rattail software framework. See the `Rattail Wiki`_ for more info. +This project serves as a working demo, to illustrate various concepts +of the Rattail software framework. See the [Rattail +Wiki](https://rattailproject.org/moin/) for more info. Note that it *can be* usable as a starting point for your own project(s), should you need one. But probably the Rattail Tutorial is a better one. - -.. _`Rattail Wiki`: https://rattailproject.org/moin/ diff --git a/pyproject.toml b/pyproject.toml index 558ca1d..917b3ac 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -8,7 +8,7 @@ build-backend = "hatchling.build" name = "rattail-demo" version = "0.2.3" description = "Rattail Software Demo" -readme = "README.rst" +readme = "README.md" authors = [{name = "Lance Edgar", email = "lance@edbob.org"}] classifiers = [ "Development Status :: 3 - Alpha", From 8946121e8aa5fd16970f78e81722014b18fc0d9e Mon Sep 17 00:00:00 2001 From: Lance Edgar Date: Sat, 14 Sep 2024 13:19:35 -0500 Subject: [PATCH 09/11] fix: update project links, kallithea -> forgejo --- pyproject.toml | 4 ++-- rattail_demo/web/menus.py | 2 +- rattail_demo/web/views/upgrades.py | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 917b3ac..6800ec4 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -51,8 +51,8 @@ rattail-demo = "rattail_demo.config:DemoConfigExtension" [project.urls] Homepage = "https://demo.rattailproject.org" -Repository = "https://kallithea.rattailproject.org/rattail-project/rattail-demo" -Changelog = "https://kallithea.rattailproject.org/rattail-project/rattail-demo/files/master/CHANGELOG.md" +Repository = "https://forgejo.wuttaproject.org/rattail/rattail-demo" +Changelog = "https://forgejo.wuttaproject.org/rattail/rattail-demo/src/branch/master/CHANGELOG.md" [tool.commitizen] diff --git a/rattail_demo/web/menus.py b/rattail_demo/web/menus.py index 9dcf5fa..2927157 100644 --- a/rattail_demo/web/menus.py +++ b/rattail_demo/web/menus.py @@ -62,7 +62,7 @@ class DemoMenuHandler(base.TailboneMenuHandler): }, { 'title': "Source Code", - 'url': 'https://kallithea.rattailproject.org/rattail-project/rattail-demo', + 'url': 'https://forgejo.wuttaproject.org/rattail/rattail-demo', 'target': '_blank', }, { diff --git a/rattail_demo/web/views/upgrades.py b/rattail_demo/web/views/upgrades.py index 8035303..af722f4 100644 --- a/rattail_demo/web/views/upgrades.py +++ b/rattail_demo/web/views/upgrades.py @@ -15,8 +15,8 @@ class UpgradeView(base.UpgradeView): projects.update({ 'rattail_demo': { - 'commit_url': 'https://kallithea.rattailproject.org/rattail-project/rattail-demo/changelog/{new_version}/?size=10', - 'release_url': 'https://kallithea.rattailproject.org/rattail-project/rattail-demo/files/{new_version}/CHANGES.rst', + 'commit_url': 'https://forgejo.wuttaproject.org/rattail/rattail-demo/compare/{{old_version}}...{{new_version}}', + 'release_url': 'https://forgejo.wuttaproject.org/rattail/rattail-demo/src/tag/v{{new_version}}/CHANGELOG.md', }, }) From 86abdea9d7a94486268fa2d4be35866212e81388 Mon Sep 17 00:00:00 2001 From: Lance Edgar Date: Sun, 24 Nov 2024 10:33:08 -0600 Subject: [PATCH 10/11] =?UTF-8?q?bump:=20version=200.2.3=20=E2=86=92=200.2?= =?UTF-8?q?.4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 11 +++++++++++ pyproject.toml | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f2feb0c..78f5e5d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,17 @@ All notable changes to rattail will be documented in this file. The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html). +## v0.2.4 (2024-11-24) + +### Fix + +- update project links, kallithea -> forgejo +- avoid deprecated base class for config extension +- just use upstream `main()` for webapi +- update menu config per wuttaweb +- update config for default app model +- remove unused alembic script + ## v0.2.3 (2024-07-01) ### Fix diff --git a/pyproject.toml b/pyproject.toml index 6800ec4..dbc3511 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -6,7 +6,7 @@ build-backend = "hatchling.build" [project] name = "rattail-demo" -version = "0.2.3" +version = "0.2.4" description = "Rattail Software Demo" readme = "README.md" authors = [{name = "Lance Edgar", email = "lance@edbob.org"}] From 87d84f005af0511863d896a501172993f426afba Mon Sep 17 00:00:00 2001 From: Lance Edgar Date: Sun, 24 Nov 2024 10:35:20 -0600 Subject: [PATCH 11/11] build: add release task --- tasks.py | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 tasks.py diff --git a/tasks.py b/tasks.py new file mode 100644 index 0000000..d296ec9 --- /dev/null +++ b/tasks.py @@ -0,0 +1,23 @@ +# -*- coding: utf-8; -*- +""" +Tasks for rattail-demo +""" + +import os +import shutil + +from invoke import task + + +@task +def release(c): + """ + Release a new version of 'rattail-demo' + """ + if os.path.exists('dist'): + shutil.rmtree('dist') + if os.path.exists('rattail_demo.egg-info'): + shutil.rmtree('rattail_demo.egg-info') + + c.run('python -m build --sdist') + c.run('twine upload dist/*')