Skip to content

Commit d842ed4

Browse files
authored
Merge branch 'main' into pyup-scheduled-update-2023-09-18
2 parents 253abc1 + b75255c commit d842ed4

File tree

18 files changed

+205
-6
lines changed

18 files changed

+205
-6
lines changed

.github/workflows/tests.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ jobs:
1414
strategy:
1515
fail-fast: false
1616
matrix:
17-
python-version: ["3.7", "3.8", "3.9", "3.10", "3.11"]
17+
python-version: ["3.8", "3.9", "3.10", "3.11"]
1818
env:
1919
PYTHON: ${{ matrix.python-version }}
2020
steps:

CHANGELOG.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,20 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
88
Note that in line with [Django REST framework policy](https://www.django-rest-framework.org/topics/release-notes/),
99
any parts of the framework not mentioned in the documentation should generally be considered private API, and may be subject to change.
1010

11+
## [Unreleased]
12+
13+
### Fixed
14+
15+
* Fixed OpenAPI schema generation for `Serializer` when used inside another `Serializer` or as a child of `ListField`.
16+
17+
### Removed
18+
19+
* Removed support for Python 3.7.
20+
1121
## [6.1.0] - 2023-08-25
1222

23+
This is the last release supporting Python 3.7.
24+
1325
### Added
1426

1527
* Added support for Python 3.11.

README.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ As a Django REST framework JSON:API (short DJA) we are trying to address followi
9292
Requirements
9393
------------
9494

95-
1. Python (3.7, 3.8, 3.9, 3.10, 3.11)
95+
1. Python (3.8, 3.9, 3.10, 3.11)
9696
2. Django (3.2, 4.0, 4.1, 4.2)
9797
3. Django REST framework (3.13, 3.14)
9898

docs/getting-started.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ like the following:
5151

5252
## Requirements
5353

54-
1. Python (3.7, 3.8, 3.9, 3.10, 3.11)
54+
1. Python (3.8, 3.9, 3.10, 3.11)
5555
2. Django (3.2, 4.0, 4.1, 4.2)
5656
3. Django REST framework (3.13, 3.14)
5757

example/factories.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
Company,
1313
Entry,
1414
ProjectType,
15+
Questionnaire,
1516
ResearchProject,
1617
TaggedItem,
1718
)
@@ -140,3 +141,24 @@ def future_projects(self, create, extracted, **kwargs):
140141
if extracted:
141142
for project in extracted:
142143
self.future_projects.add(project)
144+
145+
146+
class QuestionnaireFactory(factory.django.DjangoModelFactory):
147+
class Meta:
148+
model = Questionnaire
149+
150+
name = factory.LazyAttribute(lambda x: faker.text())
151+
questions = [
152+
{
153+
"text": "What is your name?",
154+
"required": True,
155+
},
156+
{
157+
"text": "What is your quest?",
158+
"required": False,
159+
},
160+
{
161+
"text": "What is the air-speed velocity of an unladen swallow?",
162+
},
163+
]
164+
metadata = {"author": "Bridgekeeper"}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
# Generated by Django 4.2.5 on 2023-09-07 02:35
2+
3+
from django.db import migrations, models
4+
5+
6+
class Migration(migrations.Migration):
7+
dependencies = [
8+
("example", "0012_author_full_name"),
9+
]
10+
11+
operations = [
12+
migrations.CreateModel(
13+
name="Questionnaire",
14+
fields=[
15+
(
16+
"id",
17+
models.AutoField(
18+
auto_created=True,
19+
primary_key=True,
20+
serialize=False,
21+
verbose_name="ID",
22+
),
23+
),
24+
("name", models.CharField(max_length=100)),
25+
("questions", models.JSONField()),
26+
],
27+
),
28+
]
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
# Generated by Django 4.2.5 on 2023-09-12 07:12
2+
3+
from django.db import migrations, models
4+
5+
6+
class Migration(migrations.Migration):
7+
dependencies = [
8+
("example", "0013_questionnaire"),
9+
]
10+
11+
operations = [
12+
migrations.AddField(
13+
model_name="questionnaire",
14+
name="metadata",
15+
field=models.JSONField(default={}),
16+
preserve_default=False,
17+
),
18+
]

example/models.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -180,3 +180,9 @@ class Company(models.Model):
180180

181181
def __str__(self):
182182
return self.name
183+
184+
185+
class Questionnaire(models.Model):
186+
name = models.CharField(max_length=100)
187+
questions = models.JSONField()
188+
metadata = models.JSONField()

example/serializers.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
LabResults,
1919
Project,
2020
ProjectType,
21+
Questionnaire,
2122
ResearchProject,
2223
TaggedItem,
2324
)
@@ -421,3 +422,22 @@ class CompanySerializer(serializers.ModelSerializer):
421422
class Meta:
422423
model = Company
423424
fields = "__all__"
425+
426+
427+
class QuestionSerializer(serializers.Serializer):
428+
text = serializers.CharField()
429+
required = serializers.BooleanField(default=False)
430+
431+
432+
class QuestionnaireMetadataSerializer(serializers.Serializer):
433+
author = serializers.CharField()
434+
producer = serializers.CharField(default=None)
435+
436+
437+
class QuestionnaireSerializer(serializers.ModelSerializer):
438+
questions = serializers.ListField(child=QuestionSerializer())
439+
metadata = QuestionnaireMetadataSerializer()
440+
441+
class Meta:
442+
model = Questionnaire
443+
fields = ("name", "questions", "metadata")

example/tests/conftest.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
CommentFactory,
1313
CompanyFactory,
1414
EntryFactory,
15+
QuestionnaireFactory,
1516
ResearchProjectFactory,
1617
TaggedItemFactory,
1718
)
@@ -27,6 +28,7 @@
2728
register(ArtProjectFactory)
2829
register(ResearchProjectFactory)
2930
register(CompanyFactory)
31+
register(QuestionnaireFactory)
3032

3133

3234
@pytest.fixture

0 commit comments

Comments
 (0)