From 43326a96b423984082085319a8cbf293bfad5401 Mon Sep 17 00:00:00 2001 From: Leandro Roberto Date: Tue, 11 Sep 2018 08:24:13 -0300 Subject: [PATCH] add last global time refresh --- sapl/api/urls.py | 4 +++- sapl/api/views.py | 14 +++++++++++++- sapl/rules/apps.py | 10 ++++++++++ 3 files changed, 26 insertions(+), 2 deletions(-) diff --git a/sapl/api/urls.py b/sapl/api/urls.py index 7a747a995..e2ba3ccfa 100644 --- a/sapl/api/urls.py +++ b/sapl/api/urls.py @@ -5,7 +5,7 @@ from rest_framework.routers import DefaultRouter import sapl.api.base.urls import sapl.api.materia.urls import sapl.api.sessao.urls -from sapl.api.views import ModelChoiceView +from sapl.api.views import ModelChoiceView, TimeRefreshDatabaseView from .apps import AppConfig @@ -22,6 +22,8 @@ urlpatterns_router = router.urls urlpatterns_api = [ url(r'^model/(?P\d+)/(?P\d*)$', ModelChoiceView.as_view(), name='model_list'), + url(r'time_refresh$', + TimeRefreshDatabaseView.as_view(), name="time_refresh") ] if settings.DEBUG: diff --git a/sapl/api/views.py b/sapl/api/views.py index d99ffcacb..4b1a151f0 100644 --- a/sapl/api/views.py +++ b/sapl/api/views.py @@ -1,8 +1,12 @@ +from django.apps import apps from django.contrib.contenttypes.models import ContentType from rest_framework.generics import ListAPIView -from rest_framework.permissions import (IsAuthenticated) +from rest_framework.permissions import (IsAuthenticated, AllowAny) +from rest_framework.response import Response +from rest_framework.views import APIView from sapl.api.serializers import ModelChoiceSerializer +from sapl.rules.apps import AppConfig class ModelChoiceView(ListAPIView): @@ -24,3 +28,11 @@ class ModelChoiceView(ListAPIView): def get_queryset(self): return self.model.objects.all() + + +class TimeRefreshDatabaseView(APIView): + + permission_classes = (AllowAny,) + + def get(self, request, *args, **kwargs): + return Response({'last_global_refresh_time': apps.get_app_config('rules').time_refresh}) diff --git a/sapl/rules/apps.py b/sapl/rules/apps.py index dbdfce8ce..994c2b887 100644 --- a/sapl/rules/apps.py +++ b/sapl/rules/apps.py @@ -6,7 +6,10 @@ from django.contrib.auth import get_user_model from django.contrib.auth.management import _get_all_permissions from django.core import exceptions from django.db import models, router +from django.db.models.signals import post_save, post_delete from django.db.utils import DEFAULT_DB_ALIAS +from django.dispatch.dispatcher import receiver +from django.utils import timezone from django.utils.translation import string_concat from django.utils.translation import ugettext_lazy as _ import reversion @@ -21,6 +24,7 @@ class AppConfig(django.apps.AppConfig): name = 'sapl.rules' label = 'rules' verbose_name = _('Regras de Acesso') + time_refresh = timezone.now() def create_proxy_permissions( @@ -254,3 +258,9 @@ models.signals.post_migrate.connect( models.signals.pre_delete.connect( receiver=revision_pre_delete_signal, dispatch_uid="pre_delete_signal") + + +@receiver([post_save, post_delete]) +def refresh_time_update_base(sender, instance, **kwargs): + rule_app = apps.get_app_config('rules') + rule_app.time_refresh = timezone.now()