skrift 0.1.0a11__tar.gz → 0.1.0a13__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.
Files changed (74) hide show
  1. {skrift-0.1.0a11 → skrift-0.1.0a13}/PKG-INFO +1 -1
  2. {skrift-0.1.0a11 → skrift-0.1.0a13}/pyproject.toml +1 -1
  3. {skrift-0.1.0a11 → skrift-0.1.0a13}/skrift/asgi.py +1 -0
  4. {skrift-0.1.0a11 → skrift-0.1.0a13}/skrift/config.py +21 -12
  5. {skrift-0.1.0a11 → skrift-0.1.0a13}/.gitignore +0 -0
  6. {skrift-0.1.0a11 → skrift-0.1.0a13}/README.md +0 -0
  7. {skrift-0.1.0a11 → skrift-0.1.0a13}/skrift/__init__.py +0 -0
  8. {skrift-0.1.0a11 → skrift-0.1.0a13}/skrift/__main__.py +0 -0
  9. {skrift-0.1.0a11 → skrift-0.1.0a13}/skrift/admin/__init__.py +0 -0
  10. {skrift-0.1.0a11 → skrift-0.1.0a13}/skrift/admin/controller.py +0 -0
  11. {skrift-0.1.0a11 → skrift-0.1.0a13}/skrift/admin/navigation.py +0 -0
  12. {skrift-0.1.0a11 → skrift-0.1.0a13}/skrift/alembic/env.py +0 -0
  13. {skrift-0.1.0a11 → skrift-0.1.0a13}/skrift/alembic/script.py.mako +0 -0
  14. {skrift-0.1.0a11 → skrift-0.1.0a13}/skrift/alembic/versions/20260120_210154_09b0364dbb7b_initial_schema.py +0 -0
  15. {skrift-0.1.0a11 → skrift-0.1.0a13}/skrift/alembic/versions/20260122_152744_0b7c927d2591_add_roles_and_permissions.py +0 -0
  16. {skrift-0.1.0a11 → skrift-0.1.0a13}/skrift/alembic/versions/20260122_172836_cdf734a5b847_add_sa_orm_sentinel_column.py +0 -0
  17. {skrift-0.1.0a11 → skrift-0.1.0a13}/skrift/alembic/versions/20260122_175637_a9c55348eae7_remove_page_type_column.py +0 -0
  18. {skrift-0.1.0a11 → skrift-0.1.0a13}/skrift/alembic/versions/20260122_200000_add_settings_table.py +0 -0
  19. {skrift-0.1.0a11 → skrift-0.1.0a13}/skrift/alembic/versions/20260129_add_oauth_accounts.py +0 -0
  20. {skrift-0.1.0a11 → skrift-0.1.0a13}/skrift/alembic/versions/20260129_add_provider_metadata.py +0 -0
  21. {skrift-0.1.0a11 → skrift-0.1.0a13}/skrift/alembic.ini +0 -0
  22. {skrift-0.1.0a11 → skrift-0.1.0a13}/skrift/auth/__init__.py +0 -0
  23. {skrift-0.1.0a11 → skrift-0.1.0a13}/skrift/auth/guards.py +0 -0
  24. {skrift-0.1.0a11 → skrift-0.1.0a13}/skrift/auth/roles.py +0 -0
  25. {skrift-0.1.0a11 → skrift-0.1.0a13}/skrift/auth/services.py +0 -0
  26. {skrift-0.1.0a11 → skrift-0.1.0a13}/skrift/cli.py +0 -0
  27. {skrift-0.1.0a11 → skrift-0.1.0a13}/skrift/controllers/__init__.py +0 -0
  28. {skrift-0.1.0a11 → skrift-0.1.0a13}/skrift/controllers/auth.py +0 -0
  29. {skrift-0.1.0a11 → skrift-0.1.0a13}/skrift/controllers/web.py +0 -0
  30. {skrift-0.1.0a11 → skrift-0.1.0a13}/skrift/db/__init__.py +0 -0
  31. {skrift-0.1.0a11 → skrift-0.1.0a13}/skrift/db/base.py +0 -0
  32. {skrift-0.1.0a11 → skrift-0.1.0a13}/skrift/db/models/__init__.py +0 -0
  33. {skrift-0.1.0a11 → skrift-0.1.0a13}/skrift/db/models/oauth_account.py +0 -0
  34. {skrift-0.1.0a11 → skrift-0.1.0a13}/skrift/db/models/page.py +0 -0
  35. {skrift-0.1.0a11 → skrift-0.1.0a13}/skrift/db/models/role.py +0 -0
  36. {skrift-0.1.0a11 → skrift-0.1.0a13}/skrift/db/models/setting.py +0 -0
  37. {skrift-0.1.0a11 → skrift-0.1.0a13}/skrift/db/models/user.py +0 -0
  38. {skrift-0.1.0a11 → skrift-0.1.0a13}/skrift/db/services/__init__.py +0 -0
  39. {skrift-0.1.0a11 → skrift-0.1.0a13}/skrift/db/services/oauth_service.py +0 -0
  40. {skrift-0.1.0a11 → skrift-0.1.0a13}/skrift/db/services/page_service.py +0 -0
  41. {skrift-0.1.0a11 → skrift-0.1.0a13}/skrift/db/services/setting_service.py +0 -0
  42. {skrift-0.1.0a11 → skrift-0.1.0a13}/skrift/lib/__init__.py +0 -0
  43. {skrift-0.1.0a11 → skrift-0.1.0a13}/skrift/lib/exceptions.py +0 -0
  44. {skrift-0.1.0a11 → skrift-0.1.0a13}/skrift/lib/template.py +0 -0
  45. {skrift-0.1.0a11 → skrift-0.1.0a13}/skrift/setup/__init__.py +0 -0
  46. {skrift-0.1.0a11 → skrift-0.1.0a13}/skrift/setup/config_writer.py +0 -0
  47. {skrift-0.1.0a11 → skrift-0.1.0a13}/skrift/setup/controller.py +0 -0
  48. {skrift-0.1.0a11 → skrift-0.1.0a13}/skrift/setup/middleware.py +0 -0
  49. {skrift-0.1.0a11 → skrift-0.1.0a13}/skrift/setup/providers.py +0 -0
  50. {skrift-0.1.0a11 → skrift-0.1.0a13}/skrift/setup/state.py +0 -0
  51. {skrift-0.1.0a11 → skrift-0.1.0a13}/skrift/static/css/style.css +0 -0
  52. {skrift-0.1.0a11 → skrift-0.1.0a13}/skrift/templates/admin/admin.html +0 -0
  53. {skrift-0.1.0a11 → skrift-0.1.0a13}/skrift/templates/admin/base.html +0 -0
  54. {skrift-0.1.0a11 → skrift-0.1.0a13}/skrift/templates/admin/pages/edit.html +0 -0
  55. {skrift-0.1.0a11 → skrift-0.1.0a13}/skrift/templates/admin/pages/list.html +0 -0
  56. {skrift-0.1.0a11 → skrift-0.1.0a13}/skrift/templates/admin/settings/site.html +0 -0
  57. {skrift-0.1.0a11 → skrift-0.1.0a13}/skrift/templates/admin/users/list.html +0 -0
  58. {skrift-0.1.0a11 → skrift-0.1.0a13}/skrift/templates/admin/users/roles.html +0 -0
  59. {skrift-0.1.0a11 → skrift-0.1.0a13}/skrift/templates/auth/dummy_login.html +0 -0
  60. {skrift-0.1.0a11 → skrift-0.1.0a13}/skrift/templates/auth/login.html +0 -0
  61. {skrift-0.1.0a11 → skrift-0.1.0a13}/skrift/templates/base.html +0 -0
  62. {skrift-0.1.0a11 → skrift-0.1.0a13}/skrift/templates/error-404.html +0 -0
  63. {skrift-0.1.0a11 → skrift-0.1.0a13}/skrift/templates/error-500.html +0 -0
  64. {skrift-0.1.0a11 → skrift-0.1.0a13}/skrift/templates/error.html +0 -0
  65. {skrift-0.1.0a11 → skrift-0.1.0a13}/skrift/templates/index.html +0 -0
  66. {skrift-0.1.0a11 → skrift-0.1.0a13}/skrift/templates/page.html +0 -0
  67. {skrift-0.1.0a11 → skrift-0.1.0a13}/skrift/templates/setup/admin.html +0 -0
  68. {skrift-0.1.0a11 → skrift-0.1.0a13}/skrift/templates/setup/auth.html +0 -0
  69. {skrift-0.1.0a11 → skrift-0.1.0a13}/skrift/templates/setup/base.html +0 -0
  70. {skrift-0.1.0a11 → skrift-0.1.0a13}/skrift/templates/setup/complete.html +0 -0
  71. {skrift-0.1.0a11 → skrift-0.1.0a13}/skrift/templates/setup/configuring.html +0 -0
  72. {skrift-0.1.0a11 → skrift-0.1.0a13}/skrift/templates/setup/database.html +0 -0
  73. {skrift-0.1.0a11 → skrift-0.1.0a13}/skrift/templates/setup/restart.html +0 -0
  74. {skrift-0.1.0a11 → skrift-0.1.0a13}/skrift/templates/setup/site.html +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: skrift
