From f33fa21c0c6f2c6a4874bf70598a28cbed83b269 Mon Sep 17 00:00:00 2001 From: evgeniy-st Date: Mon, 26 Aug 2019 18:12:15 +0300 Subject: [PATCH] update site feautures --- apps/main/migrations/0007_sitefeature_main.py | 18 ++++++++ apps/main/models.py | 5 +++ apps/main/serializers.py | 42 ++++++++++++------- 3 files changed, 50 insertions(+), 15 deletions(-) create mode 100644 apps/main/migrations/0007_sitefeature_main.py diff --git a/apps/main/migrations/0007_sitefeature_main.py b/apps/main/migrations/0007_sitefeature_main.py new file mode 100644 index 00000000..a16b98cb --- /dev/null +++ b/apps/main/migrations/0007_sitefeature_main.py @@ -0,0 +1,18 @@ +# Generated by Django 2.2.4 on 2019-08-26 14:47 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('main', '0006_auto_20190822_1118'), + ] + + operations = [ + migrations.AddField( + model_name='sitefeature', + name='main', + field=models.BooleanField(default=False, verbose_name='Main'), + ), + ] diff --git a/apps/main/models.py b/apps/main/models.py index 563dbd88..5b41d75b 100644 --- a/apps/main/models.py +++ b/apps/main/models.py @@ -133,6 +133,10 @@ class SiteSettings(ProjectBaseMixin): return self.feature_set.filter(sitefeature__site_settings=self, sitefeature__published=True) + @property + def published_sitefeatures(self): + return self.sitefeature_set.filter(published=True) + @property def site_url(self): return methods.site_url(schema=settings.SCHEMA_URI, @@ -168,6 +172,7 @@ class SiteFeature(ProjectBaseMixin): site_settings = models.ForeignKey(SiteSettings, on_delete=models.CASCADE) feature = models.ForeignKey(Feature, on_delete=models.PROTECT) published = models.BooleanField(default=False, verbose_name=_('Published')) + main = models.BooleanField(default=False, verbose_name=_('Main')) objects = SiteFeatureQuerySet.as_manager() diff --git a/apps/main/serializers.py b/apps/main/serializers.py index 708bc33c..7b55f6ac 100644 --- a/apps/main/serializers.py +++ b/apps/main/serializers.py @@ -16,11 +16,23 @@ class FeatureSerializer(serializers.ModelSerializer): ) +class SiteFeatureSerializer(serializers.ModelSerializer): + + id = serializers.IntegerField(source='feature.id') + slug = serializers.CharField(source='feature.slug') + + class Meta: + """Meta class.""" + model = models.SiteFeature + fields = ('main', + 'id', + 'slug') + + class SiteSettingsSerializer(serializers.ModelSerializer): """Site settings serializer.""" - published_features = FeatureSerializer(many=True, allow_null=None) - + published_features = SiteFeatureSerializer(many=True, allow_null=True) #todo: remove this country_code = serializers.CharField(source='subdomain', read_only=True) @@ -42,16 +54,16 @@ class SiteSettingsSerializer(serializers.ModelSerializer): ) -class SiteFeatureSerializer(serializers.ModelSerializer): - """Site feature serializer.""" - - class Meta: - """Meta class.""" - - model = models.SiteFeature - fields = ( - 'id', - 'published', - 'site_settings', - 'feature', - ) +# class SiteFeatureSerializer(serializers.ModelSerializer): +# """Site feature serializer.""" +# +# class Meta: +# """Meta class.""" +# +# model = models.SiteFeature +# fields = ( +# 'id', +# 'published', +# 'site_settings', +# 'feature', +# )