From 92e5f7a40ba5d216a82e0767f7b3f362904cb397 Mon Sep 17 00:00:00 2001 From: alex Date: Tue, 24 Dec 2019 13:40:27 +0300 Subject: [PATCH] signals for text field --- apps/review/admin.py | 10 ++-------- apps/review/models.py | 28 ++++++++++++++++++++++++++++ 2 files changed, 30 insertions(+), 8 deletions(-) diff --git a/apps/review/admin.py b/apps/review/admin.py index 5b8e3b01..3e5ee4a2 100644 --- a/apps/review/admin.py +++ b/apps/review/admin.py @@ -1,13 +1,8 @@ """Admin page for app Review""" -from . import models from django.contrib import admin + from utils.admin import BaseModelAdminMixin - - -class ReviewTextAuthorInline(admin.TabularInline): - """ReviewTextAuthor inline.""" - model = models.ReviewTextAuthor - extra = 0 +from . import models @admin.register(models.Review) @@ -15,7 +10,6 @@ class ReviewAdminModel(BaseModelAdminMixin, admin.ModelAdmin): """Admin model for model Review.""" raw_id_fields = ('reviewer', 'child', 'country') - inlines = [ReviewTextAuthorInline, ] @admin.register(models.ReviewTextAuthor) diff --git a/apps/review/models.py b/apps/review/models.py index 79f964a4..b412b305 100644 --- a/apps/review/models.py +++ b/apps/review/models.py @@ -1,7 +1,11 @@ """Review app models.""" +from pprint import pprint + from django.contrib.contenttypes import fields as generic from django.core.validators import MinValueValidator, MaxValueValidator from django.db import models +from django.db.models.signals import post_init, post_save +from django.dispatch import receiver from django.utils.translation import gettext_lazy as _ from utils.models import (BaseAttributes, TranslatedFieldsMixin, @@ -93,6 +97,30 @@ class Review(BaseAttributes, TranslatedFieldsMixin): verbose_name_plural = _('Reviews') +@receiver(signal=post_init, sender=Review) +def post_init_handler(instance, **kwargs): + instance.original_text = instance.text + + +@receiver(signal=post_save, sender=Review) +def post_save_handler(instance, **kwargs): + new_text = instance.text + old_text = instance.original_text + if new_text != old_text: + for locale in new_text: + if locale in old_text: + pass + else: + # TODO: для добавленной локали создать запись в ReviewTextAuthor + pass + + # TODO: для измененной локали создать или обновить запись в ReviewTextAuthor + # TODO: для удаленной локали удалить соответствующую запись в ReviewTextAuthor + + pprint(instance.text) + pprint(instance.original_text) + + class ReviewTextAuthor(ProjectBaseMixin): author = models.ForeignKey( 'account.User',