3
- Version: 0.1.0a11
3
+ Version: 0.1.0a13
4
4
  Summary: A lightweight async Python CMS for crafting modern websites
5
5
  Requires-Python: >=3.13
6
6
  Requires-Dist: advanced-alchemy>=0.26.0
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "skrift"
3
- version = "0.1.0a11"
3
+ version = "0.1.0a13"
4
4
  description = "A lightweight async Python CMS for crafting modern websites"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.13"
@@ -416,6 +416,7 @@ def create_app() -> Litestar:
416
416
  httponly=True,
417
417
  secure=not settings.debug,
418
418
  samesite="lax",
419
+ domain=settings.session.cookie_domain,
419
420
  )
420
421
 
421
422
  # Template configuration
@@ -133,6 +133,12 @@ class DummyProviderConfig(BaseModel):
133
133
  ProviderConfig = OAuthProviderConfig | DummyProviderConfig
134
134
 
135
135
 
136
+ class SessionConfig(BaseModel):
137
+ """Session cookie configuration."""
138
+
139
+ cookie_domain: str | None = None # None = exact host only
140
+
141
+
136
142
  class AuthConfig(BaseModel):
137
143
  """Authentication configuration."""
138
144
 
@@ -177,6 +183,9 @@ class Settings(BaseSettings):
177
183
  # Auth config (loaded from app.yaml)
