upgrade ratings list

develop
TBS093A 2020-07-06 18:07:23 +02:00
parent 89fc4b3099
commit 1d07048913
9 changed files with 120 additions and 119 deletions

View File

@ -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
import django.contrib.auth.models
@ -76,6 +76,17 @@ class Migration(migrations.Migration):
'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(
name='TrackRow',
fields=[
@ -93,4 +104,51 @@ class Migration(migrations.Migration):
'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,
},
),
]

View File

@ -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.

View File

@ -9,18 +9,13 @@ from portfolio.album.models import Album, Track
from portfolio.utils import OneToManyModel
class RatingValue(enum.Enum):
POSITIVE = 1
NEGATIVE = -1
__labels__ = {
POSITIVE: ugettext_lazy('POSITIVE'),
NEGATIVE: ugettext_lazy('NEGATIVE'),
}
RATING_VALUE = [
(1, 'POSITIVE'),
(0, 'NEGATIVE')
]
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)
class Meta:

View File

@ -6,13 +6,8 @@ from .models import *
class TrackRatingSerializer(serializers.ModelSerializer):
id = serializers.IntegerField(read_only = True)
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):
queryset = TrackRating.objects.filter(track_id=track_id)
return [ x.toDict() for x in queryset ]
@ -34,18 +29,20 @@ class TrackRatingSerializer(serializers.ModelSerializer):
class CommentRatingSerializer(serializers.ModelSerializer):
id = serializers.IntegerField(read_only = True)
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):
return CommentRating.create(TrackRating, validated_data)
@staticmethod
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):
return instance.update(validated_data)
@staticmethod
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:
model = CommentRating
@ -55,18 +52,21 @@ class CommentRatingSerializer(serializers.ModelSerializer):
class AlbumRatingSerializer(serializers.ModelSerializer):
id = serializers.IntegerField(read_only = True)
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):
return AlbumRating.create(TrackRating, validated_data)
@staticmethod
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:
model = AlbumRating

View File

@ -23,7 +23,6 @@ class TrackRatingViewSet(
def list(self, request, *args, **kwargs):
trackID = self.kwargs.get('track_id')
serializer = self.serializer_class.get_default(trackID)
print(serializer)
return Response(serializer)
def create(self, request, *args, **kwargs):
@ -49,14 +48,23 @@ class AlbumRatingViewSet(
serializer_class = AlbumRatingSerializer
lookup_url_kwarg = 'user_id'
def get(self, request, *args, **kwargs):
return Response("elo")
def list(self, request, *args, **kwargs):
albumID = self.kwargs.get('album_id')
serializer = self.serializer_class.get_default(albumID)
return Response(serializer)
def post(self, request, *args, **kwargs):
return Response("elo")
def create(self, request, *args, **kwargs):
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):
return Response("elo")
def destroy(self, request, *args, **kwargs):
albumID = self.kwargs.get('album_id')
userID = self.kwargs.get(self.lookup_url_kwarg)
return Response(self.serializer_class.delete(albumID, userID))
class CommentRatingViewSet(
mixins.ListModelMixin,
@ -68,12 +76,21 @@ class CommentRatingViewSet(
serializer_class = CommentRatingSerializer
lookup_url_kwarg = 'user_id'
def get(self, request, *args, **kwargs):
return Response("elo")
def list(self, request, *args, **kwargs):
albumID = self.kwargs.get('album_id')
serializer = self.serializer_class.get_default(albumID)
return Response(serializer)
def post(self, request, *args, **kwargs):
return Response("elo")
def create(self, request, *args, **kwargs):
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):
return Response("elo")
def destroy(self, request, *args, **kwargs):
albumID = self.kwargs.get('album_id')
userID = self.kwargs.get(self.lookup_url_kwarg)
return Response(self.serializer_class.delete(albumID, userID))