plain.oauth 0.25.1__tar.gz → 0.26.0__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.
- {plain_oauth-0.25.1 → plain_oauth-0.26.0}/PKG-INFO +2 -2
- {plain_oauth-0.25.1 → plain_oauth-0.26.0}/plain/oauth/CHANGELOG.md +11 -0
- {plain_oauth-0.25.1 → plain_oauth-0.26.0}/plain/oauth/admin.py +1 -1
- {plain_oauth-0.25.1 → plain_oauth-0.26.0}/plain/oauth/models.py +3 -3
- {plain_oauth-0.25.1 → plain_oauth-0.26.0}/plain/oauth/providers.py +1 -1
- {plain_oauth-0.25.1 → plain_oauth-0.26.0}/pyproject.toml +2 -2
- {plain_oauth-0.25.1 → plain_oauth-0.26.0}/tests/app/templates/index.html +1 -1
- {plain_oauth-0.25.1 → plain_oauth-0.26.0}/tests/provider_tests/test_github.py +1 -1
- {plain_oauth-0.25.1 → plain_oauth-0.26.0}/tests/test_checks.py +5 -9
- {plain_oauth-0.25.1 → plain_oauth-0.26.0}/tests/test_providers.py +54 -56
- {plain_oauth-0.25.1 → plain_oauth-0.26.0}/.gitignore +0 -0
- {plain_oauth-0.25.1 → plain_oauth-0.26.0}/LICENSE +0 -0
- {plain_oauth-0.25.1 → plain_oauth-0.26.0}/README.md +0 -0
- {plain_oauth-0.25.1 → plain_oauth-0.26.0}/plain/oauth/README.md +0 -0
- {plain_oauth-0.25.1 → plain_oauth-0.26.0}/plain/oauth/__init__.py +0 -0
- {plain_oauth-0.25.1 → plain_oauth-0.26.0}/plain/oauth/config.py +0 -0
- {plain_oauth-0.25.1 → plain_oauth-0.26.0}/plain/oauth/default_settings.py +0 -0
- {plain_oauth-0.25.1 → plain_oauth-0.26.0}/plain/oauth/exceptions.py +0 -0
- {plain_oauth-0.25.1 → plain_oauth-0.26.0}/plain/oauth/migrations/0001_initial.py +0 -0
- {plain_oauth-0.25.1 → plain_oauth-0.26.0}/plain/oauth/migrations/__init__.py +0 -0
- {plain_oauth-0.25.1 → plain_oauth-0.26.0}/plain/oauth/templates/oauth/callback.html +0 -0
- {plain_oauth-0.25.1 → plain_oauth-0.26.0}/plain/oauth/urls.py +0 -0
- {plain_oauth-0.25.1 → plain_oauth-0.26.0}/plain/oauth/views.py +0 -0
- {plain_oauth-0.25.1 → plain_oauth-0.26.0}/provider_examples/__init__.py +0 -0
- {plain_oauth-0.25.1 → plain_oauth-0.26.0}/provider_examples/bitbucket.py +0 -0
- {plain_oauth-0.25.1 → plain_oauth-0.26.0}/provider_examples/github.py +0 -0
- {plain_oauth-0.25.1 → plain_oauth-0.26.0}/provider_examples/gitlab.py +0 -0
- {plain_oauth-0.25.1 → plain_oauth-0.26.0}/tests/app/settings.py +0 -0
- {plain_oauth-0.25.1 → plain_oauth-0.26.0}/tests/app/templates/base.html +0 -0
- {plain_oauth-0.25.1 → plain_oauth-0.26.0}/tests/app/templates/login.html +0 -0
- {plain_oauth-0.25.1 → plain_oauth-0.26.0}/tests/app/urls.py +0 -0
- {plain_oauth-0.25.1 → plain_oauth-0.26.0}/tests/app/users/migrations/0001_initial.py +0 -0
- {plain_oauth-0.25.1 → plain_oauth-0.26.0}/tests/app/users/migrations/__init__.py +0 -0
- {plain_oauth-0.25.1 → plain_oauth-0.26.0}/tests/app/users/models.py +0 -0
- {plain_oauth-0.25.1 → plain_oauth-0.26.0}/tests/provider_tests/__init__.py +0 -0
- {plain_oauth-0.25.1 → plain_oauth-0.26.0}/tests/providers/__init__.py +0 -0
- {plain_oauth-0.25.1 → plain_oauth-0.26.0}/tests/providers/bitbucket.py +0 -0
- {plain_oauth-0.25.1 → plain_oauth-0.26.0}/tests/providers/github.py +0 -0
- {plain_oauth-0.25.1 → plain_oauth-0.26.0}/tests/providers/gitlab.py +0 -0
- {plain_oauth-0.25.1 → plain_oauth-0.26.0}/tests/test_backends.py +0 -0
@@ -1,11 +1,11 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: plain.oauth
|
3
|
-
Version: 0.
|
3
|
+
Version: 0.26.0
|
4
4
|
Summary: Let users log in with OAuth providers.
|
5
5
|
Author-email: Dave Gaeddert <dave.gaeddert@dropseed.dev>
|
6
6
|
License-Expression: BSD-3-Clause
|
7
7
|
License-File: LICENSE
|
8
|
-
Requires-Python: >=3.
|
8
|
+
Requires-Python: >=3.13
|
9
9
|
Requires-Dist: plain-auth<1.0.0
|
10
10
|
Requires-Dist: plain-models<1.0.0
|
11
11
|
Requires-Dist: plain<1.0.0
|
@@ -1,5 +1,16 @@
|
|
1
1
|
# plain-oauth changelog
|
2
2
|
|
3
|
+
## [0.26.0](https://github.com/dropseed/plain/releases/plain-oauth@0.26.0) (2025-09-12)
|
4
|
+
|
5
|
+
### What's changed
|
6
|
+
|
7
|
+
- Model queries now use `.query` instead of `.objects` ([037a239](https://github.com/dropseed/plain/commit/037a239ef4))
|
8
|
+
- Minimum Python version increased to 3.13 ([d86e307](https://github.com/dropseed/plain/commit/d86e307efb))
|
9
|
+
|
10
|
+
### Upgrade instructions
|
11
|
+
|
12
|
+
- Update any custom code that references `OAuthConnection.objects` to use `OAuthConnection.query` instead
|
13
|
+
|
3
14
|
## [0.25.1](https://github.com/dropseed/plain/releases/plain-oauth@0.25.1) (2025-08-22)
|
4
15
|
|
5
16
|
### What's changed
|
@@ -95,7 +95,7 @@ class OAuthConnection(models.Model):
|
|
95
95
|
cls, *, provider_key: str, oauth_token: "OAuthToken", oauth_user: "OAuthUser"
|
96
96
|
) -> "OAuthConnection":
|
97
97
|
try:
|
98
|
-
connection = cls.
|
98
|
+
connection = cls.query.get(
|
99
99
|
provider_key=provider_key,
|
100
100
|
provider_user_id=oauth_user.provider_id,
|
101
101
|
)
|
@@ -134,7 +134,7 @@ class OAuthConnection(models.Model):
|
|
134
134
|
Connect will either create a new connection or update an existing connection
|
135
135
|
"""
|
136
136
|
try:
|
137
|
-
connection = cls.
|
137
|
+
connection = cls.query.get(
|
138
138
|
user=user,
|
139
139
|
provider_key=provider_key,
|
140
140
|
provider_user_id=oauth_user.provider_id,
|
@@ -172,7 +172,7 @@ class OAuthConnection(models.Model):
|
|
172
172
|
|
173
173
|
try:
|
174
174
|
keys_in_db = set(
|
175
|
-
cls.
|
175
|
+
cls.query.values_list("provider_key", flat=True).distinct()
|
176
176
|
)
|
177
177
|
except (OperationalError, ProgrammingError):
|
178
178
|
# Check runs on plain migrate, and the table may not exist yet
|
@@ -144,7 +144,7 @@ class OAuthProvider:
|
|
144
144
|
|
145
145
|
def handle_disconnect_request(self, *, request: HttpRequest) -> Response:
|
146
146
|
provider_user_id = request.data["provider_user_id"]
|
147
|
-
connection = OAuthConnection.
|
147
|
+
connection = OAuthConnection.query.get(
|
148
148
|
provider_key=self.provider_key, provider_user_id=provider_user_id
|
149
149
|
)
|
150
150
|
connection.delete()
|
@@ -1,11 +1,11 @@
|
|
1
1
|
[project]
|
2
2
|
name = "plain.oauth"
|
3
|
-
version = "0.
|
3
|
+
version = "0.26.0"
|
4
4
|
description = "Let users log in with OAuth providers."
|
5
5
|
authors = [{name = "Dave Gaeddert", email = "dave.gaeddert@dropseed.dev"}]
|
6
6
|
license = "BSD-3-Clause"
|
7
7
|
readme = "README.md"
|
8
|
-
requires-python = ">=3.
|
8
|
+
requires-python = ">=3.13"
|
9
9
|
dependencies = [
|
10
10
|
"plain<1.0.0",
|
11
11
|
"plain.auth<1.0.0",
|
@@ -5,7 +5,7 @@ Hello {{ request.user }}!
|
|
5
5
|
|
6
6
|
<h2>Existing connections</h2>
|
7
7
|
<ul>
|
8
|
-
{% for connection in request.user.oauth_connections.all() %}
|
8
|
+
{% for connection in request.user.oauth_connections.query.all() %}
|
9
9
|
<li>
|
10
10
|
{{ connection.provider_key }} [ID: {{ connection.provider_user_id }}]
|
11
11
|
<form action="{{ url('oauth:disconnect', connection.provider_key) }}" method="post">
|
@@ -62,7 +62,7 @@ def test_github_provider(db, settings):
|
|
62
62
|
user = response.user
|
63
63
|
assert user.username == "userone"
|
64
64
|
assert user.email == "user@example.com"
|
65
|
-
connections = user.oauth_connections.all()
|
65
|
+
connections = user.oauth_connections.query.all()
|
66
66
|
assert len(connections) == 1
|
67
67
|
assert connections[0].provider_key == "github"
|
68
68
|
assert connections[0].provider_user_id == "99"
|
@@ -14,11 +14,9 @@ def test_oauth_provider_keys_check_pass(db, settings):
|
|
14
14
|
},
|
15
15
|
}
|
16
16
|
|
17
|
-
user = get_user_model().
|
18
|
-
username="test_user", email="test@example.com"
|
19
|
-
)
|
17
|
+
user = get_user_model().query.create(username="test_user", email="test@example.com")
|
20
18
|
|
21
|
-
OAuthConnection.
|
19
|
+
OAuthConnection.query.create(
|
22
20
|
user=user,
|
23
21
|
provider_key="google",
|
24
22
|
provider_user_id="test_provider_user_id",
|
@@ -41,17 +39,15 @@ def test_oauth_provider_keys_check_fail(db, settings):
|
|
41
39
|
},
|
42
40
|
}
|
43
41
|
|
44
|
-
user = get_user_model().
|
45
|
-
username="test_user", email="test@example.com"
|
46
|
-
)
|
42
|
+
user = get_user_model().query.create(username="test_user", email="test@example.com")
|
47
43
|
|
48
|
-
OAuthConnection.
|
44
|
+
OAuthConnection.query.create(
|
49
45
|
user=user,
|
50
46
|
provider_key="google",
|
51
47
|
provider_user_id="test_provider_user_id",
|
52
48
|
access_token="test",
|
53
49
|
)
|
54
|
-
OAuthConnection.
|
50
|
+
OAuthConnection.query.create(
|
55
51
|
user=user,
|
56
52
|
provider_key="bar",
|
57
53
|
provider_user_id="test_provider_user_id",
|
@@ -60,8 +60,8 @@ def test_dummy_signup(db, settings):
|
|
60
60
|
|
61
61
|
client = Client()
|
62
62
|
|
63
|
-
assert get_user_model().
|
64
|
-
assert OAuthConnection.
|
63
|
+
assert get_user_model().query.count() == 0
|
64
|
+
assert OAuthConnection.query.count() == 0
|
65
65
|
|
66
66
|
# Login required for this view
|
67
67
|
response = client.get("/")
|
@@ -90,7 +90,7 @@ def test_dummy_signup(db, settings):
|
|
90
90
|
user = response.user
|
91
91
|
assert user.username == "dummy_username"
|
92
92
|
assert user.email == "dummy@example.com"
|
93
|
-
connections = user.oauth_connections.all()
|
93
|
+
connections = user.oauth_connections.query.all()
|
94
94
|
assert len(connections) == 1
|
95
95
|
assert connections[0].provider_key == "dummy"
|
96
96
|
assert connections[0].provider_user_id == "dummy_id"
|
@@ -103,8 +103,8 @@ def test_dummy_signup(db, settings):
|
|
103
103
|
2020, 1, 2, 0, 0, tzinfo=datetime.UTC
|
104
104
|
)
|
105
105
|
|
106
|
-
assert get_user_model().
|
107
|
-
assert OAuthConnection.
|
106
|
+
assert get_user_model().query.count() == 1
|
107
|
+
assert OAuthConnection.query.count() == 1
|
108
108
|
|
109
109
|
|
110
110
|
def test_dummy_login_connection(db, settings):
|
@@ -121,14 +121,14 @@ def test_dummy_login_connection(db, settings):
|
|
121
121
|
|
122
122
|
client = Client()
|
123
123
|
|
124
|
-
assert get_user_model().
|
125
|
-
assert OAuthConnection.
|
124
|
+
assert get_user_model().query.count() == 0
|
125
|
+
assert OAuthConnection.query.count() == 0
|
126
126
|
|
127
127
|
# Create a user
|
128
|
-
user = get_user_model().
|
128
|
+
user = get_user_model().query.create(
|
129
129
|
username="dummy_username", email="dummy@example.com"
|
130
130
|
)
|
131
|
-
OAuthConnection.
|
131
|
+
OAuthConnection.query.create(
|
132
132
|
user=user,
|
133
133
|
provider_key="dummy",
|
134
134
|
provider_user_id="dummy_id",
|
@@ -142,8 +142,8 @@ def test_dummy_login_connection(db, settings):
|
|
142
142
|
),
|
143
143
|
)
|
144
144
|
|
145
|
-
assert get_user_model().
|
146
|
-
assert OAuthConnection.
|
145
|
+
assert get_user_model().query.count() == 1
|
146
|
+
assert OAuthConnection.query.count() == 1
|
147
147
|
|
148
148
|
# Login required for this view
|
149
149
|
response = client.get("/")
|
@@ -172,7 +172,7 @@ def test_dummy_login_connection(db, settings):
|
|
172
172
|
user = response.user
|
173
173
|
assert user.username == "dummy_username"
|
174
174
|
assert user.email == "dummy@example.com"
|
175
|
-
connections = user.oauth_connections.all()
|
175
|
+
connections = user.oauth_connections.query.all()
|
176
176
|
assert len(connections) == 1
|
177
177
|
assert connections[0].provider_key == "dummy"
|
178
178
|
assert connections[0].provider_user_id == "dummy_id"
|
@@ -185,8 +185,8 @@ def test_dummy_login_connection(db, settings):
|
|
185
185
|
2020, 1, 2, 0, 0, tzinfo=datetime.UTC
|
186
186
|
)
|
187
187
|
|
188
|
-
assert get_user_model().
|
189
|
-
assert OAuthConnection.
|
188
|
+
assert get_user_model().query.count() == 1
|
189
|
+
assert OAuthConnection.query.count() == 1
|
190
190
|
|
191
191
|
|
192
192
|
def test_dummy_login_without_connection(db, settings):
|
@@ -203,16 +203,14 @@ def test_dummy_login_without_connection(db, settings):
|
|
203
203
|
|
204
204
|
client = Client()
|
205
205
|
|
206
|
-
assert get_user_model().
|
207
|
-
assert OAuthConnection.
|
206
|
+
assert get_user_model().query.count() == 0
|
207
|
+
assert OAuthConnection.query.count() == 0
|
208
208
|
|
209
209
|
# Create a user
|
210
|
-
get_user_model().
|
211
|
-
username="dummy_username", email="dummy@example.com"
|
212
|
-
)
|
210
|
+
get_user_model().query.create(username="dummy_username", email="dummy@example.com")
|
213
211
|
|
214
|
-
assert get_user_model().
|
215
|
-
assert OAuthConnection.
|
212
|
+
assert get_user_model().query.count() == 1
|
213
|
+
assert OAuthConnection.query.count() == 0
|
216
214
|
|
217
215
|
# Login required for this view
|
218
216
|
response = client.get("/")
|
@@ -247,16 +245,16 @@ def test_dummy_connect(db, settings):
|
|
247
245
|
|
248
246
|
client = Client()
|
249
247
|
|
250
|
-
assert get_user_model().
|
251
|
-
assert OAuthConnection.
|
248
|
+
assert get_user_model().query.count() == 0
|
249
|
+
assert OAuthConnection.query.count() == 0
|
252
250
|
|
253
251
|
# Create a user
|
254
|
-
user = get_user_model().
|
252
|
+
user = get_user_model().query.create(
|
255
253
|
username="dummy_username", email="dummy@example.com"
|
256
254
|
)
|
257
255
|
|
258
|
-
assert get_user_model().
|
259
|
-
assert OAuthConnection.
|
256
|
+
assert get_user_model().query.count() == 1
|
257
|
+
assert OAuthConnection.query.count() == 0
|
260
258
|
|
261
259
|
client.force_login(user)
|
262
260
|
|
@@ -277,7 +275,7 @@ def test_dummy_connect(db, settings):
|
|
277
275
|
|
278
276
|
# Check the user and connection that was created
|
279
277
|
user = response.user
|
280
|
-
connections = user.oauth_connections.all()
|
278
|
+
connections = user.oauth_connections.query.all()
|
281
279
|
assert len(connections) == 1
|
282
280
|
assert connections[0].provider_key == "dummy"
|
283
281
|
assert connections[0].provider_user_id == "dummy_id"
|
@@ -290,8 +288,8 @@ def test_dummy_connect(db, settings):
|
|
290
288
|
2020, 1, 2, 0, 0, tzinfo=datetime.UTC
|
291
289
|
)
|
292
290
|
|
293
|
-
assert get_user_model().
|
294
|
-
assert OAuthConnection.
|
291
|
+
assert get_user_model().query.count() == 1
|
292
|
+
assert OAuthConnection.query.count() == 1
|
295
293
|
|
296
294
|
|
297
295
|
# def test_dummy_disconnect_to_password(db, client, settings):
|
@@ -306,14 +304,14 @@ def test_dummy_connect(db, settings):
|
|
306
304
|
# }
|
307
305
|
# }
|
308
306
|
|
309
|
-
# assert get_user_model().
|
310
|
-
# assert OAuthConnection.
|
307
|
+
# assert get_user_model().query.count() == 0
|
308
|
+
# assert OAuthConnection.query.count() == 0
|
311
309
|
|
312
310
|
# # Create a user
|
313
|
-
# user = get_user_model().
|
311
|
+
# user = get_user_model().query.create(
|
314
312
|
# username="dummy_username", email="dummy@example.com", password="dummy_password"
|
315
313
|
# )
|
316
|
-
# OAuthConnection.
|
314
|
+
# OAuthConnection.query.create(
|
317
315
|
# user=user,
|
318
316
|
# provider_key="dummy",
|
319
317
|
# provider_user_id="dummy_id",
|
@@ -327,8 +325,8 @@ def test_dummy_connect(db, settings):
|
|
327
325
|
# ),
|
328
326
|
# )
|
329
327
|
|
330
|
-
# assert get_user_model().
|
331
|
-
# assert OAuthConnection.
|
328
|
+
# assert get_user_model().query.count() == 1
|
329
|
+
# assert OAuthConnection.query.count() == 1
|
332
330
|
|
333
331
|
# client.force_login(user)
|
334
332
|
|
@@ -339,8 +337,8 @@ def test_dummy_connect(db, settings):
|
|
339
337
|
# assert response.status_code == 302
|
340
338
|
# assert response.url == "/"
|
341
339
|
|
342
|
-
# assert get_user_model().
|
343
|
-
# assert OAuthConnection.
|
340
|
+
# assert get_user_model().query.count() == 1
|
341
|
+
# assert OAuthConnection.query.count() == 0
|
344
342
|
|
345
343
|
|
346
344
|
# def test_dummy_disconnect_to_connection(db, client, settings):
|
@@ -355,14 +353,14 @@ def test_dummy_connect(db, settings):
|
|
355
353
|
# }
|
356
354
|
# }
|
357
355
|
|
358
|
-
# assert get_user_model().
|
359
|
-
# assert OAuthConnection.
|
356
|
+
# assert get_user_model().query.count() == 0
|
357
|
+
# assert OAuthConnection.query.count() == 0
|
360
358
|
|
361
359
|
# # Create a user
|
362
|
-
# user = get_user_model().
|
360
|
+
# user = get_user_model().query.create(
|
363
361
|
# username="dummy_username", email="dummy@example.com"
|
364
362
|
# )
|
365
|
-
# OAuthConnection.
|
363
|
+
# OAuthConnection.query.create(
|
366
364
|
# user=user,
|
367
365
|
# provider_key="dummy",
|
368
366
|
# provider_user_id="dummy_id",
|
@@ -375,7 +373,7 @@ def test_dummy_connect(db, settings):
|
|
375
373
|
# 2020, 1, 2, 0, 0, tzinfo=datetime.timezone.utc
|
376
374
|
# ),
|
377
375
|
# )
|
378
|
-
# OAuthConnection.
|
376
|
+
# OAuthConnection.query.create(
|
379
377
|
# user=user,
|
380
378
|
# provider_key="dummy",
|
381
379
|
# provider_user_id="dummy_id2",
|
@@ -389,8 +387,8 @@ def test_dummy_connect(db, settings):
|
|
389
387
|
# ),
|
390
388
|
# )
|
391
389
|
|
392
|
-
# assert get_user_model().
|
393
|
-
# assert OAuthConnection.
|
390
|
+
# assert get_user_model().query.count() == 1
|
391
|
+
# assert OAuthConnection.query.count() == 2
|
394
392
|
|
395
393
|
# client.force_login(user)
|
396
394
|
|
@@ -401,8 +399,8 @@ def test_dummy_connect(db, settings):
|
|
401
399
|
# assert response.status_code == 302
|
402
400
|
# assert response.url == "/"
|
403
401
|
|
404
|
-
# assert get_user_model().
|
405
|
-
# assert OAuthConnection.
|
402
|
+
# assert get_user_model().query.count() == 1
|
403
|
+
# assert OAuthConnection.query.count() == 1
|
406
404
|
|
407
405
|
|
408
406
|
# def test_dummy_disconnect_last(db, client, settings):
|
@@ -417,14 +415,14 @@ def test_dummy_connect(db, settings):
|
|
417
415
|
# }
|
418
416
|
# }
|
419
417
|
|
420
|
-
# assert get_user_model().
|
421
|
-
# assert OAuthConnection.
|
418
|
+
# assert get_user_model().query.count() == 0
|
419
|
+
# assert OAuthConnection.query.count() == 0
|
422
420
|
|
423
421
|
# # Create a user
|
424
|
-
# user = get_user_model().
|
422
|
+
# user = get_user_model().query.create(
|
425
423
|
# username="dummy_username", email="dummy@example.com"
|
426
424
|
# )
|
427
|
-
# OAuthConnection.
|
425
|
+
# OAuthConnection.query.create(
|
428
426
|
# user=user,
|
429
427
|
# provider_key="dummy",
|
430
428
|
# provider_user_id="dummy_id",
|
@@ -438,8 +436,8 @@ def test_dummy_connect(db, settings):
|
|
438
436
|
# ),
|
439
437
|
# )
|
440
438
|
|
441
|
-
# assert get_user_model().
|
442
|
-
# assert OAuthConnection.
|
439
|
+
# assert get_user_model().query.count() == 1
|
440
|
+
# assert OAuthConnection.query.count() == 1
|
443
441
|
|
444
442
|
# client.force_login(user)
|
445
443
|
|
@@ -450,8 +448,8 @@ def test_dummy_connect(db, settings):
|
|
450
448
|
# assert response.status_code == 400
|
451
449
|
# assert response.templates[0].name == "oauth/error.html"
|
452
450
|
|
453
|
-
# assert get_user_model().
|
454
|
-
# assert OAuthConnection.
|
451
|
+
# assert get_user_model().query.count() == 1
|
452
|
+
# assert OAuthConnection.query.count() == 1
|
455
453
|
|
456
454
|
|
457
455
|
def test_dummy_refresh(db, settings, monkeypatch):
|
@@ -466,10 +464,10 @@ def test_dummy_refresh(db, settings, monkeypatch):
|
|
466
464
|
}
|
467
465
|
}
|
468
466
|
|
469
|
-
user = get_user_model().
|
467
|
+
user = get_user_model().query.create(
|
470
468
|
username="dummy_username", email="dummy@example.com"
|
471
469
|
)
|
472
|
-
connection = OAuthConnection.
|
470
|
+
connection = OAuthConnection.query.create(
|
473
471
|
user=user,
|
474
472
|
provider_key="dummy",
|
475
473
|
provider_user_id="dummy_id",
|
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
|
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
|