From 1274a9fca5621c3016bd25d347280455ceda6247 Mon Sep 17 00:00:00 2001 From: Adrian Zawadzki Date: Fri, 14 Nov 2025 13:34:38 +0100 Subject: [PATCH 1/2] added decorator --- dbzero/dbzero/decorators.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/dbzero/dbzero/decorators.py b/dbzero/dbzero/decorators.py index d42b5392..ee8d5b95 100644 --- a/dbzero/dbzero/decorators.py +++ b/dbzero/dbzero/decorators.py @@ -31,6 +31,22 @@ def wrapper(*args, **kwargs): wrapper.__db0_fulltext = True return wrapper +def table_view(operator=None): + """The table_view decorator marks a specific function or method as generating a table view. The following properties apply: + - First result represents the table header + - All other results (rows) are key-decorated (i.e. return tuples with unique identifiers) - see Cell Editor + - Optional operator may be defined to allow cell editions (see Cell Operator) + """ + def decorator(f): + @functools.wraps(f) + def wrapper(*args, **kwargs): + retval = f(*args, **kwargs) + return retval + # Immutable query if True and immutable parameter if false + wrapper.__db0_table_view = True + return wrapper + return decorator + def is_immutable(f): return hasattr(f, '__db0_immutable_query') @@ -46,6 +62,9 @@ def is_query(f): def is_fulltext(f): return hasattr(f, '__db0_fulltext') +def is_table_view(f): + return hasattr(f, '__db0_table_view') + def _get_function_context(f): context = sys.modules[f.__module__] path = f.__qualname__.split('.') From ebb11a96975ec2e634a2d2f2df44431c41d15489 Mon Sep 17 00:00:00 2001 From: Adrian Zawadzki Date: Fri, 14 Nov 2025 13:50:53 +0100 Subject: [PATCH 2/2] changed decorator --- dbzero/dbzero/decorators.py | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/dbzero/dbzero/decorators.py b/dbzero/dbzero/decorators.py index ee8d5b95..14cd80e2 100644 --- a/dbzero/dbzero/decorators.py +++ b/dbzero/dbzero/decorators.py @@ -31,21 +31,19 @@ def wrapper(*args, **kwargs): wrapper.__db0_fulltext = True return wrapper -def table_view(operator=None): +def table_view(f, operator=None): """The table_view decorator marks a specific function or method as generating a table view. The following properties apply: - First result represents the table header - All other results (rows) are key-decorated (i.e. return tuples with unique identifiers) - see Cell Editor - Optional operator may be defined to allow cell editions (see Cell Operator) """ - def decorator(f): - @functools.wraps(f) - def wrapper(*args, **kwargs): - retval = f(*args, **kwargs) - return retval - # Immutable query if True and immutable parameter if false - wrapper.__db0_table_view = True - return wrapper - return decorator + @functools.wraps(f) + def wrapper(*args, **kwargs): + retval = f(*args, **kwargs) + return retval + # Immutable query if True and immutable parameter if false + wrapper.__db0_table_view = True + return wrapper def is_immutable(f): return hasattr(f, '__db0_immutable_query')