From 8a8a9faeeb8271df6bd1a643819be0e040e8b5d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cristi=20V=C3=AEjdea?= Date: Thu, 21 Dec 2017 17:12:58 +0100 Subject: [PATCH] Fix swagger Try it out and make endpoints work --- .../templates/drf-yasg/swagger-ui.html | 9 +++++- .../migrations/0002_auto_20171221_1635.py | 28 ++++++++++++++++++ testproj/articles/serializers.py | 6 ++-- testproj/articles/views.py | 4 +-- testproj/db.sqlite3 | Bin 155648 -> 163840 bytes testproj/snippets/serializers.py | 6 ++-- tests/reference.yaml | 10 +++---- 7 files changed, 51 insertions(+), 12 deletions(-) create mode 100644 testproj/articles/migrations/0002_auto_20171221_1635.py diff --git a/src/drf_yasg/templates/drf-yasg/swagger-ui.html b/src/drf_yasg/templates/drf-yasg/swagger-ui.html index 12ac96a..0a2ad2a 100644 --- a/src/drf_yasg/templates/drf-yasg/swagger-ui.html +++ b/src/drf_yasg/templates/drf-yasg/swagger-ui.html @@ -163,7 +163,14 @@ plugins: [ SwaggerUIBundle.plugins.DownloadUrl ], - layout: "StandaloneLayout" + layout: "StandaloneLayout", + filter: true, + requestInterceptor: function(request) { + console.log(request); + var headers = request.headers || {}; + headers["X-CSRFToken"] = document.querySelector("[name=csrfmiddlewaretoken]").value; + return request; + } }; var swaggerSettings = {}; diff --git a/testproj/articles/migrations/0002_auto_20171221_1635.py b/testproj/articles/migrations/0002_auto_20171221_1635.py new file mode 100644 index 0000000..f21f376 --- /dev/null +++ b/testproj/articles/migrations/0002_auto_20171221_1635.py @@ -0,0 +1,28 @@ +# Generated by Django 2.0 on 2017-12-21 15:35 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('articles', '0001_initial'), + ] + + operations = [ + migrations.AlterField( + model_name='article', + name='body', + field=models.TextField(help_text='article model help_text', max_length=5000), + ), + migrations.AlterField( + model_name='article', + name='slug', + field=models.SlugField(blank=True, help_text='slug model help_text', unique=True), + ), + migrations.AlterField( + model_name='article', + name='title', + field=models.CharField(help_text='title model help_text', max_length=255, unique=True), + ), + ] diff --git a/testproj/articles/serializers.py b/testproj/articles/serializers.py index a01ad8c..d488ec9 100644 --- a/testproj/articles/serializers.py +++ b/testproj/articles/serializers.py @@ -7,15 +7,17 @@ class ArticleSerializer(serializers.ModelSerializer): references = serializers.DictField( help_text="this is a really bad example", child=serializers.URLField(help_text="but i needed to test these 2 fields somehow"), + read_only=True, ) - uuid = serializers.UUIDField(help_text="should articles have UUIDs?") + uuid = serializers.UUIDField(help_text="should articles have UUIDs?", read_only=True) cover_name = serializers.FileField(use_url=False, source='cover', read_only=True) class Meta: model = Article fields = ('title', 'body', 'slug', 'date_created', 'date_modified', 'references', 'uuid', 'cover', 'cover_name') - read_only_fields = ('date_created', 'date_modified') + read_only_fields = ('date_created', 'date_modified', + 'references', 'uuid', 'cover_name') lookup_field = 'slug' extra_kwargs = {'body': {'help_text': 'body serializer help_text'}} diff --git a/testproj/articles/views.py b/testproj/articles/views.py index 3a15d9d..10eb2ce 100644 --- a/testproj/articles/views.py +++ b/testproj/articles/views.py @@ -45,8 +45,8 @@ class ArticleViewSet(viewsets.ModelViewSet): max_page_size = 5 filter_backends = (DjangoFilterBackend, OrderingFilter) filter_fields = ('title',) - ordering_fields = ('date_modified',) - ordering = ('username',) + ordering_fields = ('date_modified','date_created') + ordering = ('date_created',) @swagger_auto_schema(auto_schema=NoPagingAutoSchema) @list_route(methods=['get']) diff --git a/testproj/db.sqlite3 b/testproj/db.sqlite3 index 40d2009a93a115d5dd87efdc84bd0a12dc0691f0..18280dff6bba2fcf1b5770f8b06f9a0e64f826b3 100644 GIT binary patch delta 1541 zcmah}&2Jk;6yM1@j@OPePKp{r6&z?vVp2Q1vsr&6CCxTpa_HKPas08UIJVc$uI*hr zj+?|jkPlTH5m6-e01^_aassK;NI?RL68->sK&S^!5#mCHP!HwMiZZs#heCnfc~7(R ze!utT&3m)kx2f%I^E+p{y#zrFV;R6gV!5(+o(0}dmTy3^$FjTMVLRJq*{w6Sh-GTB zr=94Z;FINwk}hP{XqrZeX3qOYk@J$$mdvLG*!azT?KMP5Z=@0*jCzC{?SddOxNhh@*9(6c+ zIxVD~!g1xqwY5wcegVHEPT8>aB(Huj`o^*mz!(8z_3q^W+}b$@ti+Ckr+TfU6vbOh zsl1d$i8VQiIQJlf6Qb$CNNIC6#dx!;i!-&s)yP6#+!Quvg$?@E8Ga;?$qMWm+8kNp z=*5+}4Sz81D@euF#j%Z7P9)BbBi7|+y{sE0B~{Uq5{LCvbM9*De-LQS#j(ieX3e+| z0RBqgVa8kk37So0FV!Sj>!9@5e(R3GW&~YFMAs2MxzD<`b|*l)aJ`)`c`8MOADUgS z<;ts7X}wfdvSZnDHD5z&epARr)IfM~BT$Q|VpymONL0m~EC<7RCSD8W<29ZZ!y#Fm zk8|-bPYXFoj)zMgf59h9u~0F_MrvYgA)AaYDnZ4+=~p(C7@FH+q=5$8*CN|n|xtAX{D7OEzr{%i4AgicO#f8x?rE|5Z@LTYwFj-yH;r7kL$ zrx&tK+?q+=|WA9au4piWHvC+~Abh2Zcoj!o^A3VV=HF3;SadwOg_j)|w zI$ueq3Yn*Zp1P=iqyl?;GuS?D;@;K31$|iqN!_P`!Nc1Um@paeetCUL1ta>)D(E41 zFJ02NRd61h(?3?hYx+wXcu&8Z20c2|z%!)d;!Go1X9L`A8Q!t=ck~9GV29BYMR5A? zSOd@R>|N=g+OS(Ymj1(Ty6qSEX`8`j0`PmHF>s&Xfv&TpK>c42w{FKV0go}~E*$PB zdFnqZi{k2Fp^WoRMaf zbY=MU;UO)lW`@oW43(-Cxu^{}t~#=1C8J4&Y75>vjt2yMfFs?5&rxI_b<#o%;e^j& K`;XB4m;HB~)w$;Y delta 484 zcmZuu!E4iC9Q}T2*2bpw_XVvLN}DWmVsT|1GK*N&u^o1-qPv>Lgb$2+_i1nFRSX}6$M2_ZLQ%*KEi zYyG)9Q2o;Sgb76+4N`O_oYvmU;i#}IUhR`4Hf4N<-|z_c@f9|)8BSO4;nbCEq9P3* z&zH+eMoy@bxz&AcZ27E%$M}`tZ<2$ttp+=*oSKj; zj4l6-nB{j(C{2wGgQ~R1-} diff --git a/testproj/snippets/serializers.py b/testproj/snippets/serializers.py index c149917..6a0d268 100644 --- a/testproj/snippets/serializers.py +++ b/testproj/snippets/serializers.py @@ -30,13 +30,15 @@ class SnippetSerializer(serializers.Serializer): language = LanguageSerializer(help_text="Sample help text for language") styles = serializers.MultipleChoiceField(choices=STYLE_CHOICES, default=['friendly']) lines = serializers.ListField(child=serializers.IntegerField(), allow_empty=True, allow_null=True, required=False) - example_projects = serializers.ListSerializer(child=ExampleProjectSerializer()) - difficulty_factor = serializers.FloatField(help_text="this is here just to test FloatField") + example_projects = serializers.ListSerializer(child=ExampleProjectSerializer(), read_only=True) + difficulty_factor = serializers.FloatField(help_text="this is here just to test FloatField", read_only=True) def create(self, validated_data): """ Create and return a new `Snippet` instance, given the validated data. """ + del validated_data['styles'] + del validated_data['lines'] return Snippet.objects.create(**validated_data) def update(self, instance, validated_data): diff --git a/tests/reference.yaml b/tests/reference.yaml index ac7f253..24d4af2 100644 --- a/tests/reference.yaml +++ b/tests/reference.yaml @@ -459,8 +459,6 @@ definitions: required: - title - body - - references - - uuid type: object properties: title: @@ -489,14 +487,16 @@ definitions: description: but i needed to test these 2 fields somehow type: string format: uri + readOnly: true uuid: description: should articles have UUIDs? type: string format: uuid + readOnly: true cover: type: string - format: uri readOnly: true + format: uri cover_name: type: string readOnly: true @@ -516,8 +516,6 @@ definitions: required: - code - language - - example_projects - - difficulty_factor type: object properties: id: @@ -1020,9 +1018,11 @@ definitions: type: array items: $ref: '#/definitions/Project' + readOnly: true difficulty_factor: description: this is here just to test FloatField type: number + readOnly: true UserSerializerrr: required: - username