maquinaweb-shared-auth 0.2.29__py3-none-any.whl → 0.2.31__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.
Potentially problematic release.
This version of maquinaweb-shared-auth might be problematic. Click here for more details.
- {maquinaweb_shared_auth-0.2.29.dist-info → maquinaweb_shared_auth-0.2.31.dist-info}/METADATA +2 -2
- {maquinaweb_shared_auth-0.2.29.dist-info → maquinaweb_shared_auth-0.2.31.dist-info}/RECORD +7 -7
- shared_auth/managers.py +5 -43
- shared_auth/models.py +2 -2
- shared_auth/serializers.py +160 -52
- {maquinaweb_shared_auth-0.2.29.dist-info → maquinaweb_shared_auth-0.2.31.dist-info}/WHEEL +0 -0
- {maquinaweb_shared_auth-0.2.29.dist-info → maquinaweb_shared_auth-0.2.31.dist-info}/top_level.txt +0 -0
{maquinaweb_shared_auth-0.2.29.dist-info → maquinaweb_shared_auth-0.2.31.dist-info}/METADATA
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: maquinaweb-shared-auth
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.31
|
|
4
4
|
Summary: Models read-only para autenticação compartilhada entre projetos Django.
|
|
5
5
|
Author-email: Seu Nome <seuemail@dominio.com>
|
|
6
6
|
License: MIT
|
|
@@ -743,7 +743,7 @@ SharedOrganization.objects.main_organizations() # QuerySet (is_branch=False)
|
|
|
743
743
|
SharedOrganization.objects.by_cnpj('12.345.678/0001-90') # Org | None
|
|
744
744
|
```
|
|
745
745
|
|
|
746
|
-
####
|
|
746
|
+
#### UserManager
|
|
747
747
|
|
|
748
748
|
```python
|
|
749
749
|
from shared_auth.models import User
|
|
@@ -5,17 +5,17 @@ shared_auth/conf.py,sha256=WlSXQB7p3BfE3BL6WR6EDYpCHQEjDlxQlyf8dTfClsk,621
|
|
|
5
5
|
shared_auth/decorators.py,sha256=RT-Qfi7oGBo6PvWJRR1dqJUQdU6ZOf9p-8mV3rZmqQ0,3237
|
|
6
6
|
shared_auth/exceptions.py,sha256=VKamHjBl2yjXG2RsMrLrXru1_Q9IJXmy4xmDcXlpWsU,627
|
|
7
7
|
shared_auth/fields.py,sha256=RAcmFh1D_nkbai_7t_OrPZhfhAipesy5kKnEj4LUvvM,1254
|
|
8
|
-
shared_auth/managers.py,sha256=
|
|
8
|
+
shared_auth/managers.py,sha256=NpIDMY7BWl1pKZKCepuNDxz7eekEUhKkOUYsWGbwyos,6715
|
|
9
9
|
shared_auth/middleware.py,sha256=72GF8kGijbhw98v2Q-1sXBXk-7Bamfyvypm9h8xLX_I,6112
|
|
10
10
|
shared_auth/mixins.py,sha256=BSYNTWYjLRGuxfy7x-uAaNZmrTMsm67ogAQzjrU2DoQ,7388
|
|
11
|
-
shared_auth/models.py,sha256=
|
|
11
|
+
shared_auth/models.py,sha256=QMY_Oyr4x7AtSNAFV3UfoJY0YBZwFKePvfVNWt-vQTc,6562
|
|
12
12
|
shared_auth/permissions.py,sha256=FNIp12ePOUlXVp26zNMAyEtzX9kwyP7RuNIgaaCXtPA,2671
|
|
13
13
|
shared_auth/router.py,sha256=zYidJ7j40lQLrhkCtAQAp-rQLhua_UF0X7SDzYRcV5w,668
|
|
14
|
-
shared_auth/serializers.py,sha256=
|
|
14
|
+
shared_auth/serializers.py,sha256=vziJOlBrPy5tgTCgfr6Sp6gihyI6_1Gkn05BtpmYZxY,11149
|
|
15
15
|
shared_auth/storage_backend.py,sha256=Eqkjz8aF5UrOpRwYl-J0Td95IObfxnJ8eLQDJVFM3Io,184
|
|
16
16
|
shared_auth/urls.py,sha256=591wWEWJPaHEGkcOZ8yvfgxddRyOcZLgOc0vNtF7XRI,289
|
|
17
17
|
shared_auth/views.py,sha256=2hyLnYSWUscfq-jVcskt-ukzDt4vg6IXeKjRDRu9RXk,1519
|
|
18
|
-
maquinaweb_shared_auth-0.2.
|
|
19
|
-
maquinaweb_shared_auth-0.2.
|
|
20
|
-
maquinaweb_shared_auth-0.2.
|
|
21
|
-
maquinaweb_shared_auth-0.2.
|
|
18
|
+
maquinaweb_shared_auth-0.2.31.dist-info/METADATA,sha256=EwURfIcN3-VtVx-YVE48f2Xsx_1nlf9xC_oIEhEZPi8,26325
|
|
19
|
+
maquinaweb_shared_auth-0.2.31.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
20
|
+
maquinaweb_shared_auth-0.2.31.dist-info/top_level.txt,sha256=msyYRy02ZV7zz7GR1raUI5LXGFIFn2TIkgkeKZqKufE,12
|
|
21
|
+
maquinaweb_shared_auth-0.2.31.dist-info/RECORD,,
|
shared_auth/managers.py
CHANGED
|
@@ -45,8 +45,8 @@ class SharedOrganizationManager(models.Manager):
|
|
|
45
45
|
return self.filter(cnpj__contains=clean_cnpj).first()
|
|
46
46
|
|
|
47
47
|
|
|
48
|
-
class
|
|
49
|
-
"""Manager para
|
|
48
|
+
class UserManager(UserManager):
|
|
49
|
+
"""Manager para User"""
|
|
50
50
|
|
|
51
51
|
def get_or_fail(self, user_id):
|
|
52
52
|
"""Busca usuário ou lança exceção"""
|
|
@@ -89,21 +89,7 @@ class OrganizationQuerySetMixin:
|
|
|
89
89
|
|
|
90
90
|
def with_organization_data(self):
|
|
91
91
|
"""
|
|
92
|
-
Pré-carrega dados de organizações (evita N+1
|
|
93
|
-
|
|
94
|
-
Faz uma única query bulk para buscar todas as organizações necessárias
|
|
95
|
-
e cacheia nos objetos usando _cached_organization.
|
|
96
|
-
|
|
97
|
-
Usage:
|
|
98
|
-
# Sem otimização (N+1 queries)
|
|
99
|
-
rascunhos = Rascunho.objects.all()
|
|
100
|
-
for r in rascunhos:
|
|
101
|
-
print(r.organization.name) # Query individual para cada
|
|
102
|
-
|
|
103
|
-
# Com otimização (2 queries total)
|
|
104
|
-
rascunhos = Rascunho.objects.all().with_organization_data()
|
|
105
|
-
for r in rascunhos:
|
|
106
|
-
print(r.organization.name) # Usa cache, sem queries extras
|
|
92
|
+
Pré-carrega dados de organizações (evita N+1)
|
|
107
93
|
|
|
108
94
|
Returns:
|
|
109
95
|
Lista de objetos com _cached_organization
|
|
@@ -142,13 +128,7 @@ class UserQuerySetMixin:
|
|
|
142
128
|
|
|
143
129
|
def with_user_data(self):
|
|
144
130
|
"""
|
|
145
|
-
Pré-carrega dados de usuários (evita N+1
|
|
146
|
-
|
|
147
|
-
Usage:
|
|
148
|
-
# Com otimização (2 queries total)
|
|
149
|
-
rascunhos = Rascunho.objects.all().with_user_data()
|
|
150
|
-
for r in rascunhos:
|
|
151
|
-
print(r.user.email) # Usa cache, sem queries extras
|
|
131
|
+
Pré-carrega dados de usuários (evita N+1)
|
|
152
132
|
"""
|
|
153
133
|
from .models import User
|
|
154
134
|
|
|
@@ -172,25 +152,7 @@ class OrganizationUserQuerySetMixin(OrganizationQuerySetMixin, UserQuerySetMixin
|
|
|
172
152
|
|
|
173
153
|
def with_auth_data(self):
|
|
174
154
|
"""
|
|
175
|
-
Pré-carrega dados de organizações E usuários (evita N+1
|
|
176
|
-
|
|
177
|
-
Faz apenas 3 queries no total, independente da quantidade de objetos:
|
|
178
|
-
1. Query dos objetos principais
|
|
179
|
-
2. Query bulk das organizações
|
|
180
|
-
3. Query bulk dos usuários
|
|
181
|
-
|
|
182
|
-
Usage:
|
|
183
|
-
# Sem otimização (1 + N + N queries)
|
|
184
|
-
rascunhos = Rascunho.objects.all() # 1 query
|
|
185
|
-
for r in rascunhos:
|
|
186
|
-
print(r.organization.name) # N queries
|
|
187
|
-
print(r.user.email) # N queries
|
|
188
|
-
|
|
189
|
-
# Com otimização (3 queries total)
|
|
190
|
-
rascunhos = Rascunho.objects.all().with_auth_data()
|
|
191
|
-
for r in rascunhos:
|
|
192
|
-
print(r.organization.name) # Cache
|
|
193
|
-
print(r.user.email) # Cache
|
|
155
|
+
Pré-carrega dados de organizações E usuários (evita N+1)
|
|
194
156
|
"""
|
|
195
157
|
from .models import SharedOrganization, User
|
|
196
158
|
|
shared_auth/models.py
CHANGED
|
@@ -10,7 +10,7 @@ from django.db import models
|
|
|
10
10
|
|
|
11
11
|
from .conf import MEMBER_TABLE, ORGANIZATION_TABLE, TOKEN_TABLE, USER_TABLE
|
|
12
12
|
from .exceptions import OrganizationNotFoundError
|
|
13
|
-
from .managers import SharedMemberManager, SharedOrganizationManager,
|
|
13
|
+
from .managers import SharedMemberManager, SharedOrganizationManager, UserManager
|
|
14
14
|
from .storage_backend import Storage
|
|
15
15
|
|
|
16
16
|
|
|
@@ -155,7 +155,7 @@ class User(AbstractUser):
|
|
|
155
155
|
updatedat = models.DateTimeField()
|
|
156
156
|
deleted_at = models.DateTimeField(null=True, blank=True)
|
|
157
157
|
|
|
158
|
-
objects =
|
|
158
|
+
objects = UserManager()
|
|
159
159
|
|
|
160
160
|
class Meta:
|
|
161
161
|
managed = False
|
shared_auth/serializers.py
CHANGED
|
@@ -1,11 +1,43 @@
|
|
|
1
1
|
"""
|
|
2
2
|
Serializers compartilhados para DRF
|
|
3
|
+
|
|
4
|
+
Separação de responsabilidades:
|
|
5
|
+
- CreateSerializerMixin: apenas para criação (seta IDs do request)
|
|
6
|
+
- SerializerMixin: listagem com dados aninhados + criação (compatibilidade com código existente)
|
|
7
|
+
|
|
8
|
+
Se quiser usar separadamente:
|
|
9
|
+
- Use apenas *CreateSerializerMixin para create
|
|
10
|
+
- Use apenas *SerializerMixin para listagem
|
|
11
|
+
- Ou herde ambos se precisar
|
|
3
12
|
"""
|
|
4
13
|
|
|
5
14
|
from rest_framework import serializers
|
|
6
15
|
|
|
7
16
|
from .models import SharedOrganization, User
|
|
8
17
|
|
|
18
|
+
# ==================== ORGANIZATION SERIALIZERS ====================
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
class OrganizationCreateSerializerMixin(serializers.ModelSerializer):
|
|
22
|
+
"""
|
|
23
|
+
Mixin APENAS para criação.
|
|
24
|
+
Automaticamente seta organization_id no create a partir do request context.
|
|
25
|
+
|
|
26
|
+
Usage:
|
|
27
|
+
class RascunhoCreateSerializer(OrganizationCreateSerializerMixin, serializers.ModelSerializer):
|
|
28
|
+
class Meta:
|
|
29
|
+
model = Rascunho
|
|
30
|
+
fields = ['id', 'titulo', 'conteudo']
|
|
31
|
+
"""
|
|
32
|
+
|
|
33
|
+
def create(self, validated_data):
|
|
34
|
+
"""Automatically set organization_id from request context"""
|
|
35
|
+
if self.context.get("request") and hasattr(
|
|
36
|
+
self.context["request"], "organization_id"
|
|
37
|
+
):
|
|
38
|
+
validated_data["organization_id"] = self.context["request"].organization_id
|
|
39
|
+
return super().create(validated_data)
|
|
40
|
+
|
|
9
41
|
|
|
10
42
|
class OrganizationSerializerMixin(serializers.ModelSerializer):
|
|
11
43
|
"""
|
|
@@ -30,6 +62,18 @@ class OrganizationSerializerMixin(serializers.ModelSerializer):
|
|
|
30
62
|
class Meta:
|
|
31
63
|
model = Rascunho
|
|
32
64
|
fields = ['id', 'titulo', 'organization']
|
|
65
|
+
|
|
66
|
+
# Ou apenas para listagem (sem create):
|
|
67
|
+
class RascunhoListSerializer(OrganizationSerializerMixin, serializers.ModelSerializer):
|
|
68
|
+
class Meta:
|
|
69
|
+
model = Rascunho
|
|
70
|
+
fields = ['id', 'titulo', 'organization']
|
|
71
|
+
|
|
72
|
+
# Ou combinar com create:
|
|
73
|
+
class RascunhoFullSerializer(OrganizationSerializerMixin, OrganizationCreateSerializerMixin):
|
|
74
|
+
class Meta:
|
|
75
|
+
model = Rascunho
|
|
76
|
+
fields = ['id', 'titulo', 'organization']
|
|
33
77
|
"""
|
|
34
78
|
|
|
35
79
|
organization = serializers.SerializerMethodField()
|
|
@@ -55,14 +99,6 @@ class OrganizationSerializerMixin(serializers.ModelSerializer):
|
|
|
55
99
|
except Exception:
|
|
56
100
|
return None
|
|
57
101
|
|
|
58
|
-
def create(self, validated_data):
|
|
59
|
-
"""Automatically set organization_id from request context"""
|
|
60
|
-
if self.context.get("request") and hasattr(
|
|
61
|
-
self.context["request"], "organization_id"
|
|
62
|
-
):
|
|
63
|
-
validated_data["organization_id"] = self.context["request"].organization_id
|
|
64
|
-
return super().create(validated_data)
|
|
65
|
-
|
|
66
102
|
|
|
67
103
|
class OrganizationSerializer(serializers.ModelSerializer):
|
|
68
104
|
class Meta:
|
|
@@ -70,21 +106,26 @@ class OrganizationSerializer(serializers.ModelSerializer):
|
|
|
70
106
|
fields = "__all__"
|
|
71
107
|
|
|
72
108
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
109
|
+
# ==================== USER SERIALIZERS ====================
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
class UserCreateSerializerMixin(serializers.ModelSerializer):
|
|
113
|
+
"""
|
|
114
|
+
Mixin APENAS para criação.
|
|
115
|
+
Automaticamente seta user_id no create a partir do request context.
|
|
116
|
+
|
|
117
|
+
Usage:
|
|
118
|
+
class RascunhoCreateSerializer(UserCreateSerializerMixin, serializers.ModelSerializer):
|
|
119
|
+
class Meta:
|
|
120
|
+
model = Rascunho
|
|
121
|
+
fields = ['id', 'titulo', 'conteudo']
|
|
122
|
+
"""
|
|
123
|
+
|
|
124
|
+
def create(self, validated_data):
|
|
125
|
+
"""Automatically set user_id from request context"""
|
|
126
|
+
if self.context.get("request") and hasattr(self.context["request"], "user"):
|
|
127
|
+
validated_data["user_id"] = self.context["request"].user.id
|
|
128
|
+
return super().create(validated_data)
|
|
88
129
|
|
|
89
130
|
|
|
90
131
|
class UserSerializerMixin(serializers.ModelSerializer):
|
|
@@ -110,6 +151,18 @@ class UserSerializerMixin(serializers.ModelSerializer):
|
|
|
110
151
|
class Meta:
|
|
111
152
|
model = Rascunho
|
|
112
153
|
fields = ['id', 'titulo', 'user']
|
|
154
|
+
|
|
155
|
+
# Ou apenas para listagem (sem create):
|
|
156
|
+
class RascunhoListSerializer(UserSerializerMixin, serializers.ModelSerializer):
|
|
157
|
+
class Meta:
|
|
158
|
+
model = Rascunho
|
|
159
|
+
fields = ['id', 'titulo', 'user']
|
|
160
|
+
|
|
161
|
+
# Ou combinar com create:
|
|
162
|
+
class RascunhoFullSerializer(UserSerializerMixin, UserCreateSerializerMixin):
|
|
163
|
+
class Meta:
|
|
164
|
+
model = Rascunho
|
|
165
|
+
fields = ['id', 'titulo', 'user']
|
|
113
166
|
"""
|
|
114
167
|
|
|
115
168
|
user = serializers.SerializerMethodField()
|
|
@@ -131,10 +184,47 @@ class UserSerializerMixin(serializers.ModelSerializer):
|
|
|
131
184
|
except Exception:
|
|
132
185
|
return None
|
|
133
186
|
|
|
187
|
+
|
|
188
|
+
class UserSerializer(serializers.ModelSerializer):
|
|
189
|
+
class Meta:
|
|
190
|
+
model = User
|
|
191
|
+
fields = [
|
|
192
|
+
"id",
|
|
193
|
+
"username",
|
|
194
|
+
"first_name",
|
|
195
|
+
"last_name",
|
|
196
|
+
"email",
|
|
197
|
+
"is_active",
|
|
198
|
+
"is_staff",
|
|
199
|
+
"is_superuser",
|
|
200
|
+
"date_joined",
|
|
201
|
+
"last_login",
|
|
202
|
+
]
|
|
203
|
+
|
|
204
|
+
|
|
205
|
+
# ==================== COMBINED ORGANIZATION + USER SERIALIZERS ====================
|
|
206
|
+
|
|
207
|
+
|
|
208
|
+
class OrganizationUserCreateSerializerMixin(serializers.ModelSerializer):
|
|
209
|
+
"""
|
|
210
|
+
Mixin APENAS para criação com organization + user.
|
|
211
|
+
Automaticamente seta organization_id e user_id no create a partir do request context.
|
|
212
|
+
|
|
213
|
+
Usage:
|
|
214
|
+
class RascunhoCreateSerializer(OrganizationUserCreateSerializerMixin, serializers.ModelSerializer):
|
|
215
|
+
class Meta:
|
|
216
|
+
model = Rascunho
|
|
217
|
+
fields = ['id', 'titulo', 'conteudo']
|
|
218
|
+
"""
|
|
219
|
+
|
|
134
220
|
def create(self, validated_data):
|
|
135
|
-
"""Automatically set user_id from request context"""
|
|
136
|
-
if self.context.get("request")
|
|
137
|
-
|
|
221
|
+
"""Automatically set both organization_id and user_id from request context"""
|
|
222
|
+
if self.context.get("request"):
|
|
223
|
+
request = self.context["request"]
|
|
224
|
+
if hasattr(request, "organization_id"):
|
|
225
|
+
validated_data["organization_id"] = request.organization_id
|
|
226
|
+
if hasattr(request, "user"):
|
|
227
|
+
validated_data["user_id"] = request.user.id
|
|
138
228
|
return super().create(validated_data)
|
|
139
229
|
|
|
140
230
|
|
|
@@ -164,24 +254,43 @@ class OrganizationUserSerializerMixin(OrganizationSerializerMixin, UserSerialize
|
|
|
164
254
|
class Meta:
|
|
165
255
|
model = Rascunho
|
|
166
256
|
fields = ['id', 'titulo', 'conteudo', 'organization', 'user']
|
|
257
|
+
|
|
258
|
+
# Ou apenas para listagem (sem create):
|
|
259
|
+
class RascunhoListSerializer(OrganizationUserSerializerMixin, serializers.ModelSerializer):
|
|
260
|
+
class Meta:
|
|
261
|
+
model = Rascunho
|
|
262
|
+
fields = ['id', 'titulo', 'organization', 'user']
|
|
263
|
+
|
|
264
|
+
# Ou combinar com create:
|
|
265
|
+
class RascunhoFullSerializer(OrganizationUserSerializerMixin, OrganizationUserCreateSerializerMixin):
|
|
266
|
+
class Meta:
|
|
267
|
+
model = Rascunho
|
|
268
|
+
fields = ['id', 'titulo', 'organization', 'user']
|
|
167
269
|
"""
|
|
168
270
|
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
if hasattr(request, "organization_id"):
|
|
174
|
-
validated_data["organization_id"] = request.organization_id
|
|
175
|
-
if hasattr(request, "user"):
|
|
176
|
-
validated_data["user_id"] = request.user.id
|
|
177
|
-
return super(UserSerializerMixin, self).create(validated_data)
|
|
271
|
+
pass
|
|
272
|
+
|
|
273
|
+
|
|
274
|
+
# ==================== SIMPLIFIED VERSIONS ====================
|
|
178
275
|
|
|
179
276
|
|
|
180
|
-
# Versões simplificadas (opcional)
|
|
181
277
|
class OrganizationSimpleSerializerMixin(serializers.ModelSerializer):
|
|
182
278
|
"""
|
|
183
279
|
Versão simplificada que retorna apenas campos essenciais da organização
|
|
184
280
|
e automaticamente seta organization_id no create a partir do request context.
|
|
281
|
+
|
|
282
|
+
Usage:
|
|
283
|
+
# Para listagem:
|
|
284
|
+
class RascunhoListSerializer(OrganizationSimpleSerializerMixin, serializers.ModelSerializer):
|
|
285
|
+
class Meta:
|
|
286
|
+
model = Rascunho
|
|
287
|
+
fields = ['id', 'titulo', 'organization']
|
|
288
|
+
|
|
289
|
+
# Para criar com organization:
|
|
290
|
+
class RascunhoCreateSerializer(OrganizationSimpleSerializerMixin, OrganizationCreateSerializerMixin):
|
|
291
|
+
class Meta:
|
|
292
|
+
model = Rascunho
|
|
293
|
+
fields = ['id', 'titulo', 'organization']
|
|
185
294
|
"""
|
|
186
295
|
|
|
187
296
|
organization = serializers.SerializerMethodField()
|
|
@@ -194,22 +303,27 @@ class OrganizationSimpleSerializerMixin(serializers.ModelSerializer):
|
|
|
194
303
|
"name": org.name,
|
|
195
304
|
"cnpj": org.cnpj,
|
|
196
305
|
}
|
|
197
|
-
except:
|
|
306
|
+
except Exception:
|
|
198
307
|
return None
|
|
199
308
|
|
|
200
|
-
def create(self, validated_data):
|
|
201
|
-
"""Automatically set organization_id from request context"""
|
|
202
|
-
if self.context.get("request") and hasattr(
|
|
203
|
-
self.context["request"], "organization_id"
|
|
204
|
-
):
|
|
205
|
-
validated_data["organization_id"] = self.context["request"].organization_id
|
|
206
|
-
return super().create(validated_data)
|
|
207
|
-
|
|
208
309
|
|
|
209
310
|
class UserSimpleSerializerMixin(serializers.ModelSerializer):
|
|
210
311
|
"""
|
|
211
312
|
Versão simplificada que retorna apenas campos essenciais do usuário
|
|
212
313
|
e automaticamente seta user_id no create a partir do request context.
|
|
314
|
+
|
|
315
|
+
Usage:
|
|
316
|
+
# Para listagem:
|
|
317
|
+
class RascunhoListSerializer(UserSimpleSerializerMixin, serializers.ModelSerializer):
|
|
318
|
+
class Meta:
|
|
319
|
+
model = Rascunho
|
|
320
|
+
fields = ['id', 'titulo', 'user']
|
|
321
|
+
|
|
322
|
+
# Para criar com user:
|
|
323
|
+
class RascunhoCreateSerializer(UserSimpleSerializerMixin, UserCreateSerializerMixin):
|
|
324
|
+
class Meta:
|
|
325
|
+
model = Rascunho
|
|
326
|
+
fields = ['id', 'titulo', 'user']
|
|
213
327
|
"""
|
|
214
328
|
|
|
215
329
|
user = serializers.SerializerMethodField()
|
|
@@ -222,11 +336,5 @@ class UserSimpleSerializerMixin(serializers.ModelSerializer):
|
|
|
222
336
|
"email": user.email,
|
|
223
337
|
"full_name": user.get_full_name(),
|
|
224
338
|
}
|
|
225
|
-
except:
|
|
339
|
+
except Exception:
|
|
226
340
|
return None
|
|
227
|
-
|
|
228
|
-
def create(self, validated_data):
|
|
229
|
-
"""Automatically set user_id from request context"""
|
|
230
|
-
if self.context.get("request") and hasattr(self.context["request"], "user"):
|
|
231
|
-
validated_data["user_id"] = self.context["request"].user.id
|
|
232
|
-
return super().create(validated_data)
|
|
File without changes
|
{maquinaweb_shared_auth-0.2.29.dist-info → maquinaweb_shared_auth-0.2.31.dist-info}/top_level.txt
RENAMED
|
File without changes
|