# -*- coding: utf-8 -*- # # coding: utf-8 from django.contrib.auth.mixins import UserPassesTestMixin from django.utils import timezone __all__ = ["DatetimeSearchMixin", "PermissionsMixin"] from rest_framework import permissions class DatetimeSearchMixin: date_format = '%Y-%m-%d' date_from = date_to = None def get_date_range(self): date_from_s = self.request.GET.get('date_from') date_to_s = self.request.GET.get('date_to') if date_from_s: date_from = timezone.datetime.strptime(date_from_s, self.date_format) tz = timezone.get_current_timezone() self.date_from = tz.localize(date_from) else: self.date_from = timezone.now() - timezone.timedelta(7) if date_to_s: date_to = timezone.datetime.strptime( date_to_s + ' 23:59:59', self.date_format + ' %H:%M:%S' ) self.date_to = date_to.replace( tzinfo=timezone.get_current_timezone() ) else: self.date_to = timezone.now() def get(self, request, *args, **kwargs): self.get_date_range() return super().get(request, *args, **kwargs) class PermissionsMixin(UserPassesTestMixin): permission_classes = [permissions.IsAuthenticated] def get_permissions(self): return self.permission_classes def test_func(self): permission_classes = self.get_permissions() for permission_class in permission_classes: if not permission_class().has_permission(self.request, self): return False return True