From 344f71295cd0932b734350df3cbc3d7c84408620 Mon Sep 17 00:00:00 2001 From: TBS093A Date: Sun, 21 Jun 2020 00:55:39 +0200 Subject: [PATCH] merge endpoints Track/TrackRow to Album && create full crud -> Album && clear database --- portfolio/__pycache__/urls.cpython-36.pyc | Bin 1905 -> 2110 bytes .../__pycache__/serializers.cpython-36.pyc | Bin 3469 -> 3469 bytes .../album/__pycache__/models.cpython-36.pyc | Bin 591 -> 2387 bytes .../__pycache__/serializers.cpython-36.pyc | Bin 0 -> 2984 bytes .../album/__pycache__/views.cpython-36.pyc | Bin 0 -> 1045 bytes portfolio/album/models.py | 73 +++++++++- portfolio/album/serializers.py | 135 ++++++++++++++++++ portfolio/album/views.py | 22 ++- portfolio/migrations/0001_initial.py | 50 ++++++- .../__pycache__/0001_initial.cpython-36.pyc | Bin 1371 -> 2129 bytes .../0002_album_track_trackrow.cpython-36.pyc | Bin 0 -> 1453 bytes .../0003_auto_20200620_1850.cpython-36.pyc | Bin 0 -> 589 bytes .../0004_auto_20200620_1956.cpython-36.pyc | Bin 0 -> 586 bytes .../0005_auto_20200620_2006.cpython-36.pyc | Bin 0 -> 597 bytes portfolio/song/__init__.py | 0 .../song/__pycache__/__init__.cpython-36.pyc | Bin 174 -> 0 bytes .../song/__pycache__/admin.cpython-36.pyc | Bin 215 -> 0 bytes .../song/__pycache__/models.cpython-36.pyc | Bin 722 -> 0 bytes portfolio/song/admin.py | 3 - portfolio/song/apps.py | 5 - portfolio/song/migrations/__init__.py | 0 portfolio/song/models.py | 45 ------ portfolio/song/tests.py | 3 - portfolio/song/views.py | 3 - portfolio/urls.py | 15 +- 25 files changed, 285 insertions(+), 69 deletions(-) create mode 100644 portfolio/album/__pycache__/serializers.cpython-36.pyc create mode 100644 portfolio/album/__pycache__/views.cpython-36.pyc create mode 100644 portfolio/album/serializers.py create mode 100644 portfolio/migrations/__pycache__/0002_album_track_trackrow.cpython-36.pyc create mode 100644 portfolio/migrations/__pycache__/0003_auto_20200620_1850.cpython-36.pyc create mode 100644 portfolio/migrations/__pycache__/0004_auto_20200620_1956.cpython-36.pyc create mode 100644 portfolio/migrations/__pycache__/0005_auto_20200620_2006.cpython-36.pyc delete mode 100644 portfolio/song/__init__.py delete mode 100644 portfolio/song/__pycache__/__init__.cpython-36.pyc delete mode 100644 portfolio/song/__pycache__/admin.cpython-36.pyc delete mode 100644 portfolio/song/__pycache__/models.cpython-36.pyc delete mode 100644 portfolio/song/admin.py delete mode 100644 portfolio/song/apps.py delete mode 100644 portfolio/song/migrations/__init__.py delete mode 100644 portfolio/song/models.py delete mode 100644 portfolio/song/tests.py delete mode 100644 portfolio/song/views.py diff --git a/portfolio/__pycache__/urls.cpython-36.pyc b/portfolio/__pycache__/urls.cpython-36.pyc index 9b232c20b27c3ee72f7aa78b3e10a10a6fce1043..a9c404d32d2fe6f1d67e76a037744530a93ae7d1 100644 GIT binary patch delta 685 zcmZ`$%Wl&^6!rL}JjRZjI?q0mG;L{$fCVddjf8}RSRh(~G(t#j?rj?rC&-S8)J+#* z!NwBE5^MgUdv^SUx9mau0e8~0%7(G#%sKa-dpy$owSPF>$Cg#dX20J(&ne0;Wo6}w zAJL9Jf9?8Lh0%K83OA^TN>CM5ra&HwqgqfG^`IddK~prDf(6X^8^FN=PHYowC?$;8 z7C5k$FeoPmtfS>`pD}O~O|+2v?YSa4*ztFuf)%JhHPI+Z>KeLGyU|yRLLKW+UokYW z0gV;i#3pPkwGNx8`dxo_uA&ZGXi&oLoRKnN8>{}_T$!uqn%Kv(fA0$mKauPI6MJ_f zWNTr|KY%tc=p-tI=wcssj+I{b`hxvY-}bbOKZ`M%z8>Q27^j)t9}Fh(_)Zs>x*tz3 zq`5yjje}b=KMB3T`&(67s8^HOvXH*fzrWDq2*V!Ba;IK|V=q8qoXh_S!;?wEn97LD z{Ni{JPG(Emmelkh7>*xh%4J^0qzA@*)=N)}>nE0XbIpez>E2Oj(c6c%gc5-$F0z+B zN0!$llnK(3`I2XPG@N3l$KfbSznMMrP__@#pXP_BM?`hTnX7U_hjBVxQYzD#y7&sr WCdKs}bsd#9b2QFu!W?;Rn)(L!Z+ delta 462 zcmaJ-yGjE=6y4dkad#6p*}QxkQ-l;E7Ft*&h1d!Ki&2Etd({jkN_K-_W3ipEpzIHb zUm&FSL(*E3hN70ODLA}O63uYSf>P7%_bxDr8#_i;)z`CkkIeSJZCVVDrDB zzcb{kVp%N1G%%QnWlB-`63lj_#@y(Uy~)XkdcUd-0~`cnH7yM`HV^#(`+g6(elo-$ z46bw^dfooYSh~u5Tay>9$?8d7ADM=KbaX!KhsmeDv(BCN58LhHWd}oUZKnahY^(;| z5b2r0S->ZMo$Xk_ diff --git a/portfolio/album/__pycache__/models.cpython-36.pyc b/portfolio/album/__pycache__/models.cpython-36.pyc index 695222f32072b48fc6ded62437815dea4b68126f..a61b4b0f4510075e58d6f4a963decd5fef523899 100644 GIT binary patch literal 2387 zcmZ`*OLOBy5T4P?vf?C8vdb>d;!zZ6DdH+PaG|JV6ZTP59E#0JhgB(_i6cjr%t#`e zR5)d?d*RF<;OB6iD;M^{58wh{j~vGdMy_u4O!sJ}zy4;%UoI~P?k|5m|J`To4>tEW zu(u%Pb11G#O(o z?}wK5<5;AFDvq^RPef8l^f{%>jZxERY`A;-Pl;-ntSygKWBuZocz zRAp~csOqT5(&E~Bm<&#O$z+nHgQQA}{Ms{TCD~y;?llN)PR_J{q>Aw_rbX#kX)@vG z_iiS*c@;CulrWrS`i{x;lKpI5SR>YC3yWVe&MvHJ)@lh+NHh6KhPG;^VZ4h<|RmT`{<+~?U4$Dd)D1)6t-=f@2Nqw$1VE4n8TBQ);rlN#QRn!Vul$wc} zOMdn}MH`tSOd)*Bw|&odP4A72XZ!sLVy`lm_Q;|A^@>OCobADGU9!lZ>ubXfB%!k!6TJ0i_u?uA-`{By%{D=#>y>pzXN2$z& zcB{0?q+SxT9H?|c+eEhyTM|PR6tMB z84$TiEz&~0OTPC=QM$Udv;Aymd-q%InzP5isNN^Hq1Uw{tkefkA41HYxkAo2=ykdA zF2*mzn0fqw3z5ykyET3PhiFq$5@x~F?#$T+MM(&D4H?%2t_55Y>w+5$eS_f-#c7|e z8X=F8I;*A#4ruSwLvK2~b|7URiVh>ePTJ}LEDo_CHuXXrVQ$G^y%bZRJ@ZpP+AhQs zyzvV<#H>D5bEt}XqP;5N3!E%ctRUIDb(j0-mwu}XKI=9L`EW{0W= z_^j?cED9u(n_a0sL07X%O2N?X)_NPd5qH!_G~T6?@kD(_9oIP+%dqTYI6jAz>rlk5 zhGDc%JG^Tt^7q5GZi`Wp4~tE4sOTh#?$55>&7}EjvDsXu&Eeph{{!Y&G~73QH6L5F Z3hjU0obBHbNz75vu{!qpovzNcf%hFdahtW;t|PyBo*9qdoA*9%@>!?j)PMiymp@kw<1gdN zRVRIm?$jf}4bCDXW*%eE&B%;vUXAn`uSfMg;~RrFxb@87mSBgCi<)OqPm|l!V;4P5 z>S=L@dYq!i=IzJEz`dmPjR8~bRLC%h!ZRULdTdH@Oq#f4`7nDp!o>MiBV~*3^q7P& zJjM;r6t%-TXWV?wyax0O!?TLENv%!Kt)g{`{x-EP^>>Q4TeLm6_RR2Ba>u;Y(xD5} z>+=?w?x_Br3`R#kBqxs-w(pVcEhz%-CzI%OWRiKf(8A_zx>J`#W*oB2IA<3ot;BW* zrn2XYDQiRvWPrexTr}HFqewJ8t+i9bX8C1N(lm00NEr% zFaIM!)xe2^r+y?RLFi;cmqO%R|;LAz}vTUFB7=FycTvyz6GJd`w$v-K)wwzfY4MejFkwd{1^fR$xk5e zfZIDX4_2k1e~z2Gz>YKk_dsG^HE_o?QU<0HxMl&4O%Tm>K-VO|0NlKUC7_OB_Wnf+gQ2s|d39(3tXlYF?ftz4o10`jOUO zWc89sx3Yv|o{qeNB~xy~Sg>*@pnkgP(-lCW>}=s3M6`_CGEn0tp=8q@x6am=9a^B2 zr(~Ipy2c|1m8D6kqC|UlJ0(BE#HDj;^%hF109lx%GguC3*}GtYGPMH}aH{24}d5=f?HU&Ek)$q|#1%qmSxT^>%P%m${pRi?Ha$s|tv+ WKhOUJe1X5bx)Qr42<>n5hyMdS2U*ep literal 0 HcmV?d00001 diff --git a/portfolio/album/__pycache__/views.cpython-36.pyc b/portfolio/album/__pycache__/views.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..666b0f1554766ff55813c0f66663bafa06ee27f7 GIT binary patch literal 1045 zcmbVL!H&}~5Vf18anp2LiZ}pYP!7$3D?+;ni4!YCD-Jned1JRt>%?6s&G<&vM2~Am5Dr(ZT$k{b+R^Vr;TYEDcdkWJ$ zfgn(VIZ8TEtGn^9P|_1YLO6zs9UCn)OSd1O%3PG^)4nB?7AzN(+K|#*@k%-zQF>W1 z*<=#GUStDxu@Px$tjDCZzgKSKYbTM2nne@fKRlmsv{SME-|@DwEpN5m%TNlL1V`~ zfZ#x@+A;T39i2H#{w>+B^MC3c)$IR>oq)7Qzln9s`82X)zG1~m&CD7OGp$Oa;o2d4 zqJ=5xQbW7#mELL($mE3UB|R{+npI^cjdtf{d(enN8arqk$=K+vBai#3kF)kmyQ+V4 Z(~=iWKfiR>!#LBUj(Z3u-o&5yzW~pv`Bwk{ literal 0 HcmV?d00001 diff --git a/portfolio/album/models.py b/portfolio/album/models.py index f56457d..f5dc1d6 100644 --- a/portfolio/album/models.py +++ b/portfolio/album/models.py @@ -1,11 +1,78 @@ from django.db import models -from account.models import Account + +from portfolio.account.models import Account -class Album(models.Model): +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 + + +class Album(OneToManyModel): title = models.CharField(max_length=255) description = models.CharField(max_length=255) image = models.TextField() url_code = models.CharField(max_length=255) - user = models.ManyToManyField(Account) + user = models.ForeignKey(Account, on_delete=models.DO_NOTHING) + + +class Track(OneToManyModel): + title = models.CharField(max_length=255) + description = models.CharField(max_length=1000) + text = models.TextField() + image = models.TextField() + audio = models.TextField() + url_code = models.CharField(max_length=255) + album = models.ForeignKey(Album, on_delete=models.CASCADE) + user = models.ForeignKey(Account, on_delete=models.CASCADE) + + +class TrackRow(OneToManyModel): + row_number = models.IntegerField() + group = models.BooleanField() + leader = models.BooleanField() + link = models.IntegerField(default=None) + text = models.TextField(default=None) + description = models.TextField(default=None) + image = models.TextField(default=None) + track = models.ForeignKey(Track, on_delete=models.CASCADE) + + def toDict(self): + if self.link is not None: + return { + self.row_number: { + 'group': self.gruop, + 'leader': self.leader, + 'link': self.link, + 'text': self.text, + 'description': None, + 'image': None + } + } + else: + return { + self.row_number: { + 'group': self.gruop, + 'leader': self.leader, + 'link': None, + 'text': None, + 'description': self.description, + 'image': self.image + } + } \ No newline at end of file diff --git a/portfolio/album/serializers.py b/portfolio/album/serializers.py new file mode 100644 index 0000000..3e2c222 --- /dev/null +++ b/portfolio/album/serializers.py @@ -0,0 +1,135 @@ +from rest_framework import serializers + +from rest_framework.reverse import reverse + +from .models import * + + +class TrackRowSerializer(serializers.ModelSerializer): + id = serializers.IntegerField(read_only = True) + track_id = serializers.IntegerField() + row_number = serializers.IntegerField() + group = serializers.BooleanField() + leader = serializers.BooleanField() + link = serializers.IntegerField() + text = serializers.CharField() + description = serializers.CharField() + image = serializers.CharField() + + def create(self, validated_data): + return TrackRow.create(TrackRow, validated_data) + + def update(self, instance, validated_data): + return instance.update(instance, validated_data) + + class Meta: + model = TrackRow + fields = ['id', 'track_id','row_number', 'group', 'leader', 'link', 'text', 'description', 'image'] + + +class TrackSerializer(serializers.ModelSerializer): + id = serializers.IntegerField(read_only = True) + album_id = serializers.IntegerField() + user_id = serializers.IntegerField() + title = serializers.CharField(max_length=255) + description = serializers.CharField(max_length=1000) + text = serializers.CharField() + image = serializers.CharField() + audio = serializers.CharField() + url_code = serializers.CharField(max_length=255) + track_rows = TrackRowSerializer(many=True, read_only=True) + + def create(self, validated_data): + return Track.create(Track, validated_data) + + def update(self, instance, validated_data): + return instance.update(validated_data) + + # track_rows = serializers.SlugRelatedField( + # many=True, + # read_only=True, + # slug_field='row_number' + # ) + + # view_name = 'track' + # queryset = Track.objects.all() + + # def get_url(self, obj, view_name, request, format): + # url_kargs = { + # 'album_id': obj.album.id, + # 'id': obj.id + # } + # return reverse(view_name, kwargs=url_kargs, request=request, format=format) + + # def get_object(self, view_name, view_args, view_kwargs): + # lookup_kwargs = { + # 'album_id': view_kwargs['album_id'], + # 'id': view_kwargs['id'] + # } + # return self.get_queryset().get(**lookup_kwargs) + + + class Meta: + model = Track + fields = ['id', 'album_id', 'user_id', 'title', 'description', 'text', 'image', 'audio', 'url_code', 'track_rows'] + + +class AlbumSerializer(serializers.ModelSerializer): + id = serializers.IntegerField(read_only = True) + user_id = serializers.IntegerField() + title = serializers.CharField(max_length=255) + description = serializers.CharField(max_length=255) + image = serializers.CharField() + url_code = serializers.CharField(max_length=255) + tracks = TrackSerializer(many=True, read_only=True) + + def create(self, validated_data): + return Album.create(Album, validated_data) + + def update(self, instance, validated_data): + return Album.update(validated_data) + + class Meta: + model = Album + fields = ['id', 'user_id', 'title', 'description', 'image', 'url_code', 'tracks'] + + + +# Relations + + +# class TrackTrackRowRelation(serializers.RelatedField): +# def to_representation(self, value): +# serializer = TrackSerializer(value.get_queryset()[0]) +# return serializer.data + + +# class AlbumTrackRelation(serializers.RelatedField): +# def to_representation(self, value): +# serializer = AlbumSerializer(value.get_queryset()[0]) +# return serializer.data + + +# class TrackRowSerializerFull(TrackRowSerializer): +# """ +# TrackRow + Track id +# """ +# track_id = TrackTrackRowRelation(queryset=Track.objects.all()) + +# class Meta: +# model = TrackRow +# fields = ['id', 'track_id', 'row_number', 'group', 'leader', 'link', 'text', 'description', 'image'] + + +# class TrackSerializerFull(TrackSerializer): +# """ +# Track + Album id +# """ +# album_id = AlbumTrackRelation(queryset=Album.objects.all()) + +# def create(self, validated_data): +# return super().create(validated_data) + +# class Meta: +# model = Track +# fields = ['id', 'album_id', 'title', 'description', 'text', 'image', 'audio', 'url_code', 'track_rows'] diff --git a/portfolio/album/views.py b/portfolio/album/views.py index 91ea44a..b316147 100644 --- a/portfolio/album/views.py +++ b/portfolio/album/views.py @@ -1,3 +1,23 @@ from django.shortcuts import render -# Create your views here. +from rest_framework import viewsets + +from drf_yasg.utils import swagger_auto_schema + +from .models import * +from .serializers import * + + +class TrackViewSet(viewsets.ModelViewSet): + queryset = Track.objects.all() + serializer_class = TrackSerializer + + +class TrackRowViewSet(viewsets.ModelViewSet): + queryset = TrackRow.objects.all() + serializer_class = TrackRowSerializer + + +class AlbumViewSet(viewsets.ModelViewSet): + queryset = Album.objects.all() + serializer_class = AlbumSerializer diff --git a/portfolio/migrations/0001_initial.py b/portfolio/migrations/0001_initial.py index ba702d5..761eeb3 100644 --- a/portfolio/migrations/0001_initial.py +++ b/portfolio/migrations/0001_initial.py @@ -1,4 +1,4 @@ -# Generated by Django 3.0.7 on 2020-06-18 17:25 +# Generated by Django 3.0.7 on 2020-06-20 22:48 from django.conf import settings import django.contrib.auth.models @@ -33,6 +33,20 @@ class Migration(migrations.Migration): ('objects', django.contrib.auth.models.UserManager()), ], ), + migrations.CreateModel( + name='Album', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('title', models.CharField(max_length=255)), + ('description', models.CharField(max_length=255)), + ('image', models.TextField()), + ('url_code', models.CharField(max_length=255)), + ('user', models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, to='portfolio.Account')), + ], + options={ + 'abstract': False, + }, + ), migrations.CreateModel( name='Guest', fields=[ @@ -45,4 +59,38 @@ class Migration(migrations.Migration): 'abstract': False, }, ), + migrations.CreateModel( + name='Track', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('title', models.CharField(max_length=255)), + ('description', models.CharField(max_length=1000)), + ('text', models.TextField()), + ('image', models.TextField()), + ('audio', models.TextField()), + ('url_code', models.CharField(max_length=255)), + ('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, + }, + ), + migrations.CreateModel( + name='TrackRow', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('row_number', models.IntegerField()), + ('group', models.BooleanField()), + ('leader', models.BooleanField()), + ('link', models.IntegerField(default=None)), + ('text', models.TextField(default=None)), + ('description', models.TextField(default=None)), + ('image', models.TextField(default=None)), + ('track', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='portfolio.Track')), + ], + options={ + 'abstract': False, + }, + ), ] diff --git a/portfolio/migrations/__pycache__/0001_initial.cpython-36.pyc b/portfolio/migrations/__pycache__/0001_initial.cpython-36.pyc index 6b448c642c7b45f5195d9bcbdd6dd3d1e31f5df1..037ff1b91f505e97731a2688e750445afeabe305 100644 GIT binary patch delta 947 zcmZvZzi-n(6vuu3ku+}Fq_jYr&|g3S^P?0B0tOI8sA&aCCE6(xL~h*Qj zGB9UoEtp|sW<%`EtjEI00uz4#@0`j_s_Jyl_x<|bdmlglG=JpH<&hEd`N7{;zjFKL z`{KBwD35WsKd6dAl?nl+q5`RCaA*JPrI1ed@z=f_x4L1cBqg7Js40;PNiP;lCaHU`h3SAxRpG0x# zkm+(lal~^a@dnAP0kSMyh53#|gF)nMf}A;qeCsWR&9>fhiO~t3h>(I0iDBaFZa zJZcdx|F9Sa+OBb@6*$ZnhSRhgR1AgOtJWCMy|EVKL7jOHTU@EtSm+0q%7-zJ=VX}1 zU}=0-p66tk#~_SSNZWxhwzyr}aeixP=>dI>jvYeBVfd6Zd%3>i(hx&&#tXJ9OwM+z ze%RcmTo?_`!j?#R)CQEg=lDBii-V*{^@IQ!uM delta 224 zcmca8aGQ(En3tEUYVqs1yKED=rb=@&Ffcd(aq%Z0k;)Lon8Fanl)@OroFX@I*TTtX z8I6RcQ`j;YQ)GIX)0v_~Q)Gh~H03wDFnchvx|gOFmrS0>BBxp;3)HR2TqF;qiWESE zB9QRYWGZ3r5FR~O(ym{L0|}3W*JUre1`1A8DjOS9DatO2_>w)K(rViB$dX2kMkMRv z7Op<<2e|W>=E{X!_yJs?XSCL?t2iLlOm+8YzW(~5{(NgI`t`+MKah}+Kgh=8qWlC` zGr^4#Y89lk=2mIXZAN|uR4GF~;x zFFA#xIZgH1&9jHX6I{)279l|97A13=ewf!6t0S&I*bDM@}3ur`# z*A{A{TiOczo$t{5^ue`_+%%g_`)+5?!k*VV|H{OBfZ~C5A`X1L_aWjF+6)s zXDRG8!@So%#IsE{A8oS9ocSI42&?*u3Qumzslu8IdCm*Q)#%{h;M15@OtPd<-mF-( zrLq}4J686yqp_<-Nh^7r3P>bSHLL|I6S0ghVX49f1m0p-phiD|SnvkoDk(vElF0(z z{DZwQwy=+qS8)MVCNI>GLX!$s>#kBBLS>+WRuplH{iWO%5wG@oc9U6}^0tx)VoQ!K z=^A+doIybw<(-Kny<~qngeX_SE2+Gsr5Kc#=rFE!Hh{DN0YYBI*vKG3+(ULMFc9DK zmnstcWqjI}3lPf7M9XXC7m!d?-GWt@r$}Nz;XG*zsoaKF*(Sb$8Qa1`P~q#i@2Vg+ z*@$Bm#WDUrZ2>5c;`qllDRdxOqfkRdp-LGv!q$|AhbGr2`iB!38d2d4OK_}XR^j1A zB39xVM%;-zCrPzD<9hE5(J>dmvg%u`l27xb%DA%WLIoyvo%_Mz?D^sB=xa54R!PWU z1v+}lIYwQrV0aCy3Gh1+U+CEM_V>@z3tqyMLpeR-mu(4^Tu#3eJcm>^(?08K=_%G} zn$&f{QZrE2CmYgw+)S}4KZ{KfW2tN0?O35ny%c)54RAG&aSI&ZbuHW8x3=+(aP2#r zdSq<(t%obC*7aB2Yp}+?3cDOl=)%;XOZ$V~IO(R}@c5)V}HRafoD Mx_XVKyK4o`zv{)J0ssI2 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 new file mode 100644 index 0000000000000000000000000000000000000000..c616e17a4296b7e5f871342f08b6641fc27aeec2 GIT binary patch literal 589 zcmYjNu}<7T5Z(3KhtGi`>1ZPwH`qCpC`A+@gh&+>LFXbX{yRw_ZpDigGC$<#-!gyzX+$FnDa9870jNI$ z6v|a_qly5+bCE`O{7k{KF#G?>@fI_q%JWxPci*pD@H~7KSq5J?W=x i(;QZ1yQF=%m#@A6r*bZ literal 0 HcmV?d00001 diff --git a/portfolio/migrations/__pycache__/0004_auto_20200620_1956.cpython-36.pyc b/portfolio/migrations/__pycache__/0004_auto_20200620_1956.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d499775885d36c2ec59449de02cad9314b336e72 GIT binary patch literal 586 zcmZ8dJx}B?5VhlE$p&bkpg+;1Az}FtNC+W>j*1n6Zi}-*W>~T~ad5Ii&_c@(;rGzF zrMl*Rz*RTS0*lVkjGmt}PxIc^@^bW6{Q0FgWAE(S@d+PMH9x2U1Fl%fN1U@$1|EoK z1_JrSdlDlL{7V)Gzv({~a~qY#*ko;?t0s5U=LrZLQ8nw-kc~Jn8V$#MB+#D(Ai#$J zdM|>Q9xRY#-}cWwwQRrEroGmx&~`0N(=C}zTP+9aAWe4%sodP#Np0AgEWb7S-ujKM z#y05gv7ntappsQqq7Aiz4^-iOhla6doL}R1j2CPuJ6cK`NlBwqg@l)+yqjjqiMShJ zjTK;(7uXn&2JPYny2qadDzK5R@gs&;W>%cKYkwb;8(m_eu}n_%?X<+IeMruYo?zZK z$(PAFIwng=R@bV?yHw{d-_Shsgu>bWKb-xY-HrOe2wI>=)kM@n(er)o(bw@qim4Bi ftQzYLxatgb{CxEpTBT7N9?ViXbc&5Lza;(vV-KKP literal 0 HcmV?d00001 diff --git a/portfolio/migrations/__pycache__/0005_auto_20200620_2006.cpython-36.pyc b/portfolio/migrations/__pycache__/0005_auto_20200620_2006.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..295ad600095a4069085b1e113538d5a7eaa810f6 GIT binary patch literal 597 zcmZ8dJx}B?5Vhm%k_}KmLw}-4L&EYQAt8iL=%{Xmpi6-jGQ*O^iG!191?|!DL+&rR zrMl*R02Sl#u?R;qdU^Id&3ikmtKo(Ee>vxjJ+m*zCwxrR{GbL5xMC$wIcKK~JP?lz z1oD~pN2DJ37c3h5qjxOgHY|&&$=X6!P41|VGaztG)ofBjmU3V;8ccaA(4P%JfDZ#0 zJ_%xmutbt0JNo^hWkZbwHznoB-tM)a{FL!-v+J8@>`?lX-G{@ zy7CH*?QzxPNYHv3P{}GQ(FR(2o|e*vQqpLrknoC>cU`8O zi2DPqu>!2}0vqGepj|#kcloP81vb<*z9;gRnKh^G+RHRJ_fAMoPl3tGeZ-NtG}Uj8nwaUTPjCRv2o^C#4CB3qy7K@ literal 0 HcmV?d00001 diff --git a/portfolio/song/__init__.py b/portfolio/song/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/portfolio/song/__pycache__/__init__.cpython-36.pyc b/portfolio/song/__pycache__/__init__.cpython-36.pyc deleted file mode 100644 index dd744cdfec73480c95ccbff7f1fdcf04b354bcf3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 174 zcmXr!<>k^~d=@{M=Oi{M1~1 zm;CI~+|<01O8tPM{H)aEl4AXW{GyVy{G7~u1j{KgIa@!mpdcqRIk6-&KMx_JU!0$p ht{)$tnU`4-AFo$Xd5gm)H$SB`C)EyQX)zEp004fwFQ)(i diff --git a/portfolio/song/__pycache__/admin.cpython-36.pyc b/portfolio/song/__pycache__/admin.cpython-36.pyc deleted file mode 100644 index 2cd7db2ab6a6c323956f936c571f6615ca8d9b80..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 215 zcmYL?u?oU45QZ-;f(R8K!!FI>Dk|bEf{SzzViIfGCRdVl=p*?`U7hq1oQxgx;QR0A z4*q|UB$GLLo!0>H2>d1rZWC~`AOZxbL6e*i5YZ9R_!+K{l77U5R%V|@`Baq56qs=| z-l~iJ2He5MVGZ&=(Hm+>QEIxws@2l?jvg$Ql6yxRwEl{})}6vrjoa-75|fd#%omUv*}IF69g4jeu1!h!~LswEPqk`-k6u9?f)55iZ{ z+5yVO$^y@F+aR5ve$tcm{_jc8CzH|d@vqN6FhV!zzm@>MhOc=6Mj(L|(wJi0aik(0 z(>QRf5=|(<=oE=WkZ(v3iMQ!hOa~%eq1oUT{zo(HQ*DG)4bWgwmZq&8AX%vMR+rtD z`}Poc11l0yED()kyiEia(KV(da2z-V9$X=s-HpS$aTNCS`^Uh!oPa$N$#p~@h57Vh z{#X!@nfhd9>h$TfdKjW}8G&O?+q?2c}Cq84W=2|l5M~p#ct?D>u z>}$(a@39e_<%i1+w?!*ClQfa=Hl<-zm#%HZn ztc1e((TTCLTG#L7-gYJOgXLniTpYjkgm*Qxpc46{ZKVB<>{FNo^XF5sFf+d3 zv|83~Uwp7;D@)fDJ7e7!qbhTtH@v(k_-?1Fl6Mjho}z&Y75z2NcY8}9ND5yw1(V?% zdKP+)r#N`eW|<#~Ew9&RF3$Uc9P$44=lwxJH_by1_e&u^^1gd7;g~}@Jw1bXK6}}h Q{S~}i)O0%X2qZ-R0GbKGcK`qY diff --git a/portfolio/song/admin.py b/portfolio/song/admin.py deleted file mode 100644 index 8c38f3f..0000000 --- a/portfolio/song/admin.py +++ /dev/null @@ -1,3 +0,0 @@ -from django.contrib import admin - -# Register your models here. diff --git a/portfolio/song/apps.py b/portfolio/song/apps.py deleted file mode 100644 index 83a50fc..0000000 --- a/portfolio/song/apps.py +++ /dev/null @@ -1,5 +0,0 @@ -from django.apps import AppConfig - - -class SongConfig(AppConfig): - name = 'song' diff --git a/portfolio/song/migrations/__init__.py b/portfolio/song/migrations/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/portfolio/song/models.py b/portfolio/song/models.py deleted file mode 100644 index 11ea75b..0000000 --- a/portfolio/song/models.py +++ /dev/null @@ -1,45 +0,0 @@ -from django.db import models - -from account.models import Account -from album.models import Album - -class Song(models.Model): - title = models.CharField(max_length=255) - description = models.CharField(max_length=1000) - text = models.TextField() - image = models.TextField() - audio = models.TextField() - url_code = models.CharField(max_length=255) - album = models.ForeignKey(Album, on_delete=models.CASCADE) - user = models.ForeignKey(Account, on_delete=models.CASCADE) - -class SongRow(models.Model): - rowNumber = models.IntegerField() - gruop = models.BooleanField() - leader = models.BooleanField() - link = models.IntegerField(default=None) - text = models.TextField() - description = models.TextField() - image = models.TextField() - song = models.ForeignKey(Song, on_delete=models.CASCADE) - - def toDict(self): - if self.link is not None: - return { - self.rowNumber: { - 'group': self.gruop, - 'leader': self.leader, - 'link': self.link, - 'text': self.text, - } - } - else: - return { - self.rowNumber: { - 'group': self.gruop, - 'leader': self.leader, - 'text': self.text, - 'description': self.description, - 'image': self.image - } - } \ No newline at end of file diff --git a/portfolio/song/tests.py b/portfolio/song/tests.py deleted file mode 100644 index 7ce503c..0000000 --- a/portfolio/song/tests.py +++ /dev/null @@ -1,3 +0,0 @@ -from django.test import TestCase - -# Create your tests here. diff --git a/portfolio/song/views.py b/portfolio/song/views.py deleted file mode 100644 index 91ea44a..0000000 --- a/portfolio/song/views.py +++ /dev/null @@ -1,3 +0,0 @@ -from django.shortcuts import render - -# Create your views here. diff --git a/portfolio/urls.py b/portfolio/urls.py index fe4c14b..0c12cec 100644 --- a/portfolio/urls.py +++ b/portfolio/urls.py @@ -22,7 +22,8 @@ from rest_framework import routers, permissions from rest_framework.authtoken import views as authViews from portfolio import settings -from .account import views +from .account.views import GuestViewSet, AccountViewSet, AccountAuth +from .album.views import AlbumViewSet, TrackViewSet, TrackRowViewSet schema_view = get_schema_view( openapi.Info( @@ -38,19 +39,23 @@ schema_view = get_schema_view( router = routers.DefaultRouter() -router.register(r'users', views.AccountViewSet, basename='user') -router.register(r'guests', views.GuestViewSet) +router.register(r'user', AccountViewSet, basename='user') +router.register(r'guest', GuestViewSet, basename='guest') + +router.register(r'album', AlbumViewSet, basename='album') +router.register(r'track', TrackViewSet, basename='track') +router.register(r'track-row', TrackRowViewSet, basename='track row') urlpatterns = [ path('admin/', admin.site.urls), path('', include(router.urls)), - re_path(r'users/auth', views.AccountAuth.as_view()) + re_path(r'user/auth', AccountAuth.as_view()) ] if settings.DEBUG: urlpatterns = [ path('admin/', admin.site.urls), path('', include(router.urls)), - re_path(r'users/auth', views.AccountAuth.as_view()), + re_path(r'user/auth', AccountAuth.as_view()), path('swagger/', schema_view.with_ui('swagger', cache_timeout=0)) ] \ No newline at end of file