Feature/currency sign

This commit is contained in:
Semyon Yekhmenin 2019-10-23 11:58:33 +00:00 committed by d.kuzmenko
parent 883f94c80a
commit 81bd7b4912
3 changed files with 68 additions and 23 deletions

View File

@ -0,0 +1,37 @@
# Generated by Django 2.2.4 on 2019-10-23 11:13
from django.db import migrations, models
import django.db.models.deletion
import utils.models
class Migration(migrations.Migration):
dependencies = [
('main', '0021_auto_20191023_0924'),
]
operations = [
migrations.AddField(
model_name='currency',
name='sign',
field=models.CharField(default='?', max_length=1, verbose_name='sign'),
preserve_default=False,
),
migrations.AddField(
model_name='currency',
name='slug',
field=models.SlugField(default='?', max_length=255, unique=True),
preserve_default=False,
),
migrations.AddField(
model_name='sitesettings',
name='currency',
field=models.ForeignKey(default=None, null=True, on_delete=django.db.models.deletion.PROTECT, to='main.Currency'),
),
migrations.AlterField(
model_name='currency',
name='name',
field=utils.models.TJSONField(blank=True, default=None, help_text='{"en-GB":"some text"}', null=True, verbose_name='name'),
),
]

View File

@ -106,6 +106,22 @@ from utils.querysets import ContentTypeQuerySetMixin
#
class Currency(models.Model, TranslatedFieldsMixin):
"""Currency model."""
name = TJSONField(
_('name'), null=True, blank=True,
default=None, help_text='{"en-GB":"some text"}')
sign = models.CharField(_('sign'), max_length=1)
slug = models.SlugField(max_length=255, unique=True)
class Meta:
verbose_name = _('currency')
verbose_name_plural = _('currencies')
def __str__(self):
return f'{self.name}'
class SiteSettingsQuerySet(models.QuerySet):
"""Extended queryset for SiteSettings model."""
@ -135,6 +151,7 @@ class SiteSettings(ProjectBaseMixin):
verbose_name=_('Config'))
ad_config = models.TextField(blank=True, null=True, default=None,
verbose_name=_('AD config'))
currency = models.ForeignKey(Currency, on_delete=models.PROTECT, null=True, default=None)
objects = SiteSettingsQuerySet.as_manager()
@ -257,18 +274,6 @@ class AwardType(models.Model):
return self.name
class Currency(models.Model):
"""Currency model."""
name = models.CharField(_('name'), max_length=50)
class Meta:
verbose_name = _('currency')
verbose_name_plural = _('currencies')
def __str__(self):
return f'{self.name}'
class CarouselQuerySet(models.QuerySet):
"""Carousel QuerySet."""

View File

@ -40,11 +40,24 @@ class SiteFeatureSerializer(serializers.ModelSerializer):
)
class CurrencySerializer(serializers.ModelSerializer):
"""Currency serializer"""
class Meta:
model = models.Currency
fields = [
'id',
'name_translated',
'sign'
]
class SiteSettingsSerializer(serializers.ModelSerializer):
"""Site settings serializer."""
published_features = SiteFeatureSerializer(source='published_sitefeatures',
many=True, allow_null=True)
currency = CurrencySerializer()
# todo: remove this
country_code = serializers.CharField(source='subdomain', read_only=True)
@ -63,6 +76,7 @@ class SiteSettingsSerializer(serializers.ModelSerializer):
'config',
'ad_config',
'published_features',
'currency'
)
@ -114,17 +128,6 @@ class AwardSerializer(AwardBaseSerializer):
fields = AwardBaseSerializer.Meta.fields + ['award_type', ]
class CurrencySerializer(serializers.ModelSerializer):
"""Currency serializer"""
class Meta:
model = models.Currency
fields = [
'id',
'name'
]
class CarouselListSerializer(serializers.ModelSerializer):
"""Serializer for retrieving list of carousel items."""
model_name = serializers.CharField()