fix news again...

This commit is contained in:
Kuroshini 2020-01-28 14:58:41 +03:00
parent baeb7e5b93
commit 4c7088abbc

View File

@ -379,29 +379,29 @@ class NewsBackOfficeDetailSerializer(NewsBackOfficeBaseSerializer,
'duplicates', 'duplicates',
) )
def validate(self, attrs): def validate(self, attrs):
"""Overridden validate method.""" """Overridden validate method."""
if 'descriptions' in attrs: if 'descriptions' in attrs:
descriptions = attrs.pop('descriptions') descriptions = attrs.pop('descriptions')
locales = list(map(lambda x: x['locale'], descriptions)) locales = list(map(lambda x: x['locale'], descriptions))
status_to_bool = { status_to_bool = {
'active': True, 'active': True,
'inactive': False, 'inactive': False,
} }
attrs['slugs'] = {obj['locale']: obj['slug'] for obj in descriptions if 'slug' in obj} attrs['slugs'] = {obj['locale']: obj['slug'] for obj in descriptions if 'slug' in obj}
attrs['title'] = {obj['locale']: obj['title'] for obj in descriptions if 'title' in obj} attrs['title'] = {obj['locale']: obj['title'] for obj in descriptions if 'title' in obj}
attrs['locale_to_description_is_active'] = { attrs['locale_to_description_is_active'] = {
obj['locale']: status_to_bool[obj['status']] for obj in descriptions obj['locale']: status_to_bool[obj['status']] for obj in descriptions
} }
attrs['description'] = {obj['locale']: obj['text'] for obj in descriptions if 'text' in obj} attrs['description'] = {obj['locale']: obj['text'] for obj in descriptions if 'text' in obj}
if self.context['request'].method == 'PATCH': if self.context['request'].method == 'PATCH':
instance = models.News.objects.get(pk=self.context['request'].data['id']) instance = models.News.objects.get(pk=self.context['request'].data['id'])
for key in ['slugs', 'title', 'locale_to_description_is_active', 'description']: for key in ['slugs', 'title', 'locale_to_description_is_active', 'description']:
for locale in locales: for locale in locales:
if not attrs[key].get(locale): if not attrs[key].get(locale):
attrs[key][locale] = getattr(instance, key).get(locale) attrs[key][locale] = getattr(instance, key).get(locale)
return attrs return attrs
class NewsBackOfficeGallerySerializer(serializers.ModelSerializer): class NewsBackOfficeGallerySerializer(serializers.ModelSerializer):