velocity-python 0.0.176__tar.gz → 0.0.178__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {velocity_python-0.0.176 → velocity_python-0.0.178}/PKG-INFO +1 -1
- {velocity_python-0.0.176 → velocity_python-0.0.178}/pyproject.toml +1 -1
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/__init__.py +1 -1
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/aws/handlers/lambda_handler.py +2 -1
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/aws/handlers/mixins/__init__.py +2 -2
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/aws/handlers/mixins/data_service.py +113 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity_python.egg-info/PKG-INFO +1 -1
- {velocity_python-0.0.176 → velocity_python-0.0.178}/LICENSE +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/README.md +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/setup.cfg +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/app/__init__.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/app/invoices.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/app/orders.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/app/payments.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/app/purchase_orders.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/app/tests/__init__.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/app/tests/test_email_processing.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/app/tests/test_payment_profile_sorting.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/app/tests/test_spreadsheet_functions.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/aws/__init__.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/aws/amplify.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/aws/handlers/__init__.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/aws/handlers/base_handler.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/aws/handlers/context.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/aws/handlers/exceptions.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/aws/handlers/mixins/web_handler.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/aws/handlers/response.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/aws/handlers/sqs_handler.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/aws/tests/__init__.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/aws/tests/test_lambda_handler_json_serialization.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/aws/tests/test_response.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/db/__init__.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/db/core/__init__.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/db/core/column.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/db/core/database.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/db/core/decorators.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/db/core/engine.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/db/core/result.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/db/core/row.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/db/core/sequence.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/db/core/table.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/db/core/transaction.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/db/exceptions.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/db/servers/__init__.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/db/servers/base/__init__.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/db/servers/base/initializer.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/db/servers/base/operators.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/db/servers/base/sql.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/db/servers/base/types.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/db/servers/mysql/__init__.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/db/servers/mysql/operators.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/db/servers/mysql/reserved.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/db/servers/mysql/sql.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/db/servers/mysql/types.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/db/servers/postgres/__init__.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/db/servers/postgres/operators.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/db/servers/postgres/reserved.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/db/servers/postgres/sql.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/db/servers/postgres/types.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/db/servers/sqlite/__init__.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/db/servers/sqlite/operators.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/db/servers/sqlite/reserved.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/db/servers/sqlite/sql.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/db/servers/sqlite/types.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/db/servers/sqlserver/__init__.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/db/servers/sqlserver/operators.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/db/servers/sqlserver/reserved.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/db/servers/sqlserver/sql.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/db/servers/sqlserver/types.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/db/servers/tablehelper.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/db/tests/__init__.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/db/tests/common_db_test.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/db/tests/postgres/__init__.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/db/tests/postgres/common.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/db/tests/postgres/test_column.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/db/tests/postgres/test_connections.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/db/tests/postgres/test_database.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/db/tests/postgres/test_engine.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/db/tests/postgres/test_general_usage.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/db/tests/postgres/test_imports.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/db/tests/postgres/test_result.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/db/tests/postgres/test_row.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/db/tests/postgres/test_row_comprehensive.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/db/tests/postgres/test_schema_locking.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/db/tests/postgres/test_schema_locking_unit.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/db/tests/postgres/test_sequence.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/db/tests/postgres/test_sql_comprehensive.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/db/tests/postgres/test_table.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/db/tests/postgres/test_table_comprehensive.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/db/tests/postgres/test_transaction.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/db/tests/sql/__init__.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/db/tests/sql/common.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/db/tests/sql/test_postgres_select_advanced.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/db/tests/sql/test_postgres_select_variances.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/db/tests/test_cursor_rowcount_fix.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/db/tests/test_db_utils.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/db/tests/test_postgres.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/db/tests/test_postgres_unchanged.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/db/tests/test_process_error_robustness.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/db/tests/test_result_caching.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/db/tests/test_result_sql_aware.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/db/tests/test_row_get_missing_column.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/db/tests/test_schema_locking_initializers.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/db/tests/test_schema_locking_simple.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/db/tests/test_sql_builder.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/db/tests/test_tablehelper.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/db/utils.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/logging.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/misc/__init__.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/misc/conv/__init__.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/misc/conv/iconv.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/misc/conv/oconv.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/misc/db.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/misc/export.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/misc/format.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/misc/mail.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/misc/merge.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/misc/tests/__init__.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/misc/tests/test_db.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/misc/tests/test_fix.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/misc/tests/test_format.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/misc/tests/test_iconv.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/misc/tests/test_merge.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/misc/tests/test_oconv.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/misc/tests/test_original_error.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/misc/tests/test_timer.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/misc/timer.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/misc/tools.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity_python.egg-info/SOURCES.txt +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity_python.egg-info/dependency_links.txt +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity_python.egg-info/requires.txt +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity_python.egg-info/top_level.txt +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/tests/test_decorators.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/tests/test_lambda_handler.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/tests/test_mixins_import.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/tests/test_sys_modified_count_postgres_demo.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/tests/test_table_alter.py +0 -0
- {velocity_python-0.0.176 → velocity_python-0.0.178}/tests/test_where_clause_validation.py +0 -0
{velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/aws/handlers/lambda_handler.py
RENAMED
|
@@ -22,6 +22,7 @@ class LambdaHandler(BaseHandler):
|
|
|
22
22
|
aws_context,
|
|
23
23
|
context_class: Type[context.Context] = context.Context
|
|
24
24
|
):
|
|
25
|
+
self.start = time.time()
|
|
25
26
|
super().__init__(aws_event, aws_context, context_class)
|
|
26
27
|
|
|
27
28
|
# LambdaHandler-specific initialization
|
|
@@ -63,7 +64,7 @@ class LambdaHandler(BaseHandler):
|
|
|
63
64
|
return
|
|
64
65
|
logger.debug("starting LamdaHandler.beforeAction")
|
|
65
66
|
|
|
66
|
-
|
|
67
|
+
|
|
67
68
|
self.cognito_user = context.get_cognito_user(self.aws_event)
|
|
68
69
|
self.current_user = {}
|
|
69
70
|
|
{velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/aws/handlers/mixins/__init__.py
RENAMED
|
@@ -7,6 +7,6 @@ This package provides mixins for common Lambda handler patterns:
|
|
|
7
7
|
"""
|
|
8
8
|
|
|
9
9
|
from .web_handler import WebHandler
|
|
10
|
-
from .data_service import DataServiceMixin
|
|
10
|
+
from .data_service import DataServiceMixin, RWXHookSystem, apply_sys_modified_by
|
|
11
11
|
|
|
12
|
-
__all__ = ['WebHandler', 'DataServiceMixin']
|
|
12
|
+
__all__ = ['WebHandler', 'DataServiceMixin', 'RWXHookSystem', 'apply_sys_modified_by']
|
{velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/aws/handlers/mixins/data_service.py
RENAMED
|
@@ -7,6 +7,7 @@ that uses velocity.db for database access.
|
|
|
7
7
|
|
|
8
8
|
import base64
|
|
9
9
|
import datetime
|
|
10
|
+
import importlib
|
|
10
11
|
from io import BytesIO
|
|
11
12
|
|
|
12
13
|
from velocity.misc import export
|
|
@@ -528,3 +529,115 @@ class DataServiceMixin:
|
|
|
528
529
|
"OnActionGetTableSchema",
|
|
529
530
|
)
|
|
530
531
|
raise Exception(f"Failed to retrieve table schema: {str(e)}")
|
|
532
|
+
|
|
533
|
+
|
|
534
|
+
class RWXHookSystem:
|
|
535
|
+
"""
|
|
536
|
+
RWX (Read/Write/eXecute) hook system for table-specific business logic.
|
|
537
|
+
|
|
538
|
+
This class provides a way to dynamically load and execute table-specific
|
|
539
|
+
hooks (before_read, after_write, etc.) from an rwx package.
|
|
540
|
+
|
|
541
|
+
Usage:
|
|
542
|
+
from velocity.aws.handlers.mixins import RWXHookSystem
|
|
543
|
+
|
|
544
|
+
class MyRWXSystem(RWXHookSystem):
|
|
545
|
+
hook_module_name = 'rwx' # Your rwx package
|
|
546
|
+
|
|
547
|
+
class HttpEventHandler(DataServiceMixin, LambdaHandler):
|
|
548
|
+
def read_hook(self, tx, table_name, sys_id, row, context):
|
|
549
|
+
MyRWXSystem.call_hooks(
|
|
550
|
+
'read', tx, table_name, sys_id, row, context
|
|
551
|
+
)
|
|
552
|
+
"""
|
|
553
|
+
|
|
554
|
+
hook_module_name = None # Override in subclass (e.g., 'rwx')
|
|
555
|
+
|
|
556
|
+
@classmethod
|
|
557
|
+
def _get_table_module(cls, table):
|
|
558
|
+
"""Load table-specific hook module if it exists"""
|
|
559
|
+
if not cls.hook_module_name:
|
|
560
|
+
return None
|
|
561
|
+
try:
|
|
562
|
+
return importlib.import_module(f".{table}", cls.hook_module_name)
|
|
563
|
+
except ImportError:
|
|
564
|
+
return None
|
|
565
|
+
|
|
566
|
+
@classmethod
|
|
567
|
+
def _call_hook(cls, hook_name, table, *args, **kwargs):
|
|
568
|
+
"""Call a hook on table-specific module if it exists"""
|
|
569
|
+
module = cls._get_table_module(table)
|
|
570
|
+
if module and hasattr(module, hook_name):
|
|
571
|
+
return getattr(module, hook_name)(*args, **kwargs)
|
|
572
|
+
return None
|
|
573
|
+
|
|
574
|
+
@classmethod
|
|
575
|
+
def call_hooks(cls, operation, tx, table_name, *args, context=None):
|
|
576
|
+
"""
|
|
577
|
+
Call before/after hooks for an operation.
|
|
578
|
+
|
|
579
|
+
Args:
|
|
580
|
+
operation: 'read', 'write', 'delete', 'query'
|
|
581
|
+
tx: Database transaction
|
|
582
|
+
table_name: Name of the table
|
|
583
|
+
*args: Operation-specific arguments
|
|
584
|
+
context: Request context (keyword only)
|
|
585
|
+
"""
|
|
586
|
+
# Call before hook
|
|
587
|
+
cls._call_hook(f'before_{operation}', table_name, tx, table_name, *args, context)
|
|
588
|
+
|
|
589
|
+
# Note: after hooks should be called by the application after the operation
|
|
590
|
+
# This method is just for the before hook pattern
|
|
591
|
+
|
|
592
|
+
@classmethod
|
|
593
|
+
def call_after_hook(cls, operation, tx, table_name, *args, context=None):
|
|
594
|
+
"""Call after hook for an operation"""
|
|
595
|
+
cls._call_hook(f'after_{operation}', table_name, tx, table_name, *args, context)
|
|
596
|
+
|
|
597
|
+
|
|
598
|
+
def apply_sys_modified_by(incoming, context):
|
|
599
|
+
"""
|
|
600
|
+
Strip sys_* fields and set sys_modified_by from context.
|
|
601
|
+
|
|
602
|
+
Common pattern for applications that track who modified records.
|
|
603
|
+
Call this from your write_hook implementation.
|
|
604
|
+
|
|
605
|
+
Args:
|
|
606
|
+
incoming: Dictionary of data being written
|
|
607
|
+
context: Request context with session/payload
|
|
608
|
+
"""
|
|
609
|
+
payload = context.payload()
|
|
610
|
+
|
|
611
|
+
# Strip system fields from incoming data
|
|
612
|
+
for key in list(incoming.keys()):
|
|
613
|
+
if "sys_" in key:
|
|
614
|
+
incoming.pop(key)
|
|
615
|
+
|
|
616
|
+
# Extract email from session
|
|
617
|
+
session = context.session() if hasattr(context, "session") else None
|
|
618
|
+
email_address = None
|
|
619
|
+
|
|
620
|
+
if isinstance(session, dict):
|
|
621
|
+
email_address = session.get("cognito_user_email")
|
|
622
|
+
if not email_address:
|
|
623
|
+
cognito_user = session.get("cognito_user")
|
|
624
|
+
if isinstance(cognito_user, dict):
|
|
625
|
+
email_address = cognito_user.get("email") or (
|
|
626
|
+
cognito_user.get("attributes") or {}
|
|
627
|
+
).get("email")
|
|
628
|
+
if not email_address:
|
|
629
|
+
email_address = session.get("email_address")
|
|
630
|
+
|
|
631
|
+
if not email_address and isinstance(payload, dict):
|
|
632
|
+
payload_user = payload.get("cognito_user")
|
|
633
|
+
if isinstance(payload_user, dict):
|
|
634
|
+
email_address = payload_user.get("email") or (
|
|
635
|
+
payload_user.get("attributes") or {}
|
|
636
|
+
).get("email")
|
|
637
|
+
|
|
638
|
+
incoming["sys_modified_by"] = (
|
|
639
|
+
email_address.lower()
|
|
640
|
+
if isinstance(email_address, str)
|
|
641
|
+
else incoming.get("sys_modified_by", "unknown")
|
|
642
|
+
)
|
|
643
|
+
incoming["sys_dirty"] = True
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/app/tests/test_email_processing.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/aws/handlers/base_handler.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/aws/handlers/mixins/web_handler.py
RENAMED
|
File without changes
|
|
File without changes
|
{velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/aws/handlers/sqs_handler.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/db/servers/base/__init__.py
RENAMED
|
File without changes
|
{velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/db/servers/base/initializer.py
RENAMED
|
File without changes
|
{velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/db/servers/base/operators.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/db/servers/mysql/__init__.py
RENAMED
|
File without changes
|
{velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/db/servers/mysql/operators.py
RENAMED
|
File without changes
|
{velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/db/servers/mysql/reserved.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/db/servers/postgres/__init__.py
RENAMED
|
File without changes
|
{velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/db/servers/postgres/operators.py
RENAMED
|
File without changes
|
{velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/db/servers/postgres/reserved.py
RENAMED
|
File without changes
|
|
File without changes
|
{velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/db/servers/postgres/types.py
RENAMED
|
File without changes
|
{velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/db/servers/sqlite/__init__.py
RENAMED
|
File without changes
|
{velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/db/servers/sqlite/operators.py
RENAMED
|
File without changes
|
{velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/db/servers/sqlite/reserved.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/db/servers/sqlserver/__init__.py
RENAMED
|
File without changes
|
{velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/db/servers/sqlserver/operators.py
RENAMED
|
File without changes
|
{velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/db/servers/sqlserver/reserved.py
RENAMED
|
File without changes
|
{velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/db/servers/sqlserver/sql.py
RENAMED
|
File without changes
|
{velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/db/servers/sqlserver/types.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/db/tests/postgres/__init__.py
RENAMED
|
File without changes
|
{velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/db/tests/postgres/common.py
RENAMED
|
File without changes
|
{velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/db/tests/postgres/test_column.py
RENAMED
|
File without changes
|
|
File without changes
|
{velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/db/tests/postgres/test_database.py
RENAMED
|
File without changes
|
{velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/db/tests/postgres/test_engine.py
RENAMED
|
File without changes
|
|
File without changes
|
{velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/db/tests/postgres/test_imports.py
RENAMED
|
File without changes
|
{velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/db/tests/postgres/test_result.py
RENAMED
|
File without changes
|
{velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/db/tests/postgres/test_row.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/db/tests/postgres/test_sequence.py
RENAMED
|
File without changes
|
|
File without changes
|
{velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/db/tests/postgres/test_table.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/db/tests/test_postgres_unchanged.py
RENAMED
|
File without changes
|
|
File without changes
|
{velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/db/tests/test_result_caching.py
RENAMED
|
File without changes
|
{velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/db/tests/test_result_sql_aware.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/db/tests/test_sql_builder.py
RENAMED
|
File without changes
|
{velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/db/tests/test_tablehelper.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity/misc/tests/test_original_error.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity_python.egg-info/SOURCES.txt
RENAMED
|
File without changes
|
|
File without changes
|
{velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity_python.egg-info/requires.txt
RENAMED
|
File without changes
|
{velocity_python-0.0.176 → velocity_python-0.0.178}/src/velocity_python.egg-info/top_level.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{velocity_python-0.0.176 → velocity_python-0.0.178}/tests/test_sys_modified_count_postgres_demo.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|