from functools import reduce
from datetime import datetime
from rest_framework import mixins
from rest_framework.viewsets import GenericViewSet
from django.utils import timezone
from calendar import monthrange

def beginning_of_month(year, month):
    tz = timezone.get_current_timezone()
    return datetime(year=year, month=month, day=1, tzinfo=tz)

def end_of_month(year, month):
    (_, days) = monthrange(year, month)
    tz = timezone.get_current_timezone()
    return datetime(year=year, month=month, day=days,
            hour=23, minute=59, second=59, tzinfo=tz)

class ProductViewSet(mixins.CreateModelMixin,
                     mixins.RetrieveModelMixin,
                     mixins.ListModelMixin,
                     GenericViewSet):
    """
    A customer-facing viewset that provides default `create()`, `retrieve()`
    and `list()`.
    """
    pass