kwork-poizonstore/poizonstore/utils.py

29 lines
1.0 KiB
Python

from functools import reduce
from django.conf import settings
from django_filters import DateFromToRangeFilter as _DateFromToRangeFilter
from rest_framework.fields import DecimalField
from rest_framework.routers import SimpleRouter, DefaultRouter
class PriceField(DecimalField):
def __init__(self, *args, max_digits=10, decimal_places=2, min_value=0, **kwargs):
super().__init__(*args, max_digits=max_digits, decimal_places=decimal_places, min_value=min_value, **kwargs)
def deep_get(dictionary, *keys, default=None):
"""Get value from a nested dictionary (JSON)"""
return reduce(lambda d, key: d.get(key, None) if isinstance(d, dict) else default, keys, dictionary)
class DateFromToRangeFilter(_DateFromToRangeFilter):
""" DateFromToRangeFilter with replaced after/before suffixes to from/to """
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.field.widget.suffixes = ['from', 'to']
def get_drf_router():
return DefaultRouter() if settings.DEBUG else SimpleRouter()