Nested sitefeatures for new design

This commit is contained in:
Kuroshini 2019-10-16 14:11:07 +03:00
parent 19d23668e1
commit c1f89515c5
4 changed files with 30 additions and 3 deletions

View File

@ -0,0 +1,18 @@
# Generated by Django 2.2.4 on 2019-11-07 14:41
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('main', '0033_auto_20191106_0744'),
]
operations = [
migrations.AddField(
model_name='sitefeature',
name='nested',
field=models.ManyToManyField(to='main.SiteFeature'),
),
]

View File

@ -151,6 +151,7 @@ class SiteFeature(ProjectBaseMixin):
feature = models.ForeignKey(Feature, on_delete=models.PROTECT) feature = models.ForeignKey(Feature, on_delete=models.PROTECT)
published = models.BooleanField(default=False, verbose_name=_('Published')) published = models.BooleanField(default=False, verbose_name=_('Published'))
main = models.BooleanField(default=False, verbose_name=_('Main')) main = models.BooleanField(default=False, verbose_name=_('Main'))
nested = models.ManyToManyField('self', symmetrical=False)
objects = SiteFeatureQuerySet.as_manager() objects = SiteFeatureQuerySet.as_manager()

View File

@ -4,7 +4,7 @@ from rest_framework import serializers
from advertisement.serializers.web import AdvertisementSerializer from advertisement.serializers.web import AdvertisementSerializer
from location.serializers import CountrySerializer from location.serializers import CountrySerializer
from main import models from main import models
from utils.serializers import ProjectModelSerializer, TranslatedField from utils.serializers import ProjectModelSerializer, TranslatedField, RecursiveFieldSerializer
class FeatureSerializer(serializers.ModelSerializer): class FeatureSerializer(serializers.ModelSerializer):
@ -27,6 +27,7 @@ class SiteFeatureSerializer(serializers.ModelSerializer):
priority = serializers.IntegerField(source='feature.priority') priority = serializers.IntegerField(source='feature.priority')
route = serializers.CharField(source='feature.route.page_name') route = serializers.CharField(source='feature.route.page_name')
source = serializers.IntegerField(source='feature.source') source = serializers.IntegerField(source='feature.source')
nested = RecursiveFieldSerializer(many=True, allow_null=True)
class Meta: class Meta:
"""Meta class.""" """Meta class."""
@ -36,8 +37,9 @@ class SiteFeatureSerializer(serializers.ModelSerializer):
'slug', 'slug',
'priority', 'priority',
'route', 'route',
'source' 'source',
) 'nested',
)
class CurrencySerializer(ProjectModelSerializer): class CurrencySerializer(ProjectModelSerializer):

View File

@ -98,3 +98,9 @@ class FavoritesCreateSerializer(serializers.ModelSerializer):
@property @property
def slug(self): def slug(self):
return self.request.parser_context.get('kwargs').get('slug') return self.request.parser_context.get('kwargs').get('slug')
class RecursiveFieldSerializer(serializers.Serializer):
def to_representation(self, value):
serializer = self.parent.parent.__class__(value, context=self.context)
return serializer.data