upgrade ratings list
parent
89fc4b3099
commit
1d07048913
|
|
@ -1,4 +1,4 @@
|
||||||
# Generated by Django 3.0.7 on 2020-06-20 22:48
|
# Generated by Django 3.0.8 on 2020-07-06 15:59
|
||||||
|
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
import django.contrib.auth.models
|
import django.contrib.auth.models
|
||||||
|
|
@ -76,6 +76,17 @@ class Migration(migrations.Migration):
|
||||||
'abstract': False,
|
'abstract': False,
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
|
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(
|
migrations.CreateModel(
|
||||||
name='TrackRow',
|
name='TrackRow',
|
||||||
fields=[
|
fields=[
|
||||||
|
|
@ -93,4 +104,51 @@ class Migration(migrations.Migration):
|
||||||
'abstract': False,
|
'abstract': False,
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='TrackRating',
|
||||||
|
fields=[
|
||||||
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||||
|
('value', models.PositiveSmallIntegerField(choices=[(1, 'POSITIVE'), (0, 'NEGATIVE')], verbose_name='Type of rating (1 - POSITIVE, 0 - NEGATIVE)')),
|
||||||
|
('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')),
|
||||||
|
('value', models.PositiveSmallIntegerField(choices=[(1, 'POSITIVE'), (0, 'NEGATIVE')], verbose_name='Type of rating (1 - POSITIVE, 0 - NEGATIVE)')),
|
||||||
|
('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')),
|
||||||
|
('value', models.PositiveSmallIntegerField(choices=[(1, 'POSITIVE'), (0, 'NEGATIVE')], verbose_name='Type of rating (1 - POSITIVE, 0 - NEGATIVE)')),
|
||||||
|
('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,
|
||||||
|
},
|
||||||
|
),
|
||||||
]
|
]
|
||||||
|
|
|
||||||
|
|
@ -1,69 +0,0 @@
|
||||||
# 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,
|
|
||||||
},
|
|
||||||
),
|
|
||||||
]
|
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -9,18 +9,13 @@ from portfolio.album.models import Album, Track
|
||||||
|
|
||||||
from portfolio.utils import OneToManyModel
|
from portfolio.utils import OneToManyModel
|
||||||
|
|
||||||
class RatingValue(enum.Enum):
|
RATING_VALUE = [
|
||||||
POSITIVE = 1
|
(1, 'POSITIVE'),
|
||||||
NEGATIVE = -1
|
(0, 'NEGATIVE')
|
||||||
|
]
|
||||||
__labels__ = {
|
|
||||||
POSITIVE: ugettext_lazy('POSITIVE'),
|
|
||||||
NEGATIVE: ugettext_lazy('NEGATIVE'),
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
class AbstractRating(OneToManyModel):
|
class AbstractRating(OneToManyModel):
|
||||||
value = EnumField(choices=RatingValue)
|
value = models.PositiveSmallIntegerField(choices=RATING_VALUE, verbose_name='Type of rating (1 - POSITIVE, 0 - NEGATIVE)')
|
||||||
user = models.ForeignKey(Account, on_delete=models.CASCADE)
|
user = models.ForeignKey(Account, on_delete=models.CASCADE)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
|
|
|
||||||
|
|
@ -6,13 +6,8 @@ from .models import *
|
||||||
class TrackRatingSerializer(serializers.ModelSerializer):
|
class TrackRatingSerializer(serializers.ModelSerializer):
|
||||||
id = serializers.IntegerField(read_only = True)
|
id = serializers.IntegerField(read_only = True)
|
||||||
user_id = serializers.IntegerField()
|
user_id = serializers.IntegerField()
|
||||||
value = EnumField(
|
|
||||||
choices=RatingValue,
|
|
||||||
to_choice=lambda x:(x.name, x.value),
|
|
||||||
to_repr=lambda x: x
|
|
||||||
)
|
|
||||||
# track_id = serializers.IntegerField()
|
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
def get_default(track_id):
|
def get_default(track_id):
|
||||||
queryset = TrackRating.objects.filter(track_id=track_id)
|
queryset = TrackRating.objects.filter(track_id=track_id)
|
||||||
return [ x.toDict() for x in queryset ]
|
return [ x.toDict() for x in queryset ]
|
||||||
|
|
@ -34,18 +29,20 @@ class TrackRatingSerializer(serializers.ModelSerializer):
|
||||||
class CommentRatingSerializer(serializers.ModelSerializer):
|
class CommentRatingSerializer(serializers.ModelSerializer):
|
||||||
id = serializers.IntegerField(read_only = True)
|
id = serializers.IntegerField(read_only = True)
|
||||||
user_id = serializers.IntegerField()
|
user_id = serializers.IntegerField()
|
||||||
value = EnumField(
|
|
||||||
choices=RatingValue,
|
|
||||||
to_choice=lambda x:(x.name, x.value),
|
|
||||||
to_repr=lambda x: x
|
|
||||||
)
|
|
||||||
# comment_id = serializers.IntegerField()
|
|
||||||
|
|
||||||
def create(self, validated_data):
|
@staticmethod
|
||||||
return CommentRating.create(TrackRating, validated_data)
|
def get_default(comment_id):
|
||||||
|
queryset = CommentRating.objects.filter(comment_id=comment_id)
|
||||||
|
return [ x.toDict() for x in queryset ]
|
||||||
|
|
||||||
def update(self, instance, validated_data):
|
@staticmethod
|
||||||
return instance.update(validated_data)
|
def create(validated_data, comment_id):
|
||||||
|
validated_data["comment_id"] = comment_id
|
||||||
|
return CommentRating.create(CommentRating, validated_data)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def delete(comment_id, user_id):
|
||||||
|
return CommentRating.objects.get(comment_id=comment_id, user_id=user_id).delete()
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = CommentRating
|
model = CommentRating
|
||||||
|
|
@ -55,18 +52,21 @@ class CommentRatingSerializer(serializers.ModelSerializer):
|
||||||
class AlbumRatingSerializer(serializers.ModelSerializer):
|
class AlbumRatingSerializer(serializers.ModelSerializer):
|
||||||
id = serializers.IntegerField(read_only = True)
|
id = serializers.IntegerField(read_only = True)
|
||||||
user_id = serializers.IntegerField()
|
user_id = serializers.IntegerField()
|
||||||
value = EnumField(
|
|
||||||
choices=RatingValue,
|
|
||||||
to_choice=lambda x:(x.name, x.value),
|
|
||||||
to_repr=lambda x: x
|
|
||||||
)
|
|
||||||
# album_id = serializers.IntegerField()
|
|
||||||
|
|
||||||
def create(self, validated_data):
|
@staticmethod
|
||||||
return AlbumRating.create(TrackRating, validated_data)
|
def get_default(album_id):
|
||||||
|
queryset = AlbumRating.objects.filter(album_id=album_id)
|
||||||
|
return [ x.toDict() for x in queryset ]
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def create(validated_data, album_id):
|
||||||
|
validated_data["album_id"] = album_id
|
||||||
|
return AlbumRating.create(AlbumRating, validated_data)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def delete(album_id, user_id):
|
||||||
|
return AlbumRating.objects.get(album_id=album_id, user_id=user_id).delete()
|
||||||
|
|
||||||
def update(self, instance, validated_data):
|
|
||||||
return instance.update(validated_data)
|
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = AlbumRating
|
model = AlbumRating
|
||||||
|
|
|
||||||
|
|
@ -23,7 +23,6 @@ class TrackRatingViewSet(
|
||||||
def list(self, request, *args, **kwargs):
|
def list(self, request, *args, **kwargs):
|
||||||
trackID = self.kwargs.get('track_id')
|
trackID = self.kwargs.get('track_id')
|
||||||
serializer = self.serializer_class.get_default(trackID)
|
serializer = self.serializer_class.get_default(trackID)
|
||||||
print(serializer)
|
|
||||||
return Response(serializer)
|
return Response(serializer)
|
||||||
|
|
||||||
def create(self, request, *args, **kwargs):
|
def create(self, request, *args, **kwargs):
|
||||||
|
|
@ -49,14 +48,23 @@ class AlbumRatingViewSet(
|
||||||
serializer_class = AlbumRatingSerializer
|
serializer_class = AlbumRatingSerializer
|
||||||
lookup_url_kwarg = 'user_id'
|
lookup_url_kwarg = 'user_id'
|
||||||
|
|
||||||
def get(self, request, *args, **kwargs):
|
def list(self, request, *args, **kwargs):
|
||||||
return Response("elo")
|
albumID = self.kwargs.get('album_id')
|
||||||
|
serializer = self.serializer_class.get_default(albumID)
|
||||||
|
return Response(serializer)
|
||||||
|
|
||||||
def post(self, request, *args, **kwargs):
|
def create(self, request, *args, **kwargs):
|
||||||
return Response("elo")
|
albumID = self.kwargs.get('album_id')
|
||||||
|
checkValidate = self.serializer_class(data = request.data)
|
||||||
|
if checkValidate and albumID is not None:
|
||||||
|
serializer = self.serializer_class.create(request.data, album_id=albumID)
|
||||||
|
return Response(serializer.toDict())
|
||||||
|
return Response({ "ID": f"{albumID}" })
|
||||||
|
|
||||||
def delete(self, request, *args, **kwargs):
|
def destroy(self, request, *args, **kwargs):
|
||||||
return Response("elo")
|
albumID = self.kwargs.get('album_id')
|
||||||
|
userID = self.kwargs.get(self.lookup_url_kwarg)
|
||||||
|
return Response(self.serializer_class.delete(albumID, userID))
|
||||||
|
|
||||||
class CommentRatingViewSet(
|
class CommentRatingViewSet(
|
||||||
mixins.ListModelMixin,
|
mixins.ListModelMixin,
|
||||||
|
|
@ -68,12 +76,21 @@ class CommentRatingViewSet(
|
||||||
serializer_class = CommentRatingSerializer
|
serializer_class = CommentRatingSerializer
|
||||||
lookup_url_kwarg = 'user_id'
|
lookup_url_kwarg = 'user_id'
|
||||||
|
|
||||||
def get(self, request, *args, **kwargs):
|
def list(self, request, *args, **kwargs):
|
||||||
return Response("elo")
|
albumID = self.kwargs.get('album_id')
|
||||||
|
serializer = self.serializer_class.get_default(albumID)
|
||||||
|
return Response(serializer)
|
||||||
|
|
||||||
def post(self, request, *args, **kwargs):
|
def create(self, request, *args, **kwargs):
|
||||||
return Response("elo")
|
albumID = self.kwargs.get('album_id')
|
||||||
|
checkValidate = self.serializer_class(data = request.data)
|
||||||
|
if checkValidate and albumID is not None:
|
||||||
|
serializer = self.serializer_class.create(request.data, album_id=albumID)
|
||||||
|
return Response(serializer.toDict())
|
||||||
|
return Response({ "ID": f"{albumID}" })
|
||||||
|
|
||||||
def delete(self, request, *args, **kwargs):
|
def destroy(self, request, *args, **kwargs):
|
||||||
return Response("elo")
|
albumID = self.kwargs.get('album_id')
|
||||||
|
userID = self.kwargs.get(self.lookup_url_kwarg)
|
||||||
|
return Response(self.serializer_class.delete(albumID, userID))
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue