From 774cb9b769eb44700933b310261df736201e4e00 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cyrill=20K=C3=BCttel?= Date: Fri, 10 May 2024 15:57:02 +0200 Subject: [PATCH 1/8] Add upgrade tooling --- requirements.txt | 2 + setup.cfg | 1 + src/privatim/cli/__init__.py | 11 ++ src/privatim/cli/add_user.py | 25 +++++ src/privatim/cli/upgrade.py | 153 ++++++++++++++++++++++++++ src/privatim/scripts/initialize_db.py | 4 +- tests/cli/__init__.py | 0 tests/cli/test_upgrade.py | 21 ++++ tests_requirements.txt | 1 + 9 files changed, 216 insertions(+), 2 deletions(-) create mode 100644 src/privatim/cli/__init__.py create mode 100644 src/privatim/cli/add_user.py create mode 100644 src/privatim/cli/upgrade.py create mode 100644 tests/cli/__init__.py create mode 100644 tests/cli/test_upgrade.py diff --git a/requirements.txt b/requirements.txt index a75b648..5d14f92 100644 --- a/requirements.txt +++ b/requirements.txt @@ -19,6 +19,8 @@ chameleon==4.5.4 # via pyramid-chameleon charset-normalizer==3.3.2 # via requests +click==8.1.7 + # via privatim dnspython==2.6.1 # via email-validator email-validator==2.1.1 diff --git a/setup.cfg b/setup.cfg index b3acf2a..3f0aa3a 100644 --- a/setup.cfg +++ b/setup.cfg @@ -25,6 +25,7 @@ install_requires = alembic bcrypt Babel + click email_validator fanstatic Markdown diff --git a/src/privatim/cli/__init__.py b/src/privatim/cli/__init__.py new file mode 100644 index 0000000..1558f91 --- /dev/null +++ b/src/privatim/cli/__init__.py @@ -0,0 +1,11 @@ +import click + +from .add_user import add_user + + +@click.group() +def cli() -> None: + pass + + +cli.add_command(add_user) diff --git a/src/privatim/cli/add_user.py b/src/privatim/cli/add_user.py new file mode 100644 index 0000000..ca50a33 --- /dev/null +++ b/src/privatim/cli/add_user.py @@ -0,0 +1,25 @@ +import click +from pyramid.paster import bootstrap +from pyramid.paster import get_appsettings + +from privatim.models import User +from privatim.orm import get_engine, Base + + +@click.command() +@click.argument('config_uri') +@click.option('--email', prompt=True) +@click.option('--password', prompt=True, hide_input=True) +def add_user(config_uri: str, email: str, password: str) -> None: + + env = bootstrap(config_uri) + settings = get_appsettings(config_uri) + engine = get_engine(settings) + Base.metadata.create_all(engine) + + with env['request'].tm: + dbsession = env['request'].dbsession + + user = User(email=email) + user.set_password(password) + dbsession.add(user) diff --git a/src/privatim/cli/upgrade.py b/src/privatim/cli/upgrade.py new file mode 100644 index 0000000..d4a12e3 --- /dev/null +++ b/src/privatim/cli/upgrade.py @@ -0,0 +1,153 @@ +import logging +from enum import Enum +from typing import TYPE_CHECKING +from typing import Any + +import click +import plaster +import transaction +from alembic.migration import MigrationContext +from alembic.operations import Operations +from sqlalchemy import inspect +from sqlalchemy.sql import text +from zope.sqlalchemy import mark_changed +from privatim.models import get_engine +from privatim.models import get_session_factory +from privatim.orm import Base + + +if TYPE_CHECKING: + from sqlalchemy import Column as _Column + from sqlalchemy import Engine + from sqlalchemy.orm import Session + + Column = _Column[Any] + +logger = logging.getLogger('privatim.upgrade') + + +class UpgradeContext: + + def __init__(self, db: 'Session'): + self.session = db + self.engine: 'Engine' = self.session.bind # type: ignore + + self.operations_connection = db._connection_for_bind( + self.engine + ) + self.operations: Any = Operations( + MigrationContext.configure( + self.operations_connection + ) + ) + + def has_table(self, table: str) -> bool: + inspector = inspect(self.operations_connection) + return table in inspector.get_table_names() + + def drop_table(self, table: str) -> bool: + if self.has_table(table): + self.operations.drop_table(table) + return True + return False + + def has_column(self, table: str, column: str) -> bool: + inspector = inspect(self.operations_connection) + return column in {c['name'] for c in inspector.get_columns(table)} + + def add_column(self, table: str, column: 'Column') -> bool: + if self.has_table(table): + if not self.has_column(table, column.name): + self.operations.add_column(table, column) + return True + return False + + def drop_column(self, table: str, name: str) -> bool: + if self.has_table(table): + if self.has_column(table, name): + self.operations.drop_column(table, name) + return True + return False + + def get_enum_values(self, enum_name: str) -> set[str]: + if self.engine.name != 'postgresql': + return set() + + # NOTE: This is very low-level but easier than using + # the sqlalchemy bind with a regular execute(). + result = self.operations_connection.execute( + text(""" + SELECT pg_enum.enumlabel AS value + FROM pg_enum + JOIN pg_type + ON pg_type.oid = pg_enum.enumtypid + WHERE pg_type.typname = :enum_name + GROUP BY pg_enum.enumlabel + """), + dict(enum_name=enum_name) + ) + return {value for (value,) in result} + + def update_enum_values(self, enum_type: type[Enum]) -> bool: + # NOTE: This only adds new values, it doesn't remove + # old values. But the latter should probably + # not be a valid use case anyways. + if self.engine.name != 'postgresql': + return False + + assert issubclass(enum_type, Enum) + # TODO: If we ever use a custom type name we need to + # be able to specify it. By default sqlalchemy + # uses the Enum type Name in lowercase. + enum_name = enum_type.__name__.lower() + existing = self.get_enum_values(enum_name) + missing = {v.name for v in enum_type} - existing + if not missing: + return False + + # HACK: ALTER TYPE has to be run outside transaction + self.operations.execute('COMMIT') + for value in missing: + # NOTE: This should be safe just by virtue of naming + # restrictions on classes and enum members + self.operations.execute( + f"ALTER TYPE {enum_name} ADD VALUE '{value}'" + ) + # start a new transaction + self.operations.execute('BEGIN') + return True + + def commit(self) -> None: + mark_changed(self.session) + transaction.commit() + + +@click.command() +@click.argument('config_uri') +@click.option('--dry', is_flag=True, default=False) +def upgrade(config_uri: str, dry: bool, update_catalogues: bool) -> None: + + if dry: + click.echo('Dry run') + + # Extract settings from INI config file. + # We cannot use pyramid.paster.bootstrap() because loading the application + # requires the proper DB structure. + settings = plaster.get_settings(config_uri, 'app:main') + + # Setup DB. + + engine = get_engine(settings) + Base.metadata.create_all(engine) + session_factory = get_session_factory(engine) + dbsession = session_factory() + + context = UpgradeContext(dbsession) + module = __import__('privatim', fromlist='*') + func = getattr(module, 'upgrade', None) + if func is not None: + click.echo('Upgrading privatim') + func(context) + + if not dry: + context.commit() diff --git a/src/privatim/scripts/initialize_db.py b/src/privatim/scripts/initialize_db.py index 7afa97e..6fdbea5 100644 --- a/src/privatim/scripts/initialize_db.py +++ b/src/privatim/scripts/initialize_db.py @@ -39,10 +39,10 @@ def main(argv: list[str] = sys.argv) -> None: with env['request'].tm: db = env['request'].dbsession - add_placeholder_content(db) + add_example_content(db) -def add_placeholder_content(db: 'Session') -> None: +def add_example_content(db: 'Session') -> None: users = [ User( email='admin@example.org', diff --git a/tests/cli/__init__.py b/tests/cli/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/tests/cli/test_upgrade.py b/tests/cli/test_upgrade.py new file mode 100644 index 0000000..fcb5de0 --- /dev/null +++ b/tests/cli/test_upgrade.py @@ -0,0 +1,21 @@ +from privatim.cli.upgrade import UpgradeContext, upgrade + + +def test_has_table(config): + upgrade = UpgradeContext(config.dbsession) + assert upgrade.has_table('consultation') + assert not upgrade.has_table('bogus') + + +def test_drop_table(config): + upgrade = UpgradeContext(config.dbsession) + assert upgrade.has_table('meetings') + assert upgrade.drop_table('meetings') + assert not upgrade.has_table('meetings') + assert not upgrade.drop_table('bogus') + + +def test_has_column(config): + upgrade = UpgradeContext(config.dbsession) + assert upgrade.has_column('meetings', 'id') + assert not upgrade.has_column('meetings', 'bogus') \ No newline at end of file diff --git a/tests_requirements.txt b/tests_requirements.txt index f27e621..fb73ae4 100644 --- a/tests_requirements.txt +++ b/tests_requirements.txt @@ -15,6 +15,7 @@ chameleon==4.5.4 # via pyramid-chameleon charset-normalizer==3.3.2 # via requests +click==8.1.7 dnspython==2.6.1 # via email-validator email-validator==2.1.1 From f8224e157fca02dbe5b31badc22fb55d8e8285a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cyrill=20K=C3=BCttel?= Date: Fri, 10 May 2024 17:31:25 +0200 Subject: [PATCH 2/8] Actually add upgrade as console script (so it's reachable) --- setup.cfg | 3 ++- src/{ => privatim}/atoz.py | 0 src/privatim/{scripts => cli}/initialize_db.py | 0 src/privatim/scripts/__init__.py | 1 - src/privatim/views/people.py | 2 +- 5 files changed, 3 insertions(+), 3 deletions(-) rename src/{ => privatim}/atoz.py (100%) rename src/privatim/{scripts => cli}/initialize_db.py (100%) delete mode 100644 src/privatim/scripts/__init__.py diff --git a/setup.cfg b/setup.cfg index 3f0aa3a..66d2606 100644 --- a/setup.cfg +++ b/setup.cfg @@ -69,7 +69,8 @@ fanstatic.libraries = privatim:css = privatim.static:css_library console_scripts = - initialize_db = privatim.scripts.initialize_db:main + initialize_db = privatim.cli.initialize_db:main + upgrade = privatim.cli.upgrade:upgrade [options.extras_require] dev = diff --git a/src/atoz.py b/src/privatim/atoz.py similarity index 100% rename from src/atoz.py rename to src/privatim/atoz.py diff --git a/src/privatim/scripts/initialize_db.py b/src/privatim/cli/initialize_db.py similarity index 100% rename from src/privatim/scripts/initialize_db.py rename to src/privatim/cli/initialize_db.py diff --git a/src/privatim/scripts/__init__.py b/src/privatim/scripts/__init__.py deleted file mode 100644 index 5bb534f..0000000 --- a/src/privatim/scripts/__init__.py +++ /dev/null @@ -1 +0,0 @@ -# package diff --git a/src/privatim/views/people.py b/src/privatim/views/people.py index 861416d..40234a9 100644 --- a/src/privatim/views/people.py +++ b/src/privatim/views/people.py @@ -1,5 +1,5 @@ from sqlalchemy import nullslast -from atoz import AtoZ +from privatim.atoz import AtoZ from privatim.models import User from sqlalchemy.future import select From 849b9daaac9eb864650a1a3cf58dff7123ff0bf6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cyrill=20K=C3=BCttel?= Date: Fri, 10 May 2024 18:02:16 +0200 Subject: [PATCH 3/8] Remove erroneously added param --- src/privatim/cli/upgrade.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/privatim/cli/upgrade.py b/src/privatim/cli/upgrade.py index d4a12e3..a142d90 100644 --- a/src/privatim/cli/upgrade.py +++ b/src/privatim/cli/upgrade.py @@ -125,7 +125,7 @@ def commit(self) -> None: @click.command() @click.argument('config_uri') @click.option('--dry', is_flag=True, default=False) -def upgrade(config_uri: str, dry: bool, update_catalogues: bool) -> None: +def upgrade(config_uri: str, dry: bool) -> None: if dry: click.echo('Dry run') From e620eb6e57e111a90cd0e1fb1413375705dbd005 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cyrill=20K=C3=BCttel?= Date: Sun, 12 May 2024 16:20:24 +0200 Subject: [PATCH 4/8] Rename consultations.pt to activities.pt --- setup.cfg | 1 + src/privatim/cli/__init__.py | 6 +++++- src/privatim/views/__init__.py | 2 +- .../views/templates/{consultations.pt => activities.pt} | 0 4 files changed, 7 insertions(+), 2 deletions(-) rename src/privatim/views/templates/{consultations.pt => activities.pt} (100%) diff --git a/setup.cfg b/setup.cfg index 66d2606..e05f15b 100644 --- a/setup.cfg +++ b/setup.cfg @@ -69,6 +69,7 @@ fanstatic.libraries = privatim:css = privatim.static:css_library console_scripts = + privatim = privatim.cli:cli initialize_db = privatim.cli.initialize_db:main upgrade = privatim.cli.upgrade:upgrade diff --git a/src/privatim/cli/__init__.py b/src/privatim/cli/__init__.py index 1558f91..6898df6 100644 --- a/src/privatim/cli/__init__.py +++ b/src/privatim/cli/__init__.py @@ -1,6 +1,6 @@ import click -from .add_user import add_user +from privatim.cli.add_user import add_user @click.group() @@ -9,3 +9,7 @@ def cli() -> None: cli.add_command(add_user) + + +if __name__ == '__main__': + cli() diff --git a/src/privatim/views/__init__.py b/src/privatim/views/__init__.py index ba35c81..1662fcf 100644 --- a/src/privatim/views/__init__.py +++ b/src/privatim/views/__init__.py @@ -47,7 +47,7 @@ def includeme(config: 'Configurator') -> None: config.add_view( activities_overview, route_name='activities', - renderer='templates/consultations.pt', + renderer='templates/activities.pt', ) # Adding a new consultation diff --git a/src/privatim/views/templates/consultations.pt b/src/privatim/views/templates/activities.pt similarity index 100% rename from src/privatim/views/templates/consultations.pt rename to src/privatim/views/templates/activities.pt From 2df4b6d5b50aad26411c09dc43f57fd2754039a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cyrill=20K=C3=BCttel?= Date: Sun, 12 May 2024 16:55:50 +0200 Subject: [PATCH 5/8] design: logo in footer with transparent version to make consistent --- src/privatim/layouts/layout.pt | 9 +++++++-- .../static/logo-dark-font-transparent.png | Bin 0 -> 4268884 bytes 2 files changed, 7 insertions(+), 2 deletions(-) create mode 100644 src/privatim/static/logo-dark-font-transparent.png diff --git a/src/privatim/layouts/layout.pt b/src/privatim/layouts/layout.pt index 2312f66..827e055 100644 --- a/src/privatim/layouts/layout.pt +++ b/src/privatim/layouts/layout.pt @@ -42,11 +42,16 @@ ${panel('flash')}

- privatim + + Logo +

-

+

Exchange. Record. Find.

diff --git a/src/privatim/static/logo-dark-font-transparent.png b/src/privatim/static/logo-dark-font-transparent.png new file mode 100644 index 0000000000000000000000000000000000000000..fdf29ce307d21f006bf95e2250bc1819653d931f GIT binary patch literal 4268884 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 literal 0 HcmV?d00001 From caee601615a2c61d7bddb73bf4b3254c1bac146d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cyrill=20K=C3=BCttel?= Date: Sun, 12 May 2024 16:58:52 +0200 Subject: [PATCH 6/8] Use default profile icon for now --- src/privatim/layouts/navbar.pt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/privatim/layouts/navbar.pt b/src/privatim/layouts/navbar.pt index 1f176e1..3a0cce4 100644 --- a/src/privatim/layouts/navbar.pt +++ b/src/privatim/layouts/navbar.pt @@ -3,7 +3,7 @@
- Logo @@ -35,7 +35,7 @@