From a9026dad78ada17e10d69d347377d20f89e1b824 Mon Sep 17 00:00:00 2001 From: Paul Marillonnet Date: Tue, 27 Nov 2018 17:51:40 +0100 Subject: [PATCH 2/2] WIP add timewindow filter for profile journal (#20695) --- src/authentic2/forms/__init__.py | 6 ++++++ .../authentic2/user_profile_journal.html | 5 +++++ src/authentic2/views.py | 18 ++++++++++++++++-- 3 files changed, 27 insertions(+), 2 deletions(-) diff --git a/src/authentic2/forms/__init__.py b/src/authentic2/forms/__init__.py index ee887e14..9d8a4434 100644 --- a/src/authentic2/forms/__init__.py +++ b/src/authentic2/forms/__init__.py @@ -8,6 +8,7 @@ from django.utils import html from authentic2.compat import get_user_model from authentic2.forms.fields import PasswordField +from authentic2.forms.widgets import DateTimeWidget from .. import app_settings from ..exponential_retry_timeout import ExponentialRetryTimeout @@ -220,3 +221,8 @@ class AuthenticationForm(auth_forms.AuthenticationForm): class SiteImportForm(forms.Form): site_json = forms.FileField(label=_('Site Export File')) + + +class EventTimewindowForm(forms.Form): + after = forms.DateTimeField(label=_('After'), widget=DateTimeWidget) + before = forms.DateTimeField(label=_('Before'), widget=DateTimeWidget) diff --git a/src/authentic2/templates/authentic2/user_profile_journal.html b/src/authentic2/templates/authentic2/user_profile_journal.html index 6b23cb04..06a8bbbc 100644 --- a/src/authentic2/templates/authentic2/user_profile_journal.html +++ b/src/authentic2/templates/authentic2/user_profile_journal.html @@ -11,4 +11,9 @@
  • {% trans "No journal entry yet." %}
  • {% endfor %} +
    + {% csrf_token %} + {{ form }} + +
    {% endblock %} diff --git a/src/authentic2/views.py b/src/authentic2/views.py index 9d55b277..e66dbdeb 100644 --- a/src/authentic2/views.py +++ b/src/authentic2/views.py @@ -7,6 +7,7 @@ import re import collections +from datetime import datetime from django.conf import settings from django.shortcuts import render_to_response, render from django.template.loader import render_to_string, select_template @@ -616,13 +617,26 @@ class LoggedInView(View): logged_in = never_cache(LoggedInView.as_view()) -class UserProfileJournal(ListView): +class UserProfileJournal(ListView, FormView): model = Reference + form_class = forms.EventTimewindowForm def get_queryset(self): + timewindow = {} + for qs_param, qs_suffix in {'after': 'gte', 'before': 'lte'}.items(): + delimiter = self.request.GET.get(qs_param) + if delimiter: + try: + dt = datetime.strptime(delimiter, '%d/%m/%Y %H:%M:%S') + except: + logger.info('UserProfileJournal wrong %s timestamp query ' + 'string parameter: %s' % (qs_param, delimiter)) + else: + timewindow.update({'timestamp__%s' % qs_suffix: dt}) return self.model.objects.filter( target_id=self.request.user.pk, - target_ct=ContentType.objects.get_for_model(get_user_model())) + target_ct=ContentType.objects.get_for_model(get_user_model()), + **timewindow) def get_template_names(self): return [ -- 2.20.0.rc1