Nested sitefeatures for new design
This commit is contained in:
parent
19d23668e1
commit
c1f89515c5
18
apps/main/migrations/0034_sitefeature_nested.py
Normal file
18
apps/main/migrations/0034_sitefeature_nested.py
Normal 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'),
|
||||||
|
),
|
||||||
|
]
|
||||||
|
|
@ -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()
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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):
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user