From aa88721800bb9587080784c08a32c70a50c1d803 Mon Sep 17 00:00:00 2001 From: evgeniy-st Date: Wed, 4 Sep 2019 10:14:11 +0300 Subject: [PATCH] sites endpoint --- apps/establishment/serializers.py | 2 ++ .../migrations/0010_auto_20190904_0711.py | 19 ++++++++++++++++++ apps/location/models.py | 20 ++++++------------- apps/main/models.py | 9 +++++++++ apps/main/serializers.py | 11 ++++++++++ apps/main/urls.py | 1 + apps/main/views.py | 10 +++++++++- 7 files changed, 57 insertions(+), 15 deletions(-) create mode 100644 apps/location/migrations/0010_auto_20190904_0711.py diff --git a/apps/establishment/serializers.py b/apps/establishment/serializers.py index e5b092c6..ec4fb43e 100644 --- a/apps/establishment/serializers.py +++ b/apps/establishment/serializers.py @@ -27,6 +27,8 @@ class ContactEmailsSerializer(serializers.ModelSerializer): class PlateSerializer(serializers.ModelSerializer): + + name_translated = serializers.CharField(allow_null=True) currency = CurrencySerializer(read_only=True) class Meta: diff --git a/apps/location/migrations/0010_auto_20190904_0711.py b/apps/location/migrations/0010_auto_20190904_0711.py new file mode 100644 index 00000000..919aab72 --- /dev/null +++ b/apps/location/migrations/0010_auto_20190904_0711.py @@ -0,0 +1,19 @@ +# Generated by Django 2.2.4 on 2019-09-04 07:11 + +from django.db import migrations +import utils.models + + +class Migration(migrations.Migration): + + dependencies = [ + ('location', '0009_auto_20190901_0831'), + ] + + operations = [ + migrations.AlterField( + model_name='country', + name='name', + field=utils.models.TJSONField(blank=True, default=None, help_text='{"en-GB":"some text"}', null=True, verbose_name='Name'), + ), + ] diff --git a/apps/location/models.py b/apps/location/models.py index 613cc013..7d7cd8a2 100644 --- a/apps/location/models.py +++ b/apps/location/models.py @@ -1,38 +1,30 @@ """Location app models.""" from django.conf import settings from django.contrib.gis.db import models -from django.contrib.postgres.fields import JSONField from django.db.models.signals import post_save from django.db.transaction import on_commit from django.dispatch import receiver from django.utils.translation import gettext_lazy as _ -from utils.models import ProjectBaseMixin, LocaleManagerMixin, SVGImageMixin +from utils.models import ProjectBaseMixin, SVGImageMixin, TranslatedFieldsMixin, TJSONField -class CountryManager(LocaleManagerMixin): - """Extended manager for Country model.""" - - -class Country(SVGImageMixin, ProjectBaseMixin): +class Country(TranslatedFieldsMixin, SVGImageMixin, ProjectBaseMixin): """Country model.""" - name = JSONField(null=True, blank=True, default=None, - verbose_name=_('Name'), help_text='{"en-GB":"some text"}') + STR_FIELD_NAME = 'name' + + name = TJSONField(null=True, blank=True, default=None, + verbose_name=_('Name'), help_text='{"en-GB":"some text"}') code = models.CharField(max_length=255, unique=True, verbose_name=_('Code')) low_price = models.IntegerField(default=25, verbose_name=_('Low price')) high_price = models.IntegerField(default=50, verbose_name=_('High price')) - objects = CountryManager() - class Meta: """Meta class.""" verbose_name_plural = _('Countries') verbose_name = _('Country') - def __str__(self): - return self.code or str(self.id) - class Region(models.Model): """Region model.""" diff --git a/apps/main/models.py b/apps/main/models.py index 75139e95..3fdd5fed 100644 --- a/apps/main/models.py +++ b/apps/main/models.py @@ -96,6 +96,13 @@ from configuration.models import TranslationSettings # +class SiteSettingsQuerySet(models.QuerySet): + """Extended queryset for SiteSettings model.""" + + def with_country(self): + return self.filter(country__isnull=False) + + class SiteSettings(ProjectBaseMixin): subdomain = models.CharField(max_length=255, db_index=True, unique=True, @@ -120,6 +127,8 @@ class SiteSettings(ProjectBaseMixin): ad_config = models.TextField(blank=True, null=True, default=None, verbose_name=_('AD config')) + objects = SiteSettingsQuerySet.as_manager() + class Meta: """Meta class.""" diff --git a/apps/main/serializers.py b/apps/main/serializers.py index 0348026c..2d134779 100644 --- a/apps/main/serializers.py +++ b/apps/main/serializers.py @@ -56,6 +56,17 @@ class SiteSettingsSerializer(serializers.ModelSerializer): ) +class SiteSerializer(serializers.ModelSerializer): + + country_name = serializers.CharField(source='country.name_translated', allow_null=True) + + class Meta: + """Meta class.""" + + model = models.SiteSettings + fields = ('subdomain', 'site_url', 'country_name', ) + + # class SiteFeatureSerializer(serializers.ModelSerializer): # """Site feature serializer.""" # diff --git a/apps/main/urls.py b/apps/main/urls.py index 6d8cd1e4..b848352f 100644 --- a/apps/main/urls.py +++ b/apps/main/urls.py @@ -6,6 +6,7 @@ app = 'main' urlpatterns = [ path('determine-site/', views.DetermineSiteView.as_view(), name='determine-site'), + path('sites/', views.SiteListView.as_view(), name='site-list'), path('site-settings//', views.SiteSettingsView.as_view(), name='site-settings'), path('awards/', views.AwardView.as_view(), name='awards_list'), path('awards//', views.AwardRetrieveView.as_view(), name='awards_retrieve'), diff --git a/apps/main/views.py b/apps/main/views.py index db8f7833..a4696f16 100644 --- a/apps/main/views.py +++ b/apps/main/views.py @@ -25,7 +25,15 @@ class SiteSettingsView(generics.RetrieveAPIView): permission_classes = (permissions.AllowAny,) queryset = models.SiteSettings.objects.all() serializer_class = serializers.SiteSettingsSerializer -# + + +class SiteListView(generics.ListAPIView): + """Site settings View.""" + + pagination_class = None + permission_classes = (permissions.AllowAny,) + queryset = models.SiteSettings.objects.with_country() + serializer_class = serializers.SiteSerializer # # class FeatureViewMixin: # """Feature view mixin."""