core-framework 0.12.10__py3-none-any.whl → 0.12.11__py3-none-any.whl

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.
core/__init__.py CHANGED
@@ -287,7 +287,7 @@ from core.exceptions import (
287
287
  MissingDependency,
288
288
  )
289
289
 
290
- __version__ = "0.12.10"
290
+ __version__ = "0.12.11"
291
291
  __all__ = [
292
292
  # Models
293
293
  "Model",
core/auth/views.py CHANGED
@@ -244,6 +244,43 @@ class AuthViewSet(ViewSet):
244
244
  # Default to str
245
245
  return str
246
246
 
247
+ def _get_extra_field_names(self) -> list[str]:
248
+ """
249
+ Auto-detect extra fields from register_schema.
250
+
251
+ Compares register_schema fields with BaseRegisterInput to find
252
+ additional fields that need to be passed to create_user().
253
+
254
+ This allows users to define a custom register_schema without
255
+ also having to define extra_register_fields (DRY principle).
256
+
257
+ Returns:
258
+ List of field names that are in register_schema but not in BaseRegisterInput
259
+
260
+ Example:
261
+ class CustomRegisterInput(BaseRegisterInput):
262
+ name: str
263
+ phone: str | None = None
264
+
265
+ class MyAuthViewSet(AuthViewSet):
266
+ register_schema = CustomRegisterInput
267
+ # extra_register_fields not needed!
268
+
269
+ # _get_extra_field_names() returns ["name", "phone"]
270
+ """
271
+ schema = self._get_register_schema()
272
+
273
+ # Get base fields (email, password)
274
+ base_fields = set(BaseRegisterInput.model_fields.keys())
275
+
276
+ # Get schema fields
277
+ schema_fields = set(schema.model_fields.keys())
278
+
279
+ # Return extra fields (fields in schema but not in base)
280
+ extra = schema_fields - base_fields
281
+
282
+ return list(extra)
283
+
247
284
  def _create_tokens(self, user) -> dict:
248
285
  """
249
286
  Bug #6 Fix: Create access and refresh tokens using current API.
@@ -328,9 +365,12 @@ class AuthViewSet(ViewSet):
328
365
  detail="User with this email already exists"
329
366
  )
330
367
 
331
- # Bug #5 Fix: Extract extra fields for user creation
368
+ # Extract extra fields for user creation
369
+ # Auto-detect from schema if extra_register_fields not explicitly defined
370
+ extra_field_names = self.extra_register_fields or self._get_extra_field_names()
371
+
332
372
  extra_fields = {}
333
- for field_name in self.extra_register_fields:
373
+ for field_name in extra_field_names:
334
374
  value = getattr(validated, field_name, None)
335
375
  if value is not None:
336
376
  extra_fields[field_name] = value
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: core-framework
3
- Version: 0.12.10
3
+ Version: 0.12.11
4
4
  Summary: Core Framework - Django-inspired, FastAPI-powered. Alta performance, baixo acoplamento, produtividade extrema.
5
5
  Project-URL: Homepage, https://github.com/SorPuti/core-framework
6
6
  Project-URL: Documentation, https://github.com/SorPuti/core-framework#readme
@@ -1,4 +1,4 @@
1
- core/__init__.py,sha256=JCQKxeEANecnDEZpCIVsioKt0UhtuHOZ4xkXYKYr15o,12232
1
+ core/__init__.py,sha256=tvZLlVpXoyS3BPdF0hivmXeVRomd2awBRg-ZeAxvyMg,12232
2
2
  core/app.py,sha256=SsMC5Vlj6PNgACXlfeccOm6CQEKfgh3q3X2p9ubRDlQ,23092
3
3
  core/choices.py,sha256=rhcL3p2dB7RK99zIilpmoTFVcibQEIaRpz0CY0kImCE,10502
4
4
  core/config.py,sha256=dq4O7QBdrdwj-fZRe2yhX1fKyi_Uetb6sx9-RovJ-9c,14771
@@ -29,7 +29,7 @@ core/auth/models.py,sha256=aEE7deQKPS1aH0Btzzh3Z1Bwuqy8zvLZwu4JFEmiUNk,34058
29
29
  core/auth/permissions.py,sha256=v3ykAgNpq5wJ0NkuC_FuveMctOkDfM9Xp11XEnUAuBg,12461
30
30
  core/auth/schemas.py,sha256=L0W96dOD348rJDGeu1K5Rz3aJj-GdwMr2vbwwsYfo2g,3469
31
31
  core/auth/tokens.py,sha256=jOF40D5O8WRG8klRwMBuSG-jOhdsp1irXn2aZ2puNSg,9149
32
- core/auth/views.py,sha256=7_ZFcXD6guIDH3asjmTq59dWon4tpCTwDGw3r98eY4c,16705
32
+ core/auth/views.py,sha256=psL4g2Fe1saXn1eCnm6b18E2JCbALixVJahr2OIaLvI,18211
33
33
  core/cli/__init__.py,sha256=EOYSATzRugHD2oJ1SPfTIMUygUoNJnO_dRt2yJrkQcU,542
34
34
  core/cli/main.py,sha256=0WAO1deegd2Yja19ggDbX4j6p5S_p2KrmyAmale9HZs,124490
35
35
  core/deployment/__init__.py,sha256=RNcBRO9oB3WRnhtTTwM6wzVEcUKpKF4XfRkGSbbykIc,794
@@ -87,7 +87,7 @@ example/auth.py,sha256=zBpLutb8lVKnGfQqQ2wnyygsSutHYZzeJBuhnFhxBaQ,4971
87
87
  example/models.py,sha256=xKdx0kJ9n0tZ7sCce3KhV3BTvKvsh6m7G69eFm3ukf0,4549
88
88
  example/schemas.py,sha256=wJ9QofnuHp4PjtM_IuMMBLVFVDJ4YlwcF6uQm1ooKiY,6139
89
89
  example/views.py,sha256=GQwgQcW6yoeUIDbF7-lsaZV7cs8G1S1vGVtiwVpZIQE,14338
90
- core_framework-0.12.10.dist-info/METADATA,sha256=UBWJ13i_PWqQAOHZyA0mLn6F6xhv1kpzxhqOMblfP7M,13021
91
- core_framework-0.12.10.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
92
- core_framework-0.12.10.dist-info/entry_points.txt,sha256=MJytamxHbn0CyH3HbxiP-PqOWekjYUo2CA6EWiKWuSI,78
93
- core_framework-0.12.10.dist-info/RECORD,,
90
+ core_framework-0.12.11.dist-info/METADATA,sha256=VpC4knI1g1olWe8cq5H-A1M8W84N6ONhq9pLIp4wrrg,13021
91
+ core_framework-0.12.11.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
92
+ core_framework-0.12.11.dist-info/entry_points.txt,sha256=MJytamxHbn0CyH3HbxiP-PqOWekjYUo2CA6EWiKWuSI,78
93
+ core_framework-0.12.11.dist-info/RECORD,,