Add comment serializer
This commit is contained in:
parent
5984fdc7cd
commit
9310bff319
18
apps/comment/migrations/0004_comment_old_id.py
Normal file
18
apps/comment/migrations/0004_comment_old_id.py
Normal file
|
|
@ -0,0 +1,18 @@
|
||||||
|
# Generated by Django 2.2.4 on 2019-10-29 12:58
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('comment', '0003_auto_20191015_0704'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='comment',
|
||||||
|
name='old_id',
|
||||||
|
field=models.IntegerField(blank=True, default=None, null=True),
|
||||||
|
),
|
||||||
|
]
|
||||||
|
|
@ -45,6 +45,8 @@ class Comment(ProjectBaseMixin):
|
||||||
objects = CommentQuerySet.as_manager()
|
objects = CommentQuerySet.as_manager()
|
||||||
country = models.ForeignKey(Country, verbose_name=_('Country'),
|
country = models.ForeignKey(Country, verbose_name=_('Country'),
|
||||||
on_delete=models.SET_NULL, null=True)
|
on_delete=models.SET_NULL, null=True)
|
||||||
|
old_id = models.IntegerField(null=True, blank=True, default=None)
|
||||||
|
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
"""Meta class"""
|
"""Meta class"""
|
||||||
|
|
|
||||||
22
apps/comment/transfer_data.py
Normal file
22
apps/comment/transfer_data.py
Normal file
|
|
@ -0,0 +1,22 @@
|
||||||
|
from django.db.models import F
|
||||||
|
from pprint import pprint
|
||||||
|
from transfer.models import Comments, Accounts, Establishments
|
||||||
|
from transfer.serializers.comments import CommentSerializer
|
||||||
|
|
||||||
|
|
||||||
|
def transfer_comments():
|
||||||
|
queryset = Comments.objects.filter(account__isnull=False, mark__isnull=False)\
|
||||||
|
.only("id", "comment", "mark", "locale", "establishment_id", "account_id")
|
||||||
|
|
||||||
|
serialized_data = CommentSerializer(data=list(queryset.values()), many=True)
|
||||||
|
if serialized_data.is_valid():
|
||||||
|
serialized_data.save()
|
||||||
|
else:
|
||||||
|
pprint(serialized_data.errors)
|
||||||
|
|
||||||
|
|
||||||
|
data_types = {
|
||||||
|
"tmp": [
|
||||||
|
transfer_comments
|
||||||
|
]
|
||||||
|
}
|
||||||
64
apps/transfer/serializers/comments.py
Normal file
64
apps/transfer/serializers/comments.py
Normal file
|
|
@ -0,0 +1,64 @@
|
||||||
|
from rest_framework import serializers
|
||||||
|
from comment.models import Comment, User
|
||||||
|
from establishment.models import Establishment
|
||||||
|
|
||||||
|
|
||||||
|
class CommentSerializer(serializers.ModelSerializer):
|
||||||
|
id = serializers.IntegerField()
|
||||||
|
comment = serializers.CharField()
|
||||||
|
mark = serializers.DecimalField(max_digits=4, decimal_places=2)
|
||||||
|
locale = serializers.CharField()
|
||||||
|
account_id = serializers.IntegerField()
|
||||||
|
establishment_id = serializers.CharField()
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
model = Comment
|
||||||
|
fields = (
|
||||||
|
"id",
|
||||||
|
"comment",
|
||||||
|
"mark",
|
||||||
|
"locale",
|
||||||
|
"account_id",
|
||||||
|
"establishment_id"
|
||||||
|
)
|
||||||
|
|
||||||
|
def validate(self, data):
|
||||||
|
data = self.set_old_id(data)
|
||||||
|
data = self.set_text(data)
|
||||||
|
data = self.set_mark(data)
|
||||||
|
data = self.set_establishment(data)
|
||||||
|
data = self.set_account(data)
|
||||||
|
return data
|
||||||
|
|
||||||
|
def set_text(self, data):
|
||||||
|
data['text'] = data.pop('comment')
|
||||||
|
return data
|
||||||
|
|
||||||
|
def set_mark(self, data):
|
||||||
|
if data['mark'] < 0:
|
||||||
|
data['mark'] = data['mark'] * -1
|
||||||
|
return data
|
||||||
|
|
||||||
|
def set_account(self, data):
|
||||||
|
try:
|
||||||
|
data['account'] = User.objects.filter(old_id=data['account_id']).first()
|
||||||
|
except User.DoesNotExist as e:
|
||||||
|
raise ValueError(f"User account not found with {data}: {e}")
|
||||||
|
|
||||||
|
del(data['account_id'])
|
||||||
|
|
||||||
|
return data
|
||||||
|
|
||||||
|
def set_establishment(self, data):
|
||||||
|
try:
|
||||||
|
data['establishment'] = Establishment.objects.filter(old_id=data['account_id']).first()
|
||||||
|
except Establishment.DoesNotExist as e:
|
||||||
|
raise ValueError(f"Establishment not found with {data}: {e}")
|
||||||
|
|
||||||
|
del(data['establishment_id'])
|
||||||
|
|
||||||
|
return data
|
||||||
|
|
||||||
|
def set_old_id(self, data):
|
||||||
|
data['old_id'] = data.pop("id")
|
||||||
|
return data
|
||||||
Loading…
Reference in New Issue
Block a user