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()
|
||||
country = models.ForeignKey(Country, verbose_name=_('Country'),
|
||||
on_delete=models.SET_NULL, null=True)
|
||||
old_id = models.IntegerField(null=True, blank=True, default=None)
|
||||
|
||||
|
||||
class Meta:
|
||||
"""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