178
184
  auth: AuthConfig = AuthConfig()
179
185
 
186
+ # Session config (loaded from app.yaml)
187
+ session: SessionConfig = SessionConfig()
188
+
180
189
 
181
190
  def clear_settings_cache() -> None:
182
191
  """Clear the settings cache to force reload."""
@@ -220,28 +229,28 @@ def is_config_valid() -> tuple[bool, str | None]:
220
229
  @lru_cache
221
230
  def get_settings() -> Settings:
222
231
  """Load settings from .env and app.yaml."""
223
- # First create base settings from .env
224
- base_settings = Settings()
225
-
226
232
  # Load app.yaml config
227
233
  try:
228
234
  app_config = load_app_config()
229
235
  except FileNotFoundError:
230
- return base_settings
236
+ return Settings()
231
237
  except ValueError:
232
238
  # Missing environment variables - return base settings
233
- return base_settings
239
+ return Settings()
234
240
 
235
- # Merge YAML config with settings
236
- updates = {}
241
+ # Build nested configs from YAML - pass directly to Settings to avoid
242
+ # model_copy issues with nested BaseModel instances in Pydantic v2
243
+ kwargs = {}
237
244
 
238
245
  if "db" in app_config:
239
- updates["db"] = DatabaseConfig(**app_config["db"])
246
+ kwargs["db"] = DatabaseConfig(**app_config["db"])
240
247
 
241
248
  if "auth" in app_config:
242
- updates["auth"] = AuthConfig(**app_config["auth"])
249
+ kwargs["auth"] = AuthConfig(**app_config["auth"])
243
250
 
244
- if updates:
245
- return base_settings.model_copy(update=updates)
251
+ if "session" in app_config:
252
+ kwargs["session"] = SessionConfig(**app_config["session"])
246
253
 
247
- return base_settings
254
+ # Create Settings with YAML nested configs
255
+ # BaseSettings will still load debug/secret_key from env, but kwargs take precedence
256
+ return Settings(**kwargs)
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes