From 89fc4b309935299778b600ffe5fd5797ccf887dc Mon Sep 17 00:00:00 2001 From: TBS093A Date: Fri, 3 Jul 2020 22:04:10 +0200 Subject: [PATCH] create ratings endpoints // enumField problem #TODO --- .gitignore | 0 packages.sh | 3 +- portfolio/__init__.py | 0 portfolio/__pycache__/__init__.cpython-36.pyc | Bin portfolio/__pycache__/settings.cpython-36.pyc | Bin portfolio/__pycache__/urls.cpython-36.pyc | Bin 2110 -> 2417 bytes portfolio/__pycache__/utils.cpython-36.pyc | Bin 0 -> 1008 bytes portfolio/__pycache__/wsgi.cpython-36.pyc | Bin portfolio/account/__init__.py | 0 .../__pycache__/__init__.cpython-36.pyc | Bin .../account/__pycache__/admin.cpython-36.pyc | Bin .../account/__pycache__/models.cpython-36.pyc | Bin .../__pycache__/serializers.cpython-36.pyc | Bin .../account/__pycache__/views.cpython-36.pyc | Bin 3714 -> 3661 bytes portfolio/account/admin.py | 0 portfolio/account/apps.py | 0 portfolio/account/migrations/__init__.py | 0 portfolio/account/models.py | 0 portfolio/account/serializers.py | 0 portfolio/account/tests.py | 0 portfolio/account/views.py | 1 - portfolio/album/__init__.py | 0 .../album/__pycache__/__init__.cpython-36.pyc | Bin .../album/__pycache__/admin.cpython-36.pyc | Bin .../album/__pycache__/models.cpython-36.pyc | Bin 2387 -> 1659 bytes .../__pycache__/serializers.cpython-36.pyc | Bin .../album/__pycache__/views.cpython-36.pyc | Bin 1045 -> 1791 bytes portfolio/album/admin.py | 0 portfolio/album/apps.py | 0 portfolio/album/migrations/__init__.py | 0 portfolio/album/models.py | 22 +---- portfolio/album/serializers.py | 0 portfolio/album/tests.py | 0 portfolio/album/views.py | 26 +++++- portfolio/asgi.py | 0 portfolio/comment/__init__.py | 0 .../__pycache__/__init__.cpython-36.pyc | Bin .../comment/__pycache__/admin.cpython-36.pyc | Bin .../comment/__pycache__/models.cpython-36.pyc | Bin 1044 -> 1058 bytes portfolio/comment/admin.py | 0 portfolio/comment/apps.py | 0 portfolio/comment/migrations/__init__.py | 0 portfolio/comment/models.py | 2 +- portfolio/comment/tests.py | 0 portfolio/comment/views.py | 0 portfolio/migrations/0001_initial.py | 0 ...ng_guestcomment_trackrating_usercomment.py | 69 ++++++++++++++++ portfolio/migrations/__init__.py | 0 .../__pycache__/0001_initial.cpython-36.pyc | Bin .../0002_album_track_trackrow.cpython-36.pyc | Bin ...ent_trackrating_usercomment.cpython-36.pyc | Bin 0 -> 1471 bytes .../0003_auto_20200620_1850.cpython-36.pyc | Bin .../0004_auto_20200620_1956.cpython-36.pyc | Bin .../0005_auto_20200620_2006.cpython-36.pyc | Bin .../__pycache__/__init__.cpython-36.pyc | Bin portfolio/playlist/__init__.py | 0 .../__pycache__/__init__.cpython-36.pyc | Bin .../playlist/__pycache__/admin.cpython-36.pyc | Bin .../__pycache__/models.cpython-36.pyc | Bin portfolio/playlist/admin.py | 0 portfolio/playlist/apps.py | 0 portfolio/playlist/migrations/__init__.py | 0 portfolio/playlist/models.py | 0 portfolio/playlist/tests.py | 0 portfolio/playlist/views.py | 0 portfolio/rating/__init__.py | 0 .../__pycache__/__init__.cpython-36.pyc | Bin .../rating/__pycache__/admin.cpython-36.pyc | Bin .../rating/__pycache__/models.cpython-36.pyc | Bin 1754 -> 2368 bytes .../__pycache__/serializers.cpython-36.pyc | Bin 0 -> 3690 bytes .../rating/__pycache__/views.cpython-36.pyc | Bin 0 -> 3173 bytes portfolio/rating/admin.py | 0 portfolio/rating/apps.py | 0 portfolio/rating/migrations/__init__.py | 0 portfolio/rating/models.py | 48 ++++++++--- portfolio/rating/serializers.py | 75 +++++++++++++++++ portfolio/rating/tests.py | 0 portfolio/rating/views.py | 78 +++++++++++++++++- portfolio/settings.py | 0 portfolio/urls.py | 5 ++ portfolio/utils.py | 20 +++++ portfolio/wsgi.py | 0 82 files changed, 310 insertions(+), 39 deletions(-) mode change 100644 => 100755 .gitignore mode change 100644 => 100755 packages.sh mode change 100644 => 100755 portfolio/__init__.py mode change 100644 => 100755 portfolio/__pycache__/__init__.cpython-36.pyc mode change 100644 => 100755 portfolio/__pycache__/settings.cpython-36.pyc create mode 100644 portfolio/__pycache__/utils.cpython-36.pyc mode change 100644 => 100755 portfolio/__pycache__/wsgi.cpython-36.pyc mode change 100644 => 100755 portfolio/account/__init__.py mode change 100644 => 100755 portfolio/account/__pycache__/__init__.cpython-36.pyc mode change 100644 => 100755 portfolio/account/__pycache__/admin.cpython-36.pyc mode change 100644 => 100755 portfolio/account/__pycache__/models.cpython-36.pyc mode change 100644 => 100755 portfolio/account/__pycache__/serializers.cpython-36.pyc mode change 100644 => 100755 portfolio/account/__pycache__/views.cpython-36.pyc mode change 100644 => 100755 portfolio/account/admin.py mode change 100644 => 100755 portfolio/account/apps.py mode change 100644 => 100755 portfolio/account/migrations/__init__.py mode change 100644 => 100755 portfolio/account/models.py mode change 100644 => 100755 portfolio/account/serializers.py mode change 100644 => 100755 portfolio/account/tests.py mode change 100644 => 100755 portfolio/account/views.py mode change 100644 => 100755 portfolio/album/__init__.py mode change 100644 => 100755 portfolio/album/__pycache__/__init__.cpython-36.pyc mode change 100644 => 100755 portfolio/album/__pycache__/admin.cpython-36.pyc mode change 100644 => 100755 portfolio/album/__pycache__/serializers.cpython-36.pyc mode change 100644 => 100755 portfolio/album/admin.py mode change 100644 => 100755 portfolio/album/apps.py mode change 100644 => 100755 portfolio/album/migrations/__init__.py mode change 100644 => 100755 portfolio/album/models.py mode change 100644 => 100755 portfolio/album/serializers.py mode change 100644 => 100755 portfolio/album/tests.py mode change 100644 => 100755 portfolio/album/views.py mode change 100644 => 100755 portfolio/asgi.py mode change 100644 => 100755 portfolio/comment/__init__.py mode change 100644 => 100755 portfolio/comment/__pycache__/__init__.cpython-36.pyc mode change 100644 => 100755 portfolio/comment/__pycache__/admin.cpython-36.pyc mode change 100644 => 100755 portfolio/comment/admin.py mode change 100644 => 100755 portfolio/comment/apps.py mode change 100644 => 100755 portfolio/comment/migrations/__init__.py mode change 100644 => 100755 portfolio/comment/models.py mode change 100644 => 100755 portfolio/comment/tests.py mode change 100644 => 100755 portfolio/comment/views.py mode change 100644 => 100755 portfolio/migrations/0001_initial.py create mode 100644 portfolio/migrations/0002_albumrating_commentrating_guestcomment_trackrating_usercomment.py mode change 100644 => 100755 portfolio/migrations/__init__.py mode change 100644 => 100755 portfolio/migrations/__pycache__/0001_initial.cpython-36.pyc mode change 100644 => 100755 portfolio/migrations/__pycache__/0002_album_track_trackrow.cpython-36.pyc create mode 100644 portfolio/migrations/__pycache__/0002_albumrating_commentrating_guestcomment_trackrating_usercomment.cpython-36.pyc mode change 100644 => 100755 portfolio/migrations/__pycache__/0003_auto_20200620_1850.cpython-36.pyc mode change 100644 => 100755 portfolio/migrations/__pycache__/0004_auto_20200620_1956.cpython-36.pyc mode change 100644 => 100755 portfolio/migrations/__pycache__/0005_auto_20200620_2006.cpython-36.pyc mode change 100644 => 100755 portfolio/migrations/__pycache__/__init__.cpython-36.pyc mode change 100644 => 100755 portfolio/playlist/__init__.py mode change 100644 => 100755 portfolio/playlist/__pycache__/__init__.cpython-36.pyc mode change 100644 => 100755 portfolio/playlist/__pycache__/admin.cpython-36.pyc mode change 100644 => 100755 portfolio/playlist/__pycache__/models.cpython-36.pyc mode change 100644 => 100755 portfolio/playlist/admin.py mode change 100644 => 100755 portfolio/playlist/apps.py mode change 100644 => 100755 portfolio/playlist/migrations/__init__.py mode change 100644 => 100755 portfolio/playlist/models.py mode change 100644 => 100755 portfolio/playlist/tests.py mode change 100644 => 100755 portfolio/playlist/views.py mode change 100644 => 100755 portfolio/rating/__init__.py mode change 100644 => 100755 portfolio/rating/__pycache__/__init__.cpython-36.pyc mode change 100644 => 100755 portfolio/rating/__pycache__/admin.cpython-36.pyc create mode 100644 portfolio/rating/__pycache__/serializers.cpython-36.pyc create mode 100644 portfolio/rating/__pycache__/views.cpython-36.pyc mode change 100644 => 100755 portfolio/rating/admin.py mode change 100644 => 100755 portfolio/rating/apps.py mode change 100644 => 100755 portfolio/rating/migrations/__init__.py mode change 100644 => 100755 portfolio/rating/models.py create mode 100644 portfolio/rating/serializers.py mode change 100644 => 100755 portfolio/rating/tests.py mode change 100644 => 100755 portfolio/rating/views.py mode change 100644 => 100755 portfolio/settings.py mode change 100644 => 100755 portfolio/urls.py create mode 100644 portfolio/utils.py mode change 100644 => 100755 portfolio/wsgi.py diff --git a/.gitignore b/.gitignore old mode 100644 new mode 100755 diff --git a/packages.sh b/packages.sh old mode 100644 new mode 100755 index 33bbc06..294749a --- a/packages.sh +++ b/packages.sh @@ -1,6 +1,7 @@ pip install django pip install djangorestframework pip install django-filter -pip install django-enumfield +pip install django-rest-enumfield +pip install drf_yasg pip install pyjwt pip install markdown diff --git a/portfolio/__init__.py b/portfolio/__init__.py old mode 100644 new mode 100755 diff --git a/portfolio/__pycache__/__init__.cpython-36.pyc b/portfolio/__pycache__/__init__.cpython-36.pyc old mode 100644 new mode 100755 diff --git a/portfolio/__pycache__/settings.cpython-36.pyc b/portfolio/__pycache__/settings.cpython-36.pyc old mode 100644 new mode 100755 diff --git a/portfolio/__pycache__/urls.cpython-36.pyc b/portfolio/__pycache__/urls.cpython-36.pyc index a9c404d32d2fe6f1d67e76a037744530a93ae7d1..e4fa03c8b462355ea8e1bde3bcb35ccb2fb03b3b 100644 GIT binary patch delta 698 zcma))&ui0Q7{~J_Y3)W*W17^qYqPFdx2AJe*l8&KKo5c!abrjjwcGP-_I24HjShC{ zAr~(}CI5kcf#BVNY(syh2{_viih zGlK9*$UVfuReHxCUfRzmFayf|oY!=lUdwHHmTNHqXR*ZRL4`7?q}p&Aw1|;ffHR;+ z3@T9p3{-h%mw_2cu8j&`3KRXxKm+U0$OY!G z0nHq@unAU<=dlIt950{+os4C$QRK_K7m6suA{OWfy^s+Vp^H`SghD9pNp2r?zVd?I z@ZVAFKUyfYgf>41%fO%)i8MrZ``~N{PXEnoc1v1!q!WG9AMQN9GYm!tds`zs+Q8sM zzqY^q#QW1Tt{-|H9t2Z2{w9B(SV7V{=v}#eDOC?faQWWRiZk%jX~#N zs(;d{`#as)nQoWnGyPYGc3jRDvZnZB;UZg&E5$DjSDEg5{wZB)>{saD@r|UI@sHxO z+G-+`@_lRY=+MJKusy!8zBY_sow{q@BwuC-WC1(%?bkK*n( z@Cyh|u0;@>oVG!+qwSZFkGE(yvz^N4usF?;;i{*4v!tcaQG9PiZn$ z9VJ>QSv4?&*$`MY(ZH#3GhL9mFq}set7e zSEz!O7+0x^)foFVs$u=FVPJza<*Htwk%3K0@X1~POi64}Nv#DU&`xx(PdPPsfcXu( z{;|QXHnr6{b`Y=|YJ9`+`snP7q5Jd&dwS$2-l9cv48v%!vWPa#+tvm@Xud4phojTk vghn%(jCN*cmlK*^Tt_eFL4Nr|10)nQ$<+p_$!MH%vbux}*t*H>3=e()v;|yG diff --git a/portfolio/__pycache__/utils.cpython-36.pyc b/portfolio/__pycache__/utils.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..dcdc211adb54d2c451b83ca510dcd93ace688919 GIT binary patch literal 1008 zcmZuwO^?$s5FI-ob;EW+tY9ykxaHC!_Jo8`1xTD)kXQ*R2O>9ip&?DWP72zpoVwz- zz+cLh6MumV%sBnlTAK019*^I9o?LV~!TFDWAAd4{->^4ajQeQiV{{4>%V5eP#^4Po zuACcCj%F!eIgz8>_Yiu2Fb_gj`_n?{tW4;0GaL;1XysFM8X~43;)*GL19%(@;Or_- z`8a!cK}!j|K&*J=t2P!7>eIKmzAOeZzaCKegkvEZG?TqTEAOFOLJBEcvK2yAfM?k- zY;k_bsk_P9k|Wu+ zWrSqLm=m-{N9KY%J5pwQ0*wj7C9- ze@PCQ&jKdc;=vKTCT|PwK>3Gwj+9@+!WXcxHu_sw<_;!>e23}?i6L!H(MrM%w}WV2 z@1VJ`bD@uBpMTd}*jS{Bvp75AG0>H~9EL76MJ}frn<9u~?Am!o@ktzC&1JUU5pq;k zMjpsUDjBPtOSR7EZc;-qb04Q+*fK=J+$Bdn+0gG$L>z6_9{FuOLk~`7A3|{92w!-1 kmGHJzD)Uc8SB(r^S9|tXu-ms)tHtw%)C*F`B0S;$0T<=clK=n! literal 0 HcmV?d00001 diff --git a/portfolio/__pycache__/wsgi.cpython-36.pyc b/portfolio/__pycache__/wsgi.cpython-36.pyc old mode 100644 new mode 100755 diff --git a/portfolio/account/__init__.py b/portfolio/account/__init__.py old mode 100644 new mode 100755 diff --git a/portfolio/account/__pycache__/__init__.cpython-36.pyc b/portfolio/account/__pycache__/__init__.cpython-36.pyc old mode 100644 new mode 100755 diff --git a/portfolio/account/__pycache__/admin.cpython-36.pyc b/portfolio/account/__pycache__/admin.cpython-36.pyc old mode 100644 new mode 100755 diff --git a/portfolio/account/__pycache__/models.cpython-36.pyc b/portfolio/account/__pycache__/models.cpython-36.pyc old mode 100644 new mode 100755 diff --git a/portfolio/account/__pycache__/serializers.cpython-36.pyc b/portfolio/account/__pycache__/serializers.cpython-36.pyc old mode 100644 new mode 100755 diff --git a/portfolio/account/__pycache__/views.cpython-36.pyc b/portfolio/account/__pycache__/views.cpython-36.pyc old mode 100644 new mode 100755 index ba7687748e26a065d17e2763c21edf85fdabe81d..59c1b791b7b0f8a09919a5cd72914faacda63a85 GIT binary patch delta 1053 zcmZ`&Pfrs;6yIsL-D$g9+VZCs3Q`M!RV)(!q!K_9jdHK%uTeg|mf}V`x z7a;Qu`~W1TM?ZlFzrY?m;6>wsvlrugtD#6>C-d9)Z+>syo0)f`Uy9}HmX%zp9&PBR zrhU^+d^*U>Fy+C1dF_qCsB5;Yn$=3z(nMnhOSpZHwFeqYvebKxrFg8F*^Ab)U@@5m z7K@W+4lMm(NwYq%^l=090njrn3wrin#30M9Yj*z+Om0U4y5sO&$$c5bTh1$ITiPVp z|2@*3B?pA$)z`>dGN7JDTQdcS7y19;0;(238m7b=XiO)<>i&v;CxoiQ*j%a~V+IgP zYAjwT^eAw3Kn3@O!*}?UT8lSVCNQv!fNWwCz>bMyjzF)A25j}^F8;+7#+)M5T}S#A z6)~o!htWNPP(&C-NCE_g_pHgcpyp`Zbwyb{GVJ?UMv!ZB(Q>48yzR{`w=N}@!oX$W zzNS%{LFnZSrLYfU;22gPjXW9ael|*kTvR`4k&G*vkQ5tWN5rJsOO*0iPy*Tp`dv>j z+YqzJIjKG+?pBXW6_?R?1tBaG7m1q)z2spB^|mMdMRhBA8*;Ui)p=wK;;z^5I=-#< zns`q3U?lMXdcxCgdTaXIdkB+(cMV3$i!Lv zDO`7gUmcl)%ON)&i@0_k?IJisZNpv?jKqo+C%D|wWK~+<9Fhq*V0Tp-+Wz{ zjY`LN+`q>fWLUGl-S8^%g(v*2jxPlg!Bg;{BQm@!BBe;Ww1NAmnX71j0xxDAZY>_T lz{0|WXO$h$1z_s9e2GAq90JG?6GsF`hR|rv%nfG>e*n@n%BuhX delta 1095 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 delta 506 zcma)2Jxc>I7*2BE*K3ulrPQK0h;ksFVt;^w(yfX;95PtWCid&D2lqkgBv>c662#TT z$)*3m|IyXm-AQw`lx~`kP=i$`GRttnB!)T(sac9}V1Ai-rw1iGxPeY*XJIziu6_^GpQS3@1fMu#+ zl|bH(riK%`&E8dq4(c?nSsMF-+iVA&Z#3<8;8Q!GzI__>5})?tp?whsUD}KzHbHCb z1y%A2*UzMnPk%v$It&#y5lfXneOG3_m%(7k`b@<7>OzdYiJSk(f8yOF{*s6wJB7kR yBu!-UTg@_9U*0ouj)b?3p&PaKleptWp~#-)U8t~k`M}KaLIb5!g{ojmrt|~*D{#*M diff --git a/portfolio/album/admin.py b/portfolio/album/admin.py old mode 100644 new mode 100755 diff --git a/portfolio/album/apps.py b/portfolio/album/apps.py old mode 100644 new mode 100755 diff --git a/portfolio/album/migrations/__init__.py b/portfolio/album/migrations/__init__.py old mode 100644 new mode 100755 diff --git a/portfolio/album/models.py b/portfolio/album/models.py old mode 100644 new mode 100755 index f5dc1d6..365b608 --- a/portfolio/album/models.py +++ b/portfolio/album/models.py @@ -1,27 +1,7 @@ from django.db import models from portfolio.account.models import Account - - -class OneToManyModel(models.Model): - - def fromDict(self, dict): - self.__dict__.update(dict) - - def create(self, dict): - new_object = self() - new_object.fromDict(dict) - new_object.save() - return new_object - - def update(self, dict): - self.fromDict(dict) - self.save() - return self - - class Meta: - abstract = True - +from portfolio.utils import OneToManyModel class Album(OneToManyModel): title = models.CharField(max_length=255) diff --git a/portfolio/album/serializers.py b/portfolio/album/serializers.py old mode 100644 new mode 100755 diff --git a/portfolio/album/tests.py b/portfolio/album/tests.py old mode 100644 new mode 100755 diff --git a/portfolio/album/views.py b/portfolio/album/views.py old mode 100644 new mode 100755 index b316147..03e6140 --- a/portfolio/album/views.py +++ b/portfolio/album/views.py @@ -2,22 +2,44 @@ from django.shortcuts import render from rest_framework import viewsets -from drf_yasg.utils import swagger_auto_schema - from .models import * from .serializers import * class TrackViewSet(viewsets.ModelViewSet): + """ + A Tack CRUD (abstract from `viewsets.ModelViewSet`): + `GET`: `list()` + `GET`: `retrieve()` /parameter {id} + `POST`: `create()` + `PUT`&`PATCH`: `update()` /parameter {id} + `DELETE`: `destroy()` /parameter {id} + """ queryset = Track.objects.all() serializer_class = TrackSerializer class TrackRowViewSet(viewsets.ModelViewSet): + """ + A TrackRow CRUD (abstract from `viewsets.ModelViewSet`): + `GET`: `list()` + `GET`: `retrieve()` /parameter {id} + `POST`: `create()` + `PUT`&`PATCH`: `update()` /parameter {id} + `DELETE`: `destroy()` /parameter {id} + """ queryset = TrackRow.objects.all() serializer_class = TrackRowSerializer class AlbumViewSet(viewsets.ModelViewSet): + """ + A Album CRUD (abstract from `viewsets.ModelViewSet`): + `GET`: `list()` + `GET`: `retrieve()` /parameter {id} + `POST`: `create()` + `PUT`&`PATCH`: `update()` /parameter {id} + `DELETE`: `destroy()` /parameter {id} + """ queryset = Album.objects.all() serializer_class = AlbumSerializer diff --git a/portfolio/asgi.py b/portfolio/asgi.py old mode 100644 new mode 100755 diff --git a/portfolio/comment/__init__.py b/portfolio/comment/__init__.py old mode 100644 new mode 100755 diff --git a/portfolio/comment/__pycache__/__init__.cpython-36.pyc b/portfolio/comment/__pycache__/__init__.cpython-36.pyc old mode 100644 new mode 100755 diff --git a/portfolio/comment/__pycache__/admin.cpython-36.pyc b/portfolio/comment/__pycache__/admin.cpython-36.pyc old mode 100644 new mode 100755 diff --git a/portfolio/comment/__pycache__/models.cpython-36.pyc b/portfolio/comment/__pycache__/models.cpython-36.pyc index 15e2052eb977894d2fb39f48279ee6c51edba56d..9a2d5ba18aed7c07d8754fa37b95654913e4ddce 100644 GIT binary patch delta 72 zcmV-O0Jr~?2%-oLGYt(2YzzNho&f*=Tr*w*y@ygBSe( delta 61 zcmZ3)F@=NEn3tE!leqh6Yu~4 diff --git a/portfolio/comment/admin.py b/portfolio/comment/admin.py old mode 100644 new mode 100755 diff --git a/portfolio/comment/apps.py b/portfolio/comment/apps.py old mode 100644 new mode 100755 diff --git a/portfolio/comment/migrations/__init__.py b/portfolio/comment/migrations/__init__.py old mode 100644 new mode 100755 diff --git a/portfolio/comment/models.py b/portfolio/comment/models.py old mode 100644 new mode 100755 index d925391..01d9424 --- a/portfolio/comment/models.py +++ b/portfolio/comment/models.py @@ -1,6 +1,6 @@ from django.db import models -from account.models import Account, Guest +from portfolio.account.models import Account, Guest class AbstractComment(models.Model): diff --git a/portfolio/comment/tests.py b/portfolio/comment/tests.py old mode 100644 new mode 100755 diff --git a/portfolio/comment/views.py b/portfolio/comment/views.py old mode 100644 new mode 100755 diff --git a/portfolio/migrations/0001_initial.py b/portfolio/migrations/0001_initial.py old mode 100644 new mode 100755 diff --git a/portfolio/migrations/0002_albumrating_commentrating_guestcomment_trackrating_usercomment.py b/portfolio/migrations/0002_albumrating_commentrating_guestcomment_trackrating_usercomment.py new file mode 100644 index 0000000..cb004ef --- /dev/null +++ b/portfolio/migrations/0002_albumrating_commentrating_guestcomment_trackrating_usercomment.py @@ -0,0 +1,69 @@ +# Generated by Django 3.0.8 on 2020-07-03 10:54 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('portfolio', '0001_initial'), + ] + + operations = [ + migrations.CreateModel( + name='UserComment', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('text', models.CharField(max_length=255)), + ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='portfolio.Account')), + ], + options={ + 'abstract': False, + }, + ), + migrations.CreateModel( + name='TrackRating', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('track', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='portfolio.Track')), + ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='portfolio.Account')), + ], + options={ + 'abstract': False, + }, + ), + migrations.CreateModel( + name='GuestComment', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('text', models.CharField(max_length=255)), + ('guest', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='portfolio.Guest')), + ], + options={ + 'abstract': False, + }, + ), + migrations.CreateModel( + name='CommentRating', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('comment', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='portfolio.UserComment')), + ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='portfolio.Account')), + ], + options={ + 'abstract': False, + }, + ), + migrations.CreateModel( + name='AlbumRating', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('album', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='portfolio.Album')), + ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='portfolio.Account')), + ], + options={ + 'abstract': False, + }, + ), + ] diff --git a/portfolio/migrations/__init__.py b/portfolio/migrations/__init__.py old mode 100644 new mode 100755 diff --git a/portfolio/migrations/__pycache__/0001_initial.cpython-36.pyc b/portfolio/migrations/__pycache__/0001_initial.cpython-36.pyc old mode 100644 new mode 100755 diff --git a/portfolio/migrations/__pycache__/0002_album_track_trackrow.cpython-36.pyc b/portfolio/migrations/__pycache__/0002_album_track_trackrow.cpython-36.pyc old mode 100644 new mode 100755 diff --git a/portfolio/migrations/__pycache__/0002_albumrating_commentrating_guestcomment_trackrating_usercomment.cpython-36.pyc b/portfolio/migrations/__pycache__/0002_albumrating_commentrating_guestcomment_trackrating_usercomment.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ca3670f24a0861c0a36e841b845efed5829da4a1 GIT binary patch literal 1471 zcmb7EO>fgM7*3pzCTY75*kBu9S9+i=?1Y4-m5xmaZ9)t#Ibfx+n+Qq&A6EmgyZbU zm%hoU3t?Bx?5C_pYbjA~IG)zQ)z^g*DZWn_jbS{WBus|&I2%thZVqHm45wh;B-4AZc6T zE=dxcG7duYai4>?dkvk}ydfjdr`Tf{@#=tviAOKsDZb#g2obU22=m$(OnW55F!d75 zb%xK`<&|iehAP_2JBKk&19rmop$HkRUMJD)_&yn?Omv}5QYcyvGt2=a-12%Eqn^(i z8rO4BvmfFZWxPTLMXy#r3jgT`(Ya~B4Y~Prv^<5*y}WiX#2K6Xm=Q>Ac31A^^>RZA zR`ClWM(b0!S$?XWxHn8DCwo$v#mv1&4L}XS05v5I%iMxFHxP0MLUGH6F&1(S!n2_l z%O8{)!ULQlocbZoC=h|X+Rd3il-H7K(qeZ+LG~pV-0q%uv=E(rLU9Wa@%XYrzFBY%UahQ zOr_U?>y|ed#G#)*98=GXG<{ZDqSao&oF{p38o-j^Qp>ASnqXeY(jnWWv^NJAR6chV zF|!@9SemKpDgbNhlDefiS|M-D$T!*Lo*b)Ta=YNFiF!HT1;v}!#%A#zHYY67r{d&1 Zc1m0!$rqSguZqg<$Vz20-4)f+{sOtHs0IK4 literal 0 HcmV?d00001 diff --git a/portfolio/migrations/__pycache__/0003_auto_20200620_1850.cpython-36.pyc b/portfolio/migrations/__pycache__/0003_auto_20200620_1850.cpython-36.pyc old mode 100644 new mode 100755 diff --git a/portfolio/migrations/__pycache__/0004_auto_20200620_1956.cpython-36.pyc b/portfolio/migrations/__pycache__/0004_auto_20200620_1956.cpython-36.pyc old mode 100644 new mode 100755 diff --git a/portfolio/migrations/__pycache__/0005_auto_20200620_2006.cpython-36.pyc b/portfolio/migrations/__pycache__/0005_auto_20200620_2006.cpython-36.pyc old mode 100644 new mode 100755 diff --git a/portfolio/migrations/__pycache__/__init__.cpython-36.pyc b/portfolio/migrations/__pycache__/__init__.cpython-36.pyc old mode 100644 new mode 100755 diff --git a/portfolio/playlist/__init__.py b/portfolio/playlist/__init__.py old mode 100644 new mode 100755 diff --git a/portfolio/playlist/__pycache__/__init__.cpython-36.pyc b/portfolio/playlist/__pycache__/__init__.cpython-36.pyc old mode 100644 new mode 100755 diff --git a/portfolio/playlist/__pycache__/admin.cpython-36.pyc b/portfolio/playlist/__pycache__/admin.cpython-36.pyc old mode 100644 new mode 100755 diff --git a/portfolio/playlist/__pycache__/models.cpython-36.pyc b/portfolio/playlist/__pycache__/models.cpython-36.pyc old mode 100644 new mode 100755 diff --git a/portfolio/playlist/admin.py b/portfolio/playlist/admin.py old mode 100644 new mode 100755 diff --git a/portfolio/playlist/apps.py b/portfolio/playlist/apps.py old mode 100644 new mode 100755 diff --git a/portfolio/playlist/migrations/__init__.py b/portfolio/playlist/migrations/__init__.py old mode 100644 new mode 100755 diff --git a/portfolio/playlist/models.py b/portfolio/playlist/models.py old mode 100644 new mode 100755 diff --git a/portfolio/playlist/tests.py b/portfolio/playlist/tests.py old mode 100644 new mode 100755 diff --git a/portfolio/playlist/views.py b/portfolio/playlist/views.py old mode 100644 new mode 100755 diff --git a/portfolio/rating/__init__.py b/portfolio/rating/__init__.py old mode 100644 new mode 100755 diff --git a/portfolio/rating/__pycache__/__init__.cpython-36.pyc b/portfolio/rating/__pycache__/__init__.cpython-36.pyc old mode 100644 new mode 100755 diff --git a/portfolio/rating/__pycache__/admin.cpython-36.pyc b/portfolio/rating/__pycache__/admin.cpython-36.pyc old mode 100644 new mode 100755 diff --git a/portfolio/rating/__pycache__/models.cpython-36.pyc b/portfolio/rating/__pycache__/models.cpython-36.pyc index e03f684dc06f18d7b405573f7a02311a7763c9a9..2588354ab45563e0fd0ef1280f492d0a82514aec 100644 GIT binary patch literal 2368 zcmcIlOK;mo5av^&C`zVf$8jI%yFpc;Qh~HU3lxP_$1#G!N>IBw?4bm$T{~3xaFr+FZ7arvy}BPoFITv5;L5c9q!J2J3D)~)pGy*{l!mrYMS8xW;N2x8r)^Fh|*HaU*e=n>1Nd z>Gjx4TCA0{SzGB&yps6L*R@@ZH@N#ufu+ekSUllFUxVJ_ZRl;W27Mj+ z3iqM=O1}ktm3N?bl)k~OeXYB8f%vtqUe=O~i#UhWnjDLw5Wf~d9G;!R(AY^Q$^A&g zd%+?T6B%F`C~5Rc9tX}ElO{9BJyIYVbC7Lhm)kV4`eucivQXVQ*n^(h3V-Y ztu&%_FCQDi7AXG&OlVB!8Z)@gOl~tvn8N19xh^bx&2v36fFi|SE1N%rMU);t4&#Zq z(D85SJbJkQ;NZdIozfZZ><&m8UcA85t(Q&^q+ue0pmc)(=}uyjy&(8`62{etY+(}F zCT4;$IL6^2a0!CHG`U80V*dvHCs`u;#bN&W*LTDIBbklGsL1;#nJkX7ILhYIcSye< zo}9$d2*GCQd}KkADvy4(2fdS1*~BUyD0jdd-O?@7(Uo-xxLFx~0k=!w0GP$~=Q^`d zDs|z2H@NZKU@l6)Rv3U{3RFZF$b#o+!eDVb_x6FIS0mz)B~au06-LlGbU|qTk+xlpA2k{|$VG zUGK^)l2B0Cl=d%F3XGP)Zx8P6l-2}wt0uc{S$PZ28=xGA z9;>>#Zz$Um0yE@4g3}!NF^W`};~MZcSe+Z(e5Nr+m8)I0rl;c)Xn7m|jtEP7=u2^K zgK}E`H*HL$gA9<#^*^ZW4d7TB5ijeMMi6mH5S8wzI*2d;=XYU}?-8Rx`92tS)5=AB zw2-qxxmINNqESIEs@gOI)rR+MeJR{td#uEI}f%eROTVDfD+lu#9o{E$qugEQY; z`3?q%azfG}j7hsO#!c0BZjSI31W~Ef&aMUb4&v_W@&kMpG9_$P_Mbsm2DY;hQ|H`;WDe%&O(f@18M{R zPC->syc|@zl)ePbK_yG~cG=+LFg?zC{IKdcn^S#KL~-83tZ5#ro?l%iZHWsq5V%Z_ z=rUDptF%aGo3o3f7gpD6ueu9V=UN<|o~z4Yb>iv>hixoOL8W@>p^Ar+Em!6qDnjX! z)uP*7bx+mg)G3ryHIlMiC}?$vRmX6?scz42sb%GxV4hB|V|coclk6EC*LQr+Z~g~E CHSg8{ literal 1754 zcmbVM&2Aev5MJ(bwg0j#Cqas|D0(OmU8F;MECQ>JV+2K1BTjQ*fiBh}qprf;b-24m z?W=n2gA~2=d3fz9eT1Gm!@Hf4rhks@|$mF_)U_8*U`Vf{N-5IKh~We1^p04 z{Wl11aU!jPFhWqbrCm78F}fpZ;WF3gRQ3vwc}91oUj!^DLKYgkC!-=}vC%!56n)kw z)``V^9{g_cK)B1jmBR+$33&vbNRZ_|c!uDKc>8Hcg84JCfGw9|HuAKere#)$G}U36LR_sx zJxp&LjQnbHs;Z@!H}&MAQq7x6=GCqCeKvnP$u2HrJ_lq~dAl-ECYnh{`S{{Wg>XXz zqxM1ggc9ob#CW&pyQ#HrVcUj2;Vgl$6=6N$EqxJy3_1D3W)WoE<_=`sS=lV+6sUA{ ze|lawDw{VQrI4?nDpSb4XvEfK$nYVIdT{5mE?4j&=lWp#L*o~s$zIJyRK>7gB`EqJ zw4bdnyd|^KhPX=c*k_>CHV6p%0Zg+|^1)XWhR%XxsKjTvklb*i-AgP8g(r3RtWqLh zls||og=MC_qv_ev^y#stEflNy?k)uC05;!;QTIUjBqRgd__oNnVg7U2w9P#5-!puB z+(u$_vTlV9!Rj8InT`ApLqgccTKeu=_Ac~?vi z*LK_FvK~Xbl(jTX+`SQlZaKw=@r@}*Q=a{-dmzVMW1BK${dGn+PLpd7?q#vzapOmR zb%e+_9t=oREctb{zrZKj)TYAJD`Zz;2)km{{&(He_XHcc#zqN F{U4RDb)5hJ diff --git a/portfolio/rating/__pycache__/serializers.cpython-36.pyc b/portfolio/rating/__pycache__/serializers.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..baf42e56c2a9484c307d88a20b7c3a94390b55e0 GIT binary patch literal 3690 zcmcgvUvt|;5WkabS+QlO6aqsDr7eG5Anwp%7-m8yrG*X;%`haxgJwXZ=q{;T*>X-Y z5Rd!hJ~7h=J_a9wuX3+E^(*uRetSw{*>y;vrSj}~eLC&_c5i=s^7Ur3{_?MX{rHE= z*q^L)RiJM|G9QCrf+wuUea=a@602wXHgsE5lFAOd%|ul=514Qy?^Y+a?_j1TT+Fyf zGd0XCi8^NLM>DQyY_qoa2=-Z<>qaJ3947HdstiAuzUmKqU&k^Lk9e_wUyW$#@l}Pg z3CRQo$$T!DZ%Mmb5nNagxnCuH!hA>8q)R~Ix@tz}q3tgf@cg=L6tE`T_nT|MELi4Xk`DI(O5a?Bu)Iwa>4Ioo`jzl~JB`2C2&T z(j-o&+Lu7o2?v8Dj({uePw$j8WgvG-DP9{KYIi*ed%GgsAfFk8jV>;XaP4^EOmGyS z365%I%uG-Qew(X0ri@+;6uxR=AjNoU+qxFrP2)&rdMQtXLf18@N)FVCBg&u+F^*QD zf>=CZWShLdf?*$cfAH?}G4HYo`^`G2 zY!`6xxRa;1;wZ=VSZmi71@gGQp2S%mrMtOrtQ# zHlQ3^Kq4BY2X!soHG8d{y*SCGYFp|h*w^mCP^!aB=5uM)jgo_N1c$bR@fIIlF4>)y z>so1jM9}G)Ni$_=%qhj|Cfzx*HKC%lwhR_PTEPAy(~woiFz`>n+mh#ic)I)EW)H5+$Axzbh*b}ZsFr_ui{p`s#h^9W-@)!`FHT# zG}HgK^A~;JZ=lngt}i@vdQUX5M=kx@&9v8({d_^MS2egjX)R}Wd4;2unH2p)UwofZ z0AZs`r+9vTJ@|uTUu|2ppsQsXsCCS6j<)$G#GGBkx!f9a(*|&M*}6G{v)F3t3UsVx zGTBpa;74i8%@IJ{_=s#$fiXV1IAf&LqmFt2VW5k?=@Em6&K7FiW6Sh>ph43f4ygSg zq7QLbyKx_d*pK8w6ojAyITJ-;G{Vx8i;!$W&Zhb5X|WLtOLRJ7`aA`%!ijpDhIeQ% zES?S~n?&AEAoFx?&fB8YsrP7@WwD~NE7(grqbM<_Q?-q|S0EW3dUI5@U0c!pnOwaH zqOROXc89$eMbmW(AA%R9g?^tONxwMu^h_jelu(u_YFM(68&n53$T!st7`j@r@Zb4q zD(i@x>SGvQ=$p##7UT@y&&0|Li{p7ZPEyl&3Qpdp80eLybj1EooLqyK&&b^=oTU3( z?Iqn(GRuQKg;$B6Q+2O6;EPF#KU(IcK~Znhj(LyB^zt2gpO|jBIfo6$6&YRBkno41 WcthEsQ!%4H?Qzd?t@EqrSN;Yz%Gf3V literal 0 HcmV?d00001 diff --git a/portfolio/rating/__pycache__/views.cpython-36.pyc b/portfolio/rating/__pycache__/views.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3b0d6bc0c01c5bbe5f3b64c18fe4366d3095ef36 GIT binary patch literal 3173 zcmcIm%WfMt6rGnwW4$cD;wb40MPKSe3Xq^hi?&Ex13`+$Es`ROS!6I7((=eN8il0l z+E7*w&{e*mU(ny_l0a8o?lCJums+@#jHLcfh7|Ab%`vokBVL)#|Z$(-B`-P{X3Q+KmU?uWk7y{wuCVPN!1wv^Yxn$dlX zuZMN$RTgB8ycst0R@lmy!)4R9l(qAfa3x<2SM#-S&9?4Xtj6lkELP{iiZS4y_VqA0`9sH8=eaV&7exClC zjwD&*M5Vfid4i9KZr!-`!X_uK zuKz6JWbb~g($PTIzsVj?^5aVLyCTo|NX@F~x>4%-fQvNF(nBuvMrlx~dGpNhxgnw5 zo%|dqw^8J$5ZnrFW`z!r^oErqEA)9a4454*F^9R&tgyyBR>8NOpsg?$m=`QQow21Ujh-ec`~_ z)`23FFkRQz{@#8p22#7gRJY;f7>FpzVkvc#+UvsJ~m}yssY18=v2d`#*_-!YKRWLa3c0ON+Vo zEf(32$Kxzb5YS>Yx0EztV%;~C>WvSym!(o|!jlXjEW3e!U>|P23~G;ho&rke&_gkR z-iLA?(5XFine!ZwPAg(->M?6?315QRBO6-W=gw0fK>I`g$Re;+g?Ur&cPm9$0DWa! ztYT&`*kiE*lTB4ScelD#gPd50S!|Ga3qt#e;IZNcaqX*OD@_!-UZoBl64yu&=Hfa; z*u)7*_8x-Dn4gQ+$Uvyi#2ci&4M9z^0YUJzP*zb6I}0G1`9B4TB7X|f$EchG2@E7a z4DVcMApVs2hZe)U+4lYUUUfSwioMA=nushiOf-8n5NMzAj4R&tU%g?U&c)rWbDPvv z21bhF;9V?H(xPV@J-oJHi^pBJyGP{n93Y{ICXBQ2y+hiYBnWWv9*KD*jAp{ohJi+za0GtM_H54y{2&lyxs2>m z%5TTnMXZpklgvW#JNPlg#1rtN?9I2JjY!Wxh$XKO*!k6ltcn53juJzK0a^ zzr2ecCc21s?TrhmJ}bH3T;QJiT#kQ1{QIKhzO%snjO3u7cpp6l<#N#_Q77>siH}Io zaT6^PCO;U0nRL;oHuAKPV4uK1lbj`(8@Pfjmq4)fGdJahDR$u?o1A%vc6dy&tBV$J zc_b5r|Mw;TorV4{nPvA%3%I^;0k7m4T?FTOwoGjo;@J(1_=*-m)14+V;u%@CyVrG_ z4dc^b(fm|K!2qfP9LhK0_je?R;*g0$IF`g8-?h7GBg+^|kv!iMr zjwU^YEhcuNgIErF6P0FC&;>6jpW)S601RnT`RtU@nst5tSdp_#ZcZCPp<6%Tt#FTq z-J=()ZhvPk=2FYb*6hkDHMQ>W5#CeD$r+%GZcd$nWYKBW!IxMYuAQ&xJuB(RH=H&u XXZ)Rpvu>|D=7zv65p+(q\w+)/rating', TrackRatingViewSet, basename='track rating') +router.register(r'album/(?P\w+)/rating', AlbumRatingViewSet, basename='album rating') +router.register(r'comment/(?P\w+)/rating', CommentRatingViewSet, basename='comment rating') + urlpatterns = [ path('admin/', admin.site.urls), path('', include(router.urls)), diff --git a/portfolio/utils.py b/portfolio/utils.py new file mode 100644 index 0000000..dc575d2 --- /dev/null +++ b/portfolio/utils.py @@ -0,0 +1,20 @@ +from django.db import models + +class OneToManyModel(models.Model): + + def fromDict(self, dict): + self.__dict__.update(dict) + + def create(self, dict): + new_object = self() + new_object.fromDict(dict) + new_object.save() + return new_object + + def update(self, dict): + self.fromDict(dict) + self.save() + return self + + class Meta: + abstract = True \ No newline at end of file diff --git a/portfolio/wsgi.py b/portfolio/wsgi.py old mode 100644 new mode 100755