signals for text field

This commit is contained in:
alex 2019-12-24 13:40:27 +03:00
parent 069a2ad2a8
commit 92e5f7a40b
2 changed files with 30 additions and 8 deletions

View File

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

View File

@ -